- 締切済み
チェックボックスによる複数のレコード削除について
PHP version 4.4.4を使用しています。 テーブルの中に下記のデータがあるとします。 cID uname mls 2 abc@abc.com 1234567896 2 abc@abc.com 1234567894 2 abc@abc.com 1234567892 1 test@test.com 1234567892 インターネットで色々調べたのを元に コードを作成したのですが、Submitボタンを押すと チェックボックスに選択されたレコードは削除されず、 1つ新たなレコードをデータに入力されてしまいます。 <例えば> cID:2、uname:abc@abc.com、で絞ったデータの中から 1234567894、と 1234567892 を削除しようとすると、 選択されたデータは削除されず、 下記のように新たなデータが1つインサートされます。 cID uname mls 2 abc@abc.com 0 それをした後だと、更新ボタン(ページがリロード)をクリックする度に 新たなデータが又1つインサートされます。 何方かこの問題を解決して頂けるととても助かります。 どうぞ宜しく御願いします。 フォームは下記の通りです。 <form action="<?=$_SERVER['PHP_SELF'] ?>" method="post"> <INPUT type="checkbox" name="id[]" value="<?=$mls?>"> <input type="submit" name="submit" value="Delete selected"> </form> 使用してるコードは下記の通りです。 //配列に入っている? if( is_array( $_REQUEST['id'] ) ){ //更新のあった行数 $cnt = 0; //配列の分だけSQL foreach( $_REQUEST['id'] as $myid ){ //エスケープ $myid = intval( mysql_escape_string( $myid ) ); $sql = "DELETE FROM $table2 WHERE cID='$session[cID]' AND id = '{$myid}' LIMIT 1 ; "; $result = mysql_query( $sql ); //更新のあった分だけ足す if( $result ){ $cnt += mysql_affected_rows(); } } echo "{$cnt}行が削除されました。"; }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
>1つ新たなレコードをデータに入力されてしまいます。 DELETE文でレコードが追加されることはありません。 全体像が見えないのでなんともいえませんが、 おそらくフロー制御がわるく、追加や更新のルーチンが作動しているのでは? とりあえずは$sqlをprintしてみてデバッグするとよいのでは?
お礼
yambejpさま、 御回答を頂きどうも有難うございます。 「DELETE文でレコードが追加されることはありません。」というのを 聞いて、 確かに・・・っと、それがきっかけで 何故そうなるのかやっと問題を解決しました。 Delete文をInsert文の後に入れてたのが問題でした。 どうも有難うございました。