1

チェックボックス入力の特定の配列に問題があります。

$insert .= '<tr>
<td>' .$uname. '</td>
<td>' .$fname. '</td>
<td>' .$lname. '</td>
<td>' .$email. '</td>
<td>'.(($admin == 'y') ? 'Admin':'User').'</td>
<td><input type="checkbox" name="change['.$uid.']" 
           value="'.(($admin == 'y')?'n':'y').'"/>'
                   .(($admin == 'y')?'Make a user':'Make an admin user').'</tr>';

私が読んだことから、これは、複数のチェックボックスがある場合に実行できる配列を作成する必要があります。$uid は でuser idあり、名前は change[1]、change[2] などとして表示され、これは機能します。

問題は、次のように while ステートメントを使用してこれを実行するときです。

while(list($key, $val) = each($_POST['change'])) {

次のメッセージが表示されます。

Warning: Variable passed to each() is not an array or object

なぜこれが起こっているのか、それを解決する方法を知っている人はいますか?

4

4 に答える 4

0

チェックボックスの名前には、インデックス値を含めることはできません。

<td><input type="checkbox" name="change[]" value="'.(($admin == 'y')?'n':'y').'"/>'.(($admin == 'y')?'Make a user':'Make an admin user').'</tr>';

于 2012-05-18T13:26:31.700 に答える
0

チェックボックス name = change[] にする必要があります

値 = $uid

次に、 $_POST['change'] を反復処理して $uid を取得できます

編集チェックされたチェックボックスの値のみが送信されることに注意してください

于 2012-05-18T13:36:20.467 に答える
0

送信時に配列が作成されていません。私はあなたのコードを取り、必要なフォームなどを作成しました.

var_dump($_POST['change']);$uid を削除しても NULL を返します。

理由を教えていただければ幸いですが、私にはうまくいくようです。コードをクリーンアップし、三項演算子をより見栄えの良いものに取り出してから、引用符を再確認することをお勧めします。PHP は、POST 配列 ('change') のパラメーターのように理論​​的には機能するはずの場合でも、一重引用符を嫌います。引用符が混乱している可能性があります。

PHP は一重引用符を嫌いません。正しく使用しないとコードが解析されないので注意が必要です...

于 2012-05-18T13:57:43.097 に答える
0
//$uid is unique, so you perhaps might use this
// make sure $uid is set correctly
// This is correct for multiple checkboxes

<input type="checkbox" name="change['.$uid.'][]" ... 
于 2012-05-18T13:32:37.050 に答える