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>";

注意在and的转义引号'selected=\'selected\''和缺少单引号". ($info['sex'].">

演示:http ://codepad.org/AX95BzTR

这是一个显示有问题的输出的小提琴:http: //jsfiddle.net/JKirchartz/KB4rv

于 2012-04-16T21:04:55.003 回答
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 回答
0

首先,尽量避免这种编码风格,而不是以其他方式在 HTML 中包含 PHP。

例如,它可以这样做:

<?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

如果$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 回答