私はこれに何時間も費やしましたが、運がありませんでした。チェックボックスでマークされ、削除ボタンが押されたリスト要素を削除しようとしています。各チェックボックスには、実際の ID 列の値を関連付ける html id 属性があります。MySQLステートメントを使用して、適切なIDに基づいて行を削除しています(htmlから要素を削除できますが、MySQLテーブルからは削除できません)
"DELETE FROM todolist WHERE ID IN (".$_GET['id'].")"
例 id... id="456,444,454"
JavaScript は、チェックされたボックスの id 値を調べて、それらを php ファイルに送信します。この部分は問題ありません。アラートから、ステートメントが正しい ID を与えていることを確認できます。削除ボタンが押されたときに呼び出されるメソッドを次に示します。
function removeCheckedTask(){
var checkBoxes = $('toDoList').getElementsByClassName('box');
var deletedID = new Array(); var indexID =0;
for (var i = 0; i < checkBoxes.length; i++) {
if (checkBoxes[i].checked){
deletedID[indexID]=checkBoxes[i].getAttribute('id');indexID++;
var par = checkBoxes[i].parentNode;
$('toDoList').removeChild(par);
i--;
for(var a=i+1; a<checkBoxes.length; a++){//moves other elements
par = checkBoxes[a].parentNode;
par.style.top = (a*40)+"px";
}
}
}
if(deletedID.length>0){
$('message').innerHTML = "Just a second..."
// Set te random number to add to URL request
nocache = Math.random();
// Pass the login variables like URL variable
var ids = 'id='+deletedID[0];
for(var i=1; i<deletedID.length; i++){
ids+= ',' + deletedID[i];
}
alert('removeTasks.php?'+ids);
http.open('get', 'removeTasks.php?'+ids);
http.onreadystatechange = deleteReply;
http.send(null);
}
function deleteReply() {
if(http.readyState == 4){
var response = http.responseText;
$('message').innerHTML = 'Task removed:'+response;
}
}
resetIDs();//resets ids of list elements, don't worry about it
}
これは、接続のない私のphpコードです。is文にします。
if(isset($_GET['id'])){
$q+="DELETE FROM todolist WHERE ID IN (".$_GET['id'].")"; //line 13
mysql_query($q) or die(mysql_error());
echo "tried to delete stuff";
} else {
echo("Bad delete");
}
$q 文字列に変更を加えたため、応答エコーは少し変化していますが、最近のこの単純なバージョンでは、MySQL エラーが出力されています。
注意: 未定義の変数: q in C:\xampp\htdocs\todo\removeTasks.php 行 13 SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルを参照して、1 行目の「0」付近で使用する正しい構文を確認してください。
私が使用する場合
"DELETE FROM todolist WHERE ID IN ("+$_GET['id']+")"
エラーが表示されます- Notice: Undefined variable: q in C:\xampp\htdocs\todo\removeTasks.php 行 13 SQL 構文にエラーがあります。1行目の「457」付近で使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。
457 は最初の ID でした。
ここと mysql が新しいので、何か省略した場合はお知らせください。