Выбрав опцию в раскрывающемся меню HTML. - PullRequest
0 голосов
/ 17 августа 2011

Спасибо, что прочитали мой вопрос.

У меня есть веб-сайт, который использует PHP для базы данных карточек с возможностью поиска.Прямо сейчас у меня есть код для раздела head / 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="Ally" <?php if($_GET['Type'] == "Ally") echo "selected='selected'"; ?>> Ally </option>
    </select>

Это соответствующий код из функции, которая не работает, и находится на тестовой площадке (игнорируйте ошибку):

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 ]

3 голосов
/ 17 августа 2011

Вы не можете встраивать теги <?php в такую ​​строку. Вы должны объединить его с троичными операторами .

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;
}
2 голосов
/ 17 августа 2011

Проблема в том, что вы выводите 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 } ?>
1 голос
/ 17 августа 2011

немного грязно, но должно работать:

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>';
}
1 голос
/ 17 августа 2011

Вам не хватает кавычек

echo "selected=\"selected\""
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...