0

私の質問はこの投稿の回答にまで及びますが、探しているものが他に投稿されているのを見つけることができませんでした。

オプションが mySQL テーブル (動的) からプルされているときに、チェックボックス リストでオプションを自動選択 (チェック済み) するにはどうすればよいですか?

これが私がこれまでに持っているものです:

テーブルから委員会 (通信) を引き出す:

while ($row = mysql_fetch_assoc($comm)){
    foreach ($row as $v){
        $comms[] = $v;
        }
}

きれいな HTML をきれいな PHP で出力する (助けが必要な部分):

    foreach ($comms as $comm){
       ?????????
    }

次のようなものを出力するにはどうすればよいですか?:

<input type="checkbox" name="committee" value="blue" checked="checked" />blue<br />
<input type="checkbox" name="committee" value="green"  />green<br />
<input type="checkbox" name="committee" value="orange"  />orange<br />
<input type="checkbox" name="committee" value="purple" checked="checked" />purple<br />
4

3 に答える 3

1

色が配列に格納され、データが配列として返されると仮定すると (関数を使用している場合はそうではない可能性がありますmysql_*)、各チェックボックスを出力し、その値を比較して、「チェック済み」のリストにあるかどうかを確認できます。 " 色:

<?php
$colors = array('blue', 'green', 'orange', 'purple');

$data = array('blue', 'purple');//array pulled from database.

foreach($colors as $color): ?>
    <input type="checkbox" name="committee" value="<?= $color ?>" <?= in_array($color, $data) ? 'checked="checked" ' : '' ?>/><br />
<?php endforeach; ?>

ところで、mysql_*関数の使用を停止する必要があります。それらは廃止されています。代わりにPDO (PHP 5.1 以降でサポート) またはmysqli (PHP 4.1 以降でサポート) を使用してください。どちらを使用すればよいかわからない場合は、この記事をお読みください

于 2012-08-17T13:36:51.580 に答える
0
while ($row = mysql_fetch_assoc($comm)){
    foreach ($row as $v){
        $comms = $v;
        }
}

$v 属性が Checked であると仮定して値を出力できます

   foreach($coms as $key => $value)
   {
      $checked = "";
      $color = $value['color'];
      if($value['checked'] == 'checked')
      $checked = "checked = 'checked'";
      echo "<input type='checkbox' name='committee' value='$color' $checked />$color<br />";

}

于 2012-08-17T13:39:33.557 に答える
0

確認する必要があることがいくつかあります。誰かがすでにフォームを送信しようとした場合、その応答は$_REQUEST($_POSTまたは$_GET、フォームの送信方法によって異なります) になります。次に、各行を次のように記述できます。

<input type="checkbox" name="committee[]" value="green" <?php if ($_REQUEST['committee'] == 'green') { echo "checked"; } ?> />green<br />

データベースからのものである場合は、チェックインできます$comms

<input type="checkbox" name="committee[]" value="green" <?php if (in_array($comms, 'green') { echo "checked"; } ?> />green<br />

再送信かどうかを事前に調べて、適切な場所からの結果を 1 つの配列に入力することで、コードをより効率的にすることができます。

<?php

if ([form is submitted]) {
    $comms = $_REQUEST["committee"];
} else {
    $comms = getCommsFromDatabase();
}

?>

これにより、$_REQUEST からの入力をサニタイズする機会も得られます。

于 2012-08-17T13:38:39.130 に答える