2 votes

La suppression d'un enregistrement sans rafraîchissement de la page dans codeigniter ne fonctionne pas

Bonjour à tous j'essaie de supprimer mon enregistrement de la table de données sans rafraîchir la page dans codeigniter j'ai utilisé ajax je ne sais pas où j'ai fait l'erreur il ne supprime pas l'enregistrement.

Voici mon point de vue :

    <tbody>
                        <?php
                        if (!empty($employees)) {
                            foreach ($employees as $emp) {
                                 ?>

                                <tr>
                                    <td><?php echo $emp->emp_name; ?></td>
                                    <td><?php echo $emp->salary; ?></td>
                                    <td class='text-center'>
                                    <button type="submit" class="btn btn-info btn-xs confirmation" name="login"><i class='fas fa-edit'></i></button>
                                    </td>

                                    <td class='text-center'>
                                     <button type="submit"  onClick="return ConfirmDelete()" class="btn btn-danger btn-xs confirmation empdelete" id="<?php echo $emp->id;?>"><i class='fas fa-times'></i></button>
                                     </td>
                               </tr>

                                <?php
                            }
                        }
                        ?>
                    </tbody>
    <script>
$(document).ready(function(){
$(".empdelete").click(function(e){
    alert();
   e.preventDefault(); 
    $.ajax({
      alert();
      type: "POST",
      url: "<?=site_url('Employee/delete');?>",
      cache: false,
      data: {id:$(this).attr("id")}, // since, you need to delete post of particular id
      success: function(data) {
         if (data){
            alert("Success");
         } else {
             alert("ERROR");
         }
         return false;

       }
   });
});
});
</script>

Voici mon contrôleur :

  function delete()  
  {
    $id = $this->input->post('id'); // get the post data
    $empdelete=$this->Emp_model->delete($id);
    if($empdelete){
        echo true;
    } else {
        echo false;
    }
 }

Voici la méthode de suppression de mon modèle :

function delete($id)
{ 
$sql  = "DELETE FROM employees WHERE id=?";
return $this->db->query($sql,array($id));

}

Je souhaite supprimer mon enregistrement, mais je n'ai pas besoin de rafraîchir la page pour le faire.

Merci d'avance.

1voto

Alex Points 448

Essayez ceci :

$(document).ready(function () {
        function ConfirmDelete() {
            var x = confirm("Are you sure you want to delete?");
            if (x)
                return true;
            else
                return false;
        }
        $(".empdelete").click(function (e) {
            var obj = $(this);
            e.preventDefault();
            //alert(); what's this do?
            if (ConfirmDelete() == false) {
                return false;
            }
            $.ajax({
                //alert(); this can't go here
                type: "POST",
                url: "<?php echo site_url('Employee/delete'); ?>",
                cache: false,
                data: {id: $(this).attr("id")},
                success: function (data) {
                    console.log('ajax returned: ');
                    console.log(data);
                    if (data) {
                        obj.closest('tr').remove();
                        alert("Success");
                    } else {
                        alert("ERROR");
                    }
                    return false;
                }
            });
        });
    });

et supprimer HTML onClick :

<button type="submit" class="btn btn-danger btn-xs confirmation empdelete" id="<?php echo $emp->id;?>"><i class='fas fa-times'></i></button>

1voto

pradeep Points 8174

J'espère que cela vous aidera :

Votre bouton devrait ressembler à ceci :

<button type="button"  onClick="return ConfirmDelete(this)" class="btn btn-danger btn-xs confirmation empdelete" data-id="<?=$emp->id;?>"><i class='fas fa-times'></i></button>

Votre code ajax devrait ressembler à ceci :

function ConfirmDelete(obj) 
{ 
  var x = confirm("Are you sure you want to delete?"); 
  if (x == true) 
  {
    var id = $(obj).data('id');
    alert(id);
    if (id != '')
    {
      //do you ajax here
        $.ajax({
          type: "POST",
          url: "<php echo site_url('Employee/delete'); ?>",
          cache: false,
          data: {'id': id},
          success: function (data) {
              console.log('ajax returned: ');
              console.log(data);
              if (data) {
                  alert("Success");
              } else {
                  alert("ERROR");
              }
              return false;
          }
      });
    }
  }
  else
  {
   return false;
  }
}

Votre contrôleur devrait ressembler à ceci :

function delete()  
{
    $id = $this->input->post('id'); // get the post data
    $empdelete = $this->Emp_model->delete($id);
    if($empdelete)
    {
        echo true;
    } else 
    {
        echo false;
    }
    exit;
}

Votre méthode de suppression doit être la suivante :

function delete($id)
{ 
    $this->db->where('id',$id);
    $this->db->delete('employees');
    return $this->db->affected_rows();
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X