2016-07-27 13 views
2

私は入力として複数のチェックボックスを使用する上でいくつかのリソースを見てきました。私はPMシステムを構築しており、ユーザーがメッセージをチェックアウトしてボタンで削除できるようにしたいと考えています。チェックボックスを使用して複数のエントリを削除するにはどうすればよいですか? (PHP)

A:あなたが二回削除ボタンをクリックする必要が

問題は、私は任意のメッセージ(複数可)をオフにチェックしたときにということです。

B:リスト内の最初のメッセージだけが削除されます。

ボタングループ:その後、テーブルの行に

<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> 

<?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 } ?> 

そして最後にポストを提出してください:

<?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

'

'を閉じていません。 –

+1

あなたは[SQLインジェクション攻撃](http://bobby-tables.com)に脆弱です。誰かが 'PMID'を削除する値として渡すと何が起こるか考えてみましょう。ブームはテーブル全体に行きます。 –

+0

@MarcB私はそれを理解し、私はそれを調べています。 –

答えて

3

チェックボックスのempty()機能がisset()である必要があることが判明しました(コメントでOPとの会話から)。

次に、(新しい)結果を表示するために(削除が正常に行われたときに)(ヘッダー)リダイレクトが必要でした。

参考文献:

また、プリペアドステートメントを使用してになります。AGのを防ぐために


脚注:SQLインジェクションainst

私も述べたように、<form><table>と大混乱を引き起こす<form method="post"のため行方不明>の子にすることはできません。

+0

今私は夕食を作ることができます;-) –

関連する問題