2011-08-17 8 views
0

제 질문을 읽어 주셔서 감사합니다.HTML 드롭 다운 메뉴에서 옵션을 선택합니다.

검색 가능한 카드 데이터베이스로 PHP를 사용하는 웹 사이트가 있습니다. 지금은 각 페이지에 head/searchbox 섹션에 대한 코드가 있지만 대신 함수를 사용하려고합니다. 함수 자체가 작동 중입니다. 문제는 드롭 다운 상자입니다. 현재 사용자가 옵션을 선택하고 검색 한 후 다음 페이지에서 선택 항목을 선택하도록 설정했습니다.

구문에 문제가 있다고 확신합니다. 여기

는 (오류를 무시) used on the live site right now.

<select name="Type" onchange="this.submit()"> 
     <option value="1" >[All Card Types] </option> 
     <option value="Hero" <?php if($_GET['Type'] == "Hero") echo "selected='selected'"; ?>> Hero </option> 
     <option value="Ally" <?php if($_GET['Type'] == "Ally") echo "selected='selected'"; ?>> Ally </option> 
    </select> 

이 작동하지 않는 기능의 관련 코드 및 is on the test site 인 작업 코드의 예이다 :

function searchBox(){ 
//Cell 1 
    echo ' 
     <select name="Type" onchange="this.submit()"> 
      <option value="1" >[All Card Types] </option> 
      <option value="Hero" <?php if($_GET["Type"] == "Hero") { echo "selected=selected" ; }?>> Hero </option> 
      <option value="Event" <?php if($_GET["Type"] == "Event") { echo "selected=selected"; }?>> Event </option> 
     </select> 
    '; 
} 

테스트 페이지에서 알 수 있듯이 드롭 다운 메뉴는 실제 페이지처럼 작동하지 않습니다.

도움 주셔서 감사합니다.

+0

함수는 정말 두 번째 함수의 생각처럼 에코 –

답변

3

<?php 태그를 이와 같은 문자열에 포함 할 수 없습니다. 당신은 ternary operators와 그것을 연결해야합니다. 당신은

echo "selected=\"selected\"" 
+0

에 포함 된 PHP있다. 나는 그것을 구현하려고하는 몇 가지 문제에 직면하고있다. 예를 들어'": "> Hero"; ' – Mason240

+0

@ Mason240 : "변수없이"무슨 뜻인지 잘 모르겠다. – Jonah

1

:

function searchBox(){ 
//Cell 1 
    echo ' 
     <select name="Type" onchange="this.submit()"> 
      <option value="1" >[All Card Types] </option> 
      <option value="Hero"' . ($_GET['Type'] == 'Hero' ? ' selected=""' : '') . '> Hero </option> 
      <option value="Event"' . ($_GET['Type'] == 'Event' ? ' selected=""' : '') . '> Event </option> 
     </select> 
    '; 
} 

그러나 유지 보수를 위해서

, 당신은이 같은 더 많은 일을 할 수

function searchBox(){ 
//Cell 1 
echo ' 
    <select name="Type" onchange="this.submit()"> 
     <option value="1" >[All Card Types] </option> 
     <option value="Hero"'; 

if($_GET["Type"]=="Hero"){ 
    echo "selected=selected"; 
} 

echo '>Hero</option><option value="Event"'; 

if($_GET["Type"]=="Event"){ 
    echo "selected=selected"; 
} 

echo '>Event</option></select>'; 
} 
+0

그리고 @ 조한은 말했습니다. (나는 그 큰 구멍을 놓쳤다는 것을 믿을 수 없다) – Starx

1

좀 지저분 따옴표 누락하지만 작동합니다

function searchBox() { 
    $types = array('Hero', 'Event'); 
    $output = '<select name="Type" onchange="this.submit()">'; 
    $output .= ' <option value="1" >[All Card Types] </option>'; 
    foreach ($types as $type) { 
     $output .= '<option value="' . $type . '"' . ($_GET['Type'] == $type ? ' selected=""' : '') . '> ' . $type . ' </option>'; 
    } 
    $output .= '</select>'; 
    echo $output; 
} 
2

prob lem은 함수에서 리터럴 텍스트의 일부로 PHP를 출력한다는 것입니다. PHP 논리가 echo 문 외부에 있도록 함수를 다시 작성해야합니다. 이 경우에는 다음과 같이 PHP 처리의 확대/이동하는 것이 가장 쉬운 방법 일 수 있습니다

<?php function searchBox() { ?> 
     <select name="Type" onchange="this.submit()"> 
      <option value="1" >[All Card Types] </option> 
      <option value="Hero" <?php if($_GET["Type"] == "Hero") { echo "selected=selected" ; }?>> Hero </option> 
      <option value="Event" <?php if($_GET["Type"] == "Event") { echo "selected=selected"; }?>> Event </option> 
     </select> 
<?php } ?> 
관련 문제