在选择的HTML下拉菜单中选择一个选项。

问题描述:

感谢您阅读我的问题。在选择的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

您不能将<?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

你缺少引号

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

和@Johan说什么。 (不敢相信我错过了那个大洞) – Starx

有点混乱,但应该工作:

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

概率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 } ?>