さて、最初に、この質問が以前に尋ねられたことがあるかどうかをお詫びします。過去12時間、何百ものフォーラムスレッドをふるいにかけましたが、この質問に正確に答えるスレッドがまだ見つかりませんでした。
私が作成したページには、ユーザーがログインすると自動入力されるユーザーリストがあり、各ユーザーには、ホストがユーザーを選択して必要に応じて削除できるチェックボックスがあります。jQueryを使用して配列文字列をphpページに送信し、そこで文字列を分解し、ユーザーIDを調べて、渡されたIDをデータベースから削除しようとしています。複数のユーザーを選択しない限り、すべてが非常にうまく機能します。複数のユーザーを選択して配列をphpハンドラーに渡すと、配列は分解されますが、配列の最後の値のみが保持され、残りはスクリプトのブラックホールのどこかで失われます。
これが私のjavascriptページからの私のコードです:
function rem_user() {
var ids = $('input:checkbox[id=del]:checked').map(function(){
return this.value
}).get();
alert(ids);
jQuery("#rem_msg").load(controlpage, {AdmFnc: "rem_user", del_ids: ids}, getUsers);
}
次に、この配列はphp制御ページに渡され、そこで処理されます。
if (strcmp($AdmFnc, rem_user) == 0){
echo "";
$ids = trim($_POST['del_ids']);
$ids = explode(',',$ids);
if(is_array($ids)){
foreach($ids as $userid){
mysqli_query($dbc, "UPDATE webcastlogin SET logoutTime = '$current_time' WHERE userid = '$userid'") or die('Error setting logout time '.mysqli_error($dbc));
mysqli_query($dbc, "DELETE FROM weekly_users WHERE userid = '$userid'") or die('Error removing users '.mysqli_error($dbc));
}
echo 'Selected IDs removed';
} else if (empty($ids)) {
echo 'Code is wrong, no array sent';
} else {
mysqli_query($dbc, "UPDATE webcastlogin SET logoutTime = '$current_time' WHERE userid = '$ids'");
mysqli_query($dbc, "DELETE FROM weekly_users WHERE userid = '$ids'");
echo 'Selected ID removed';
}
}
私のJavaScriptでわかるように、アラートが設定されているので、送信されている情報が正しいことを確認できます。アラートからわかる限り、それは","
区切られた配列であるため、phpで使用しています。それを爆発させる側。
これをforeachループで実行すると、配列の最後の項目の値しか取得できない理由を理解しようとしています。
どんな助けでも大歓迎であり、将来のコーディングの課題のために私の髪を救うかもしれません。
ありがとう