2

ユーザーがドロップダウンから性別 (性別) を選択する選択ボックスがあり、その選択は選択タグで「選択済み」で指定されます。しかし、ボックスは常に「選択」で終わります。次の構文で何が間違っていますか?

echo"<select name='sex'>
<option value='N' '". ($info['sex'] == "N" ? 'selected=selected':'') ."'>Choose</option>
<option value='M' '". ($info['sex'] == "M" ? 'selected=selected':'') ."'>Male</option>    
<option value='F' '". ($info['sex'] == "F" ? 'selected=selected':'') ."'>Female</option> 
</select>";

$info['sex']は、常に N、M、または F を返すコンサルト SQL からのものです。

4

5 に答える 5

4

あなたselected=selectedは引用されており、次のように出力されます

<option value='N' 'selected=selected'>

コードを実行するときは、これを使用します

echo"<select name='sex'>
<option value='N' ". ($info['sex'] == "N" ? 'selected=\'selected\'':'') .">Choose</option>
<option value='M' ". ($info['sex'] == "M" ? 'selected=\'selected\'':'') .">Male</option>    
<option value='F' ". ($info['sex'] == "F" ? 'selected=\'selected\'':'') .">Female</option> 
</select>";

でのエスケープされた引用符と、 および での単一引用符の欠如に注意してください'selected=\'selected\''". ($info['sex'].">

デモ: http://codepad.org/AX95BzTR

ここに問題のある出力を示すフィドルがあります: http://jsfiddle.net/JKirchartz/KB4rv

于 2012-04-16T21:04:55.003 に答える
0

$info['sex']NまたはMまたはFの場合 。

    echo "<select name=\"sex\">
    <option value=\"N\" ". ($info['sex'] == "N" ? "selected=\"selected\"" : "") .">Choose</option>
    <option value=\"M\" ". ($info['sex'] == "M" ? "selected=\"selected\"" : "") .">Male</option>    
    <option value=\"F\" ". ($info['sex'] == "F" ? "selected=\"selected\"" : "") .">Female</option> 
    </select>";

PS:一重引用符はHTMLでの使用に有効ですが、ジャスティンビーバリングのような悪い傾向です。

于 2012-04-16T21:23:13.373 に答える
0

まず第一に、このスタイルのコーディングを避け、PHP を HTML に組み込むようにしてください。

たとえば、次のように実行できます。

<?php
$sex = "F"; //mockup data from DB
?>

<select>
        <option <?= $sex=="M" ? "selected='selected'" : "" ?> value='M' >Male</option>
        <option <?= $sex=="F" ? "selected='selected'" : "" ?> value='F' >Female</option>
</select>
于 2012-04-16T21:17:12.970 に答える
0

そのはず:

selected=\"selected\"
于 2012-04-16T21:06:06.793 に答える
0

これが答えかどうかはわかりませんが、これを試してください: ". (($info['sex'] == "N") ? ('selected=\'selected\''):(NULL)) ."

また、タグに autocomplete="off" があるかどうかを確認するか、ctrl + f5 を数回押して確認してください。これは過去に私にたくさん起こった

于 2012-04-16T21:06:15.913 に答える