2016-07-27 8 views
2

Also habe ich mir ein paar Ressourcen angesehen, um mehrere Checkboxen als Eingabe zu verwenden. Ich baue ein PM-System und möchte, dass der Benutzer jede Nachricht abhaken und sie dann mit einer Schaltfläche löschen kann.Wie lösche man mehrere Einträge mit Checkboxen? (PHP)

Das Problem ist, dass, wenn ich eine Nachricht abhaken (e):

A: Sie haben zweimal auf die Schaltfläche Löschen klicken.

B: Nur die erste Nachricht in der Liste wird jemals gelöscht.

Die Tastengruppe:

<form method="post" 
    <div class="button-group"> 
     <button type="submit" name="delete" class="delete button inbox">Delete</button> 
     <button type="submit" name="mark" class="mark button inbox">Mark as Read</button> 
    </div> 

Später auf den Tabellenzeilen:

<?php 
    while ($row = mysqli_fetch_array($result)){?> 
     <tr> 
      <td><?php echo $row['PM_User1ID'];?></td> 
      <td><?php echo $row['PM_User2ID'];?></td> 
      <td><?php echo $row['PM_Subject'];?></td> 
      <td><?php echo $row['PM_Timestamp'];?></td> 
      <td> 
       <label> 
        <input type="checkbox" name="check_list[]" value="<?php echo $row['PMID'];?>"><?php echo $row['PMID'];?> 
       </label> 
       </form> 
      </td> 
      <?php echo '<td><a name="'.$row['PMID'].'"href = "?link='.$row['PMID'].'">Reply</a></td>'; ?> 
     </tr> 
    <?php } ?> 

Und schließlich das Senden Beitrag:

<?php 
     if (isset ($_POST['delete'])){ 

      if(!empty($_POST['check_list'])){ 

       foreach($_POST['check_list'] as $selected){ 

        $pmDelete = "DELETE FROM pm WHERE PMID = $selected"; 
        $deletePM = $con->query($pmDelete); 

       } 
      } 
     } 
    ?> 

PM Page

GIF of issue

+2

'

' dafür. –

+1

Sie sind anfällig für [sql injection attacks] (http://bobby-tables.com). Überlegen Sie, was passiert, wenn jemand 'PMID' als Wert zum Löschen übergibt - Boom geht an Ihren gesamten Tisch. –

+0

@MarcB Das merke ich, und ich untersuche es. –

Antwort

3

Wie sich herausstellt (aus dem Gespräch mit dem OP in Kommentaren), ist, dass die empty() Funktion für die Checkboxen isset() sein muss.

Dann wurde eine (Header-) Umleitung benötigt (nach erfolgreichem Löschen), um die (neuen) Ergebnisse anzuzeigen.

Referenzen:

Sie auch in mit einer vorbereiteten Erklärung aussehen sollte:


Fußnoten:

Wie ich auch sein Kind nicht von <table> und die fehlenden > für <form method="post" erwähnt, <form> kann die Verwüstung verursachen würde.

+0

Jetzt kann ich Abendessen machen ;-) –

Verwandte Themen