1

データベース情報を表示するページがあります。各ループを通じて、チェックして送信した場合に関連するエントリを削除するためのチェックボックスが出力されます。チェックボックスの名前は「delete[]」で、「id[]」という名前の行 ID を含む非表示の値があります。

これは私のフォームの関連部分です:

<tr><td valign='top'>
<label class='amarillo med' style='color:#C00;'>Delete Section </label>
<input type='checkbox' name='delete[]' />
<input type='hidden' name='id[]' value='" . $row['about_id'] . "' />
</td></tr>

これは私のphpとクエリです

$deleteCount = count($_POST['delete']);
for ($x = 0; $x < $deleteCount; $x++) {
if(isset($_POST['delete'][$x])) {
   $sql = 'DELETE FROM about WHERE about_id = \''.$_POST['id'][$x].'\'';
 $result = mysql_query($sql);
}
}

これが起こることです。

3 つの行が返され、3 番目の行だけを削除したい場合は、3 番目のボックスをオンにして [送信] をクリックします。これにより、返された最初の行が削除されます。ここでも、3 つの行が返され、1 番目と 3 番目の行を削除したい場合は、送信すると最初の 2 行が削除されます。

チェックされているチェックボックスごとに、最初の行から多くの行が削除されているように見えます。アドバイスをいただければ幸いです。

4

2 に答える 2

1

最良かつはるかに簡単な方法は、使用することです

<input type="checkbox" name="delete[]" value="<?=$row['about_id']?>"/>

その後

foreach($_REQUEST['delete'] as $delID)
{
   ...
}
于 2012-04-05T21:44:25.953 に答える
1

次のコードを使用します

<tr><td valign='top'>
<label class='amarillo med' style='color:#C00;'>Delete Section </label>
<input type='checkbox' name='delete[$row['id']]' />
<input type='hidden' name='id[$row['id']]' value='" . $row['about_id'] . "' />
</td></tr>

$row['id'] は行の ID です

于 2012-04-05T21:44:34.227 に答える