0

メッセージに関する情報を含むテーブルを表示するクエリがあります。ユーザーが削除したいメッセージにチェックを入れたら、チェックボックスで削除したいメッセージを選択するオプションを提供する列もあります。次に送信ボタンをクリックすると、選択した各メッセージを削除するための SQL ステートメントが作成されるプロセス ページに移動します。ただし、ステートメントは機能していないようです。これは私がこれまでに持っているものです:

メッセージ表示ページ:

if ($_SESSION['user_session'] == "$current_user")
{
    {
     echo "<table border='1'>
     <tr>
     <th>Message ID</th>
     <th>Username</th>
     <th>Subject</th>
     <th>Message</th>
     <th>Delete?</th>
     </tr>";

        while($row = mysql_fetch_array($result))
         {
          echo "<tr>";
          echo "<td>" . $row['message_id'] . "</td>";
          echo "<td>" . $row['username'] . "</td>";
          echo "<td>" . $row['sub'] . "</td>";
          echo "<td>" . $row['message'] . "</td>";
          echo "<td><input type='checkbox' name='check_list[]' value='" .     $row['message_id'] . "' /></td>";
          echo "</tr>";
             }
      echo "</table>";
     }
}

SQL ステートメントを含むプロセス ページ:

if(!empty($_POST['check_list']))
{
    foreach($_POST['check_list'] as $check)
    {
    //connection to the database
    $dbhandle = mysql_connect("XXX", "XXX", "XXX")
    or die("Unable to connect to MySQL");

    //select a database to work with
    $selected = mysql_select_db("XXX",$dbhandle)
    or die("Could not select examples");

    //execute the SQL query to update the "returned" field to 1 wherever the loan_id is     checked.
    $result = mysql_query("DELETE FROM message WHERE message_id='$check'");
    }

              if ($result)
          {
              echo 'Messages Deleted';
          }
}
4

2 に答える 2

0
if(!empty($_POST['check_list']))
{
    $dbhandle = mysql_connect("XXX", "XXX", "XXX") or die("Unable to connect to MySQL");
    $selected = mysql_select_db("XXX",$dbhandle) or die("Could not select examples");

    $result = mysql_query("DELETE FROM message WHERE message_id IN (" . implode(',', $_POST['check_list']) . ")", $dbhandle);
    if ($result !== false)
        echo 'Messages deleted.';
}

$_POST['check_list']クエリを実行する前に、コンテンツのテストをさらに実装する必要があります。私たちは悪人にばかげたことをさせたくありません。

于 2013-01-24T17:05:24.423 に答える
0

コードに問題がないことがわかる限りvar_dump($check)、SQL クエリの前に a を試して内容を出力しvar_dump($_POST['check_list'])、2 ページ目の最初で a を試す必要があります。

また、次のようにforeach複数の必要な接続を行っているため、のデータベース接続を削除することをお勧めします。

if(!empty($_POST['check_list'])) {
    // Output the variable $_POST['check_list']
    var_dump($_POST['check_list']);

    //connection to the database
    $dbhandle = mysql_connect("XXX", "XXX", "XXX") or die("Unable to connect to MySQL");

    //select a database to work with
    $selected = mysql_select_db("XXX",$dbhandle) or die("Could not select examples");

    foreach($_POST['check_list'] as $check) {
        // Output the $check variable to see what it contains
        var_dump($check);

        //execute the SQL query to update the "returned" field to 1 wherever the loan_id is     checked.
        $result = mysql_query("DELETE FROM message WHERE message_id='$check'");

        // For each $check, verify what message_id got deleted
        if ($result) {
            echo 'Message ID Deleted: ' . $check;
        }
    }
}
于 2014-01-30T05:00:16.703 に答える