1

最初に私のコードを見てください。

   <select multiple name='assign_to[]'>
                    <?
                $result_10 = mysql_query("select * from login_users") or die(mysql_error());
                while($row_10 = mysql_fetch_object($result_10))
                {
                    echo "<option  value=".$row_10->user_id.">".$row_10->username."</option>";
                }
                ?>
    </select>

ページが送信されたときに値を取得することはできますが、私の問題は次のとおりです。

ページが送信されると、同じページにリダイレクトされます。フォームを送信する前に選択されたオプションが、ページの送信後に選択された状態で表示されるようにします。

そこに書かれるPHPコードとは何か。選択した単一のドロップダウンに対して私が行ったことは次のとおりです。

<?
while($row_10 = mysql_fetch_object($result_10))
                    {
?>
       <option <?=$row_10->user_id==$_POST['assign_to']?'selected':''?> value="<?=$row_10->user_id?>"><?=$row_10->username?></option>
<?
                    }

?>

あなたが私の質問を受けていることを望みますか?

ありがとう!!!

4

3 に答える 3

2
if(in_array($row_10->user_id,$_POST['assign_to'])){echo "selected"}else{echo ""}

$ _POST ['assign_to']は配列なので、これでうまくいくと思います。

または、条件演算子を使用できます。

<option <?= in_array($row_10->user_id,$_POST['assign_to']) ? 'selected' : ''?> value="<?=$row_10->user_id?>"><?=$row_10->username?></option>
于 2013-02-11T12:41:28.093 に答える
1

in_arrayを使用する

  <option <?=$row_10->user_id=$_POST['assign_to']?'selected':''?> value="<?=$row_10->user_id?>"><?=$row_10->username?></option>

と置換する

<option <?= (in_array($row_10->user_id,$_POST['assign_to'])) ? 'selected' : ''?> value="<?=$row_10->user_id?>"><?=$row_10->username?></option>

選択した値が配列として取得されるため、値が配列に存在することを確認してください。

于 2013-02-11T12:41:02.650 に答える
1

複数の選択ボックスを使用しているため、POST変数で値の配列を受け取るため、値を等しくするのではなく、その配列に値が存在するかどうかを確認する必要があります。

以下に示すように、in_array関数を試すことができます。

<?
while($row_10 = mysql_fetch_object($result_10))
         {
         ?>
         <option <?=in_array($row_10->user_id,$_POST['assign_to'])?'selected':''?> value="<?=$row_10->user_id?>"><?=$row_10->username?></option>
         <?
         }
?>
于 2013-02-11T12:43:13.677 に答える