2012-04-16 2 views
2

나는 드롭 다운에서 사용자가 섹스 (성별)를 선택하는 선택 상자가 있으며, 선택 항목은 select 태그에서 "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']'올바른 결과를 반환합니까? –

+0

show'var_dump ($ info);' – zerkms

+0

옵션 중 하나가 "selected = selected"로 보이는지 소스를 보셨습니까? 따옴표는 중요하지 않습니다. –

답변

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

+0

@zerkms true이지만, 나머지 OP 코드처럼 보이는 html을 출력합니다. = 'N' ', 깨끗하고 일관된 출력 코드는 여기 내 목표입니다 ... – JKirchartz

+0

실제로 일관성이 있지만 문제가 전혀 해결되지 않습니다 – zerkms

0

그것은해야한다 :

selected=\"selected\" 
+0

작은 따옴표를 사용하는 경우에는 다음과 같이 표시되지 않습니다. 'selected = selected'는 다음과 같아야합니다 : selected = selected 또는 selected = "selected"또는 selected = 'selected' 단축키를 사용하여 –

0

정말를 수행 이 답변인지 확인해보세요. 다음을 시도해주세요. ". (($info['sex'] == "N") ? ('selected=\'selected\''):(NULL)) ."

또한 태그에 autocomplete = "off"가 있는지 확인하거나 ctrl + f5를 몇 번 눌러 확인하십시오. 이것은 과거에 많이 겪었습니다

0

우선,이 스타일의 코딩을 피하고 HTML을 PHP로 포함시키지 마십시오.

은, 예를 들어 그것은 다음과 같이 수행 할 수 $info['sex']는 N 또는 M 또는 F이다

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

+1

네, 맞습니다. PHP 5.3에서보다 정확하게하려면 "short_open_tag = On"을 php.ini에 설정해야합니다. PHP 5.4에서는 변경되었으며이 구문은 항상 작동합니다. – shark555

0

경우;

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

추신 : 작은 따옴표는 HTML에서 사용하는 것이 타당하지만 justin biebering과 같은 나쁜 추세입니다.