感谢您阅读我的问题。
我有一个网站,它使用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连接。
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>';
}