1

このコードは、チェックボックスが正しくオンになっているIDを取得しますが、変更したものではなく、最初の選択から選択ドロップダウンを選択します。これを修正する方法はありますか?私は使用しています

<select name="status[]"><option value="1">active</option><option value="0">inactive</option></select>

これが私のプロセスコードです。

if (isset($_POST['submit'])) {


// find out how many records there are to update

$size = count($_POST['id']);

// start a loop in order to update each record
$i = 0;
while ($i < $size) {
// define each variable
$id = $_POST['id'][$i];
$status= $_POST['status'][$i];

// do the update and print out some info just to provide some visual feedback
$query = "UPDATE users SET status = '$status' WHERE id = '$id' LIMIT 1";
mysql_query($query) or die ("Error in query: $query");
print "$status | $id<br /><br /><em>Updated!</em><br /><br />";
++$i;
}
mysql_close();
}
4

1 に答える 1

1

コメントには同意しますが、質問に対する簡単な回答を提供します。

HTMLを簡単にするために、このようなことをします。配列インデックスは、PHPのカウンターからエコーするか、他に基づいて変更されない場合は静的に入力することができます。アイテムごとにこのインデックスを増やすだけです。

<input type="checkbox" name="id[0]" value="1"> Some Text
<select name="status[0]">
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
</select>

今PHPのために

if (isset($_POST['submit'])) {

    foreach($_POST['id'] as $i=>$value) {
        if($value == 1) {
            // define each variable
            $id = $_POST['id'][$i];
            $status= $_POST['status'][$i];

            // do the update and print out some info just to provide some visual feedback
            $query = "UPDATE users SET status = '$status' WHERE id = '$id' LIMIT 1";
            mysql_query($query) or die ("Error in query: $query");
            print "$status | $id<br /><br /><em>Updated!</em><br /><br />";
        }

    }
    mysql_close();
}

編集:

チェックボックスの値を必要な値に設定できることを忘れました。有効な結果を確認するようにしてくださいif($value==1)(たとえば>0、すべてのIDが正の場合)。

于 2012-05-16T21:44:37.870 に答える