概要:複数のチェックボックスを使用しない削除および更新ステートメント
クエリに基づいて、複数のチェックボックスが動的に生成されます。各チェックボックスの値は、クエリの行のいずれかの文字列です。
フォーム提出時に、別のスクリプトが実行されました(del.php)。このスクリプトはチェックされたチェックボックスの配列を取得してループし、別の2つのクエリを実行することができます。これは削除クエリと更新クエリです。
これらは機能しません。 INSERTクエリを試してもうまくいきます。しかし、削除と更新は行いません。ここで
私のコードです:
のindex.php:
<?php
$gettips = mysql_query('SELECT body FROM tips WHERE body!="" and approved!="yes" and approved!="no"')or die(mysql_error());
$i=0;
while($tips = mysql_fetch_array($gettips))
{ ?>
<input type="checkbox" name="checkboxes[]" value="<?php print $tips[0] ?>" />
<input type="checkbox" name="checkboxesno[]" value="<?php print $tips[0] ?>" />
<a class="names"> - <span><?php print $tips[0] ?></span></a><br />
<? $i++;
}
?>
とdel.php:
foreach($_POST['checkboxes'] as $check) {
mysql_query("INSERT INTO approved (body) VALUES ('$check') ");
mysql_query("UPDATE tips SET approved='yes' WHERE body='$check'");
}
foreach($_POST['checkboxesno'] as $key) {
mysql_query("DELETE FROM tips WHERE body='$key' ")or die(mysql_error());
}
mysql_error()
は、すべてのエラーをスローしません。データベース接続は両方のファイルで機能します。チェックボックスの値は文字列です。 POST $variable
ではなく、文字列自体をクエリに追加してレコードを削除できます。 (古いレコードは削除できず、新しく追加されたレコードのみを削除できます)。
UPDATE:
私はrow='string'
が、少なくとも私の場合には、ベストプラクティスではありませんでしたレコードを削除しようとしていることに気づきました。だから、フォームのチェックボックスに文字列を値として渡す代わりに、テーブルのid値を与えることにしました。ここ
は新しいコードです:
<?php
$gettips = mysql_query('SELECT id,body FROM tips WHERE body!="" and approved!="yes" and approved!="no"')or die(mysql_error());
$i=0;
while($tips = mysql_fetch_array($gettips))
{ ?>
<input type="checkbox" name="checkboxes[]" value="<?php print $tips[0] ?>" />
<input type="checkbox" name="checkboxesno[]" value="<?php print $tips[0] ?>" />
<a class="names"> - <span><?php print $tips[1] ?></span></a><br />
<? $i++;
}
?>
と削除クエリ:
foreach($_POST['checkboxes'] as $check) {
// echo "INSERT INTO approved (body) VALUES ('$check') <br>";
// echo "UPDATE tips SET approved='yes' WHERE body='$check'<br>";
mysql_query("INSERT INTO approved (body) VALUES ('$check') ");
mysql_query("UPDATE tips SET approved='yes' WHERE body='$check'");
}
foreach($_POST['checkboxesno'] as $key) {
// echo "DELETE FROM tips WHERE id=$key <br>";
mysql_query("UPDATE tips SET approved='no' WHERE id=$key");
mysql_query("DELETE FROM tips WHERE id=$key ")or die(mysql_error());
}
他の方法は働いていなかった理由はそこに誰かが持っているので、もし私はまだ、知りません説明するチャンス、それは素晴らしいだろう!
代わりにprepared statementsを使用することをおすすめします。 –