<select><option> и действия, связанные с ними - PullRequest
0 голосов
/ 06 июня 2011

Я пишу систему бронирования.На главной странице я бы дал выбор категории, просмотрев оборудование, доступное для бронирования.Например, у меня есть такой код:

<select>
        <option value = "a">A</option>
        <option value = "b">B</option>
        <option value = "c">C</option>
        <option value = "d">D</option>
        <option value = "e">E</option>
</select>

Мне бы хотелось, чтобы каждый выбор был связан с отдельным запросом к базе данных, и это был результат запроса, динамически отображаемого на экране.

Было бы здорово, если бы вы могли показать мне пример кода.

С уважением

Ответы [ 3 ]

0 голосов
/ 06 июня 2011

На ваш вопрос есть две части; 1 - определение запроса для запуска и 2 - динамическое отображение результатов.

Часть 1. Определение запроса:

Учитывая жестко заданные варианты выбора и отсутствие параметров для запроса, используя приведенный выше код, вы можете определить, какой запрос нужно выполнить, используя следующее:

Для части HTML, как части формы, создайте выделение, как вы делали выше (но с именем)

<select name="querySelect">
    <option value="a">A</option>
    <option value="b">B</option>
</select>

А в PHP:

$querySelect = $_GET['querySelect'];
switch($querySelect)
{
    case 'a':
        $sql = "SELECT * FROM TableA";
        break;
    case 'b':
        $sql = "SELECT * FROM TableB";
        break;
}

$results = mysql_query($sql);

Часть 2. Динамическое отображение результатов

С $results то, что вы делаете с данными, во многом зависит от того, чего вы хотите достичь. На самом базовом уровне вы можете сделать следующее для динамического отображения таблицы результатов:

if(mysql_num_rows($results) > 0)
{
    $header = false;
    print "<table>"

    while($row = mysql_fetch_assoc($results))
    {
        if(!$header)
        {
            $headings = array_keys($row);
            print "<tr>";
            for($i=0;$i<count($headings);$i++)
            {
                print "<th>".htmlspecialchars($headings[$i])."</th>";
            }
            print "</tr>";

            $header = true;
        }

        print "<tr>";

        foreach($row as $value)
        {
            print "<td>".htmlspecialchars($value)."</td>";
        }

        print "</tr>";
    }

    print "</table>"
}
else print "<h1>No Results Found!</h1>";

mysql_free_result($results);

В моем ответе еще многое не освещено, потому что я не могу сказать, какой уровень детализации требуется. Вам также нужно будет охватить такие вещи, как ваше подключение к MySQL, обработка ошибок, форматирование таблицы ...

Обновление Хм, очень интересно знать, почему это было понижено. Если кто-то может объяснить в комментариях, где я неправильно понял вопрос или ввел пользователя в заблуждение, я был бы признателен.

0 голосов
/ 06 июня 2011

Если вы используете jQuery, код может выглядеть как

<select id="select_id">
    <option value = "a">A</option>
    <option value = "b">B</option>
    <option value = "c">C</option>
    <option value = "d">D</option>
    <option value = "e">E</option>
</select>
<script type="text/javascript">
    $('#select_id').change(function(e) {
        // this code send selected value to the server
        $.post('url', {selected_value: this.value}, function(response) {
            // handle the server's response
        });
    });
</script>

На стороне сервера возьмите значение из $ _POST и сделайте запрос. И помните - не доверяйте данным со стороны клиента. Вы никогда не знаете, кто там. Всегда проверяйте входящие данные и НЕ используйте такие конструкции

$sql = "SELECT * FROM table_name WHERE name = '{$_POST['selected_value']}'";

потому что может быть любая строка, в том числе такая, которая может отбросить все базы данных, очистить данные и т. Д.

0 голосов
/ 06 июня 2011
$query = mysql_query("SELECT * FROM choices");
while($row=mysql_fetch_assoc($query)) {
  echo '<option value="'.$row['value'].'">'.$row['value'].'</option>';
}

Если вам нужен отдельный запрос для каждого выбора, код не сильно изменится:

$query = mysql_query("(SELECT * FROM choices) UNION (SELECT * FROM choices1) [etc]");
while($row=mysql_fetch_assoc($query)) {
  echo '<option value="'.$row['value'].'">'.$row['value'].'</option>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...