2012-04-16 34 views
2

我有一個選擇框,用戶從下拉菜單中選擇一個性別(性別),並且他們的選擇在選擇標籤中用「selected」指定。但盒子總是結束'選擇'。以下語法有什麼問題?在PHP中選擇的字段

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.

+2

''info ['sex']'返回正確的結果嗎? – 2012-04-16 21:04:59

+0

show'var_dump($ info);' – zerkms 2012-04-16 21:05:08

+0

你看過源代碼以確保其中一個選項顯示「selected = selected」?引號並不重要。 – 2012-04-16 21:07:36

回答

4

一個諮詢SQL你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

+0

儘管最好用引號括起來 - 它不會改變任何東西:http://jsfiddle.net/7YbMf/ – zerkms 2012-04-16 21:06:23

+0

@zerkms true,但是這會輸出html,看起來像OP代碼的其餘部分,比如'value ='N'',乾淨一致的輸出代碼是我的目標... – JKirchartz 2012-04-16 21:08:44

+0

確實是一致的,但它根本不能解決問題 – zerkms 2012-04-16 21:09:37

0

它應該是:

selected=\"selected\" 
+0

如果你使用單引號或雙引號,只要它看起來不像這樣就沒有關係:'selected = selected'它應該看起來像這樣:selected = selected或selected =「selected」或selected ='selected' – 2012-04-16 21:22:01

0

真的不知道這是否是答案,但試試這個: ". (($info['sex'] == "N") ? ('selected=\'selected\''):(NULL)) ."

另外看看你的標籤是否有autocomplete =「off」或點擊ctrl + f5幾次以確定。這種情況在過去很常見

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> 
+0

使用''快捷方式可能會在運行此代碼時中斷,在php 5.2之前您必須啓用/安裝它才能正常工作......這不是一個錯誤,只是需要注意的一點... – JKirchartz 2012-04-16 21:20:44

+1

是的,這是真的。更精確地說,在PHP 5.3中,「short_open_tag = On」必須在php.ini中設置 在PHP 5.4中,它已被更改,並且此語法始終有效。 – shark555 2012-04-16 21:24:14

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中使用,但是這是一個不好的趨勢,就像justin biebering。