2011-08-17 104 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

你的函數嵌入回聲 – 2011-08-17 00:15:29

回答

3

您不能將<?php標籤嵌入到類似的字符串中。您必須將其與ternary operators連接起來。

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() { 
    $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; 
} 
+0

我真的很喜歡第二個函數的想法PHP。我遇到了一些試圖暗示它的問題。你能夠顯示沒有變量的tenary操作符的樣子嗎?例如:'」:「>英雄」;' – Mason240

+0

@ Mason240:我真的不明白「沒有變量」的意思。 – Jonah

1

你缺少引號

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

和@Johan說什麼。 (不敢相信我錯過了那個大洞) – Starx

1

有點混亂,但應該工作:

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>'; 
} 
2

概率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 } ?> 
相關問題