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

时间:2011-08-17 00:11:07

标签: php html syntax

感谢您阅读我的问题。

我有一个网站,它使用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>
    ';
}

正如您在测试页面中看到的那样,下拉菜单的功能与在实际页面上的功能不同。

感谢您的帮助!

4 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:2)

问题是您正在输出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 } ?>

答案 2 :(得分:1)

你错过了引号

echo "selected=\"selected\""

答案 3 :(得分: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>';
}
相关问题