2012-06-10 3 views
0

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

В моей базе данных есть таблица под названием «ночей» с полями: «город», «имя» и «день».

Чтобы заполнить мою первую коробку, я использую SELECT DISTINCT cities from nights и т. Д., Которая отлично работает.

Чтобы заполнить вторую коробку, мне нужно что-то вдоль линий SELECT name WHERE city = $city - моя проблема в том, что я не уверен, как установить $city (являясь именем тега <select>). Я не могу использовать $_POST['city'], потому что форма не была отправлена ​​на данный момент.

Любые идеи?

+0

Оставьте второй флажок пустым, пока не будет выбран «город». – wroniasty

+0

Я, наверное, должен добавить: Я пытаюсь избежать JS/jQuery сейчас только потому, что я не очень разбираюсь в этом, и мне нужно сделать сайт в ближайшие пару дней. – Sebastian

ответ

0

Вы можете использовать AJAX для этого.

В случае изменения события вызовите функцию javascript-ajax, которая вызывает скрипт php, который делает вам второй dropdown-код.

1

Если вы хотите, чтобы это было динамическим (т. Е. После изменения пользователем выпадающего списка), вам нужно будет использовать javascript для первого запроса страницы PHP (возможно, используя jQuery get), затем соответствующим образом настройте выпадающие списки. В Интернете есть много учебников для этого.

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

Что-то вроде:

$first = True; 
while($row = mysql_fetch_array($result)) 
{ 
    echo "<option" . (($first) ? " selected" : "") . ">" . $row['city'] . "</option>"; 
    if($first) 
    { 
     $first = !$first; 
     $city = $row['city']; 
    } 
} 
//now do stuff with with $city 
0
<?  
$CITIES = query_result("SELECT DISTINCT cities FROM nights;"); 
if (isset($_POST["city"])) { 
    $NAMES = query_result("SELECT name FROM nights WHERE city = '{$_POST[city]}'"); 
    if (isset($_POST["day"]) 
    $DAYS = query_result("SELECT day FROM nights WHERE city='{$_POST[city]}'". 
         " AND name = '{$_POST[name]}'"); 
    else 
    $DAYS = array(); 
} else 
    $NAMES = array(); 

/* now output the <select> markup for $CITIES, $NAMES and $DAYS */ 
?> 

Примечание: вы должны определить query_result функцию самостоятельно (я просто использовал его для упрощения кода).

Смежные вопросы