Maison  >  Questions et réponses  >  le corps du texte

Comment supprimer des lignes à l'aide de cases à cocher en php et mysql

<p>J'ai créé un tableau avec les informations de la base de données et j'ai essayé de créer des cases à cocher pour pouvoir supprimer des lignes plus facilement, mais quelque chose ne fonctionne pas. </p> <p>J'ai un bouton avec un formulaire : </p> <pre class="brush:php;toolbar:false;"><form action="delete-register.php" method="post"> <type de bouton="bouton" class="btn btn-primary"><span class="fe fe-file-plus fe-12 mr-2"></span>Nouveau</ bouton> <type de bouton="soumettre" nom="supprimer" classe="btn btn-secondaire"><span class="fe fe-trash fe-12 mr-2"></span> ;Supprimer</bouton> </form></pre> <p>J'ai des lignes avec des cases à cocher : </p> <pre class="brush:php;toolbar:false;"><form action="delete-register.php" method="post"> <td> <div class="custom-control custom-checkbox"> <type d'entrée="case à cocher" class="entrée de contrôle personnalisée" id="<?php echo $row['id'] ?" nom="sélectionné[]" value="<?php echo $row['id'] ?>"> <classe d'étiquette="étiquette-de-contrôle-personnalisée" pour="<?php echo $row['id'] ?"></label> </div> </td> </form></pre> <p>Également delete-register.php : </p> <pre class="brush:php;toolbar:false;">if (isset($_POST['delete'])) { if (isset($_POST['selected'])) { foreach ($_POST['selected'] comme $id) { $query = "DELETE FROM enregistre WHERE id = $id"; mysqli_query($conn, $query); } header('Emplacement : registres.php'); sortie; } }</pré> <p>Le problème est que "sélectionné" est toujours vide, donc rien n'est supprimé de la base de données. Comment puis-je résoudre ce problème? </p>
P粉982009874P粉982009874436 Il y a quelques jours557

répondre à tous(1)je répondrai

  • P粉006540600

    P粉0065406002023-09-02 18:45:55

    Veuillez noter que les données soumises entreront dans le cadre de <form>....</form>

    Puisque vous disposez de deux formulaires, lorsque vous cliquez sur le bouton Soumettre dans le premier formulaire, les données du deuxième formulaire ne seront pas envoyées au serveur.

    Alors changez le deuxième formulaire par :

    <form action="delete-register.php" method="post">
    
          <div class="custom-control custom-checkbox">
           <input type="checkbox" class="custom-control-input" id="<?php echo $row['id']; ?>" name="selected[]" value="<?php echo $row['id']; ?>">
           <label class="custom-control-label" for="<?php echo $row['id']; ?>"></label>
         </div>
    
    <input type=submit name=delete>
    
    </form>

    [Explication supplémentaire]

    Si vous souhaitez vous en tenir au premier formulaire pour déclencher la suppression alors merci :

    1. Dans le premier formulaire, remplacez la suppression de « Soumettre » par « Bouton »
    2. Ajoutez un événement onclick à ce bouton de suppression afin qu'il déclenche la soumission du deuxième formulaire
    3. Assurez-vous qu'il y a un champ caché nommé "supprimer" dans le deuxième formulaire puisque vous avez spécifié d'inclure ce champ dans le script PHP
    4. vous avez peut-être remarqué que j'ai ajouté id=form2 dans le 2ème formulaire afin de faciliter le déclenchement de la soumission par form1

    Voici le code modifié :

    <form method="post">
       <button type="button" class="btn btn-primary"><span class="fe fe-file-plus fe-12 mr-2"></span>New</button>
    
       <button type="button" name="delete" class="btn btn-secondary"
    onclick='document.getElementById("form2").submit()';
       ><span class="fe fe-trash fe-12 mr-2"></span>Delete</button>
    
    </form>
    
    
    
    <form id=form2 action="delete-register.php" method="post">
    
       <div class="custom-control custom-checkbox">
           <input type="checkbox" class="custom-control-input" id="<?php echo $row['id']; ?>" name="selected[]" value="<?php echo $row['id']; ?>">
           <label class="custom-control-label" for="<?php echo $row['id']; ?>"></label>
         </div>
    
    <input type=hidden name=delete value="delete">
    
    </form>

    répondre
    0
  • Annulerrépondre