0

チェックボックスを使用してテーブルから複数のデータを削除するにはどうすればよいですか?私はこのコードを持っています:

<form id="prefForm" action="coments-del.php" method="post">

<?

$result = mysql_query("SELECT * FROM comments");      
$myrow = mysql_fetch_array($result);

do
{
    $res = mysql_query("SELECT title FROM data WHERE id=$myrow[post]");
    $row = mysql_fetch_array($res);
    printf ("
         <tr>
           <td>
                <input type='checkbox' name='id' value='%s'  />
                </td>        
                <td>%s</td>
           <td>%s</td>
                <td>%s</td>
         ",$myrow["id"],$myrow["id"],$myrow["author"],$myrow["text"]);
}
while ($myrow = mysql_fetch_array($result));
?>

<input name="submit-button" type="submit" value="Delete" />
</form>

上記のスクリプトでフォームを送信した後に取得されるcoments-del.phpは次のとおりです。

頭の中には:

if (isset($_POST['id'])) { $id = $_POST['id']; }

本体には、削除を処理するコードがあります。

<?php 
if (isset($id)) {
    $result = mysql_query ("DELETE FROM comments WHERE id='$id'");

    if ($result == 'true') {echo "Comment Deleted!";}
    else {echo "Error: Nothing was deleted!";}

} else {
    echo "Unknown Error! Contact Administrator.";
}

?>
4

2 に答える 2

1

最初のステップは、チェックボックス名を配列にすることです。

<input type='checkbox' name='id[]' value='%s'  />

そして、スクリプトが投稿を受け取ったら、その配列を適切なsql句に解析します。

$clause="";
if (isset($_POST['id'])) { 
   foreach ($_POST['id'] as $p)
   $clause.="id='$p' OR"; 
}
$clause=substr($clause,0,-2);

最後に、where句のクエリに句を配置します。

于 2012-08-31T17:27:14.643 に答える
0

私があなたを理解しているかどうかはわかりませんが、私は通常、PKを配列に保存してから、次のようなことを行います。

<?php
//... process your ids (eg. filter out not numerical values) and save into an array

if(count($ids_array)>0){
   mysql_query('DELETE FROM comments WHERE id IN ('.implode(',', $ids_array).')');
}
?>
于 2012-08-31T17:22:39.503 に答える