2012-04-19 5 views
0

У меня есть форма с двумя выпадающими списками. Один со странами и один с университетами. Выпадающее меню страны заполняется из базы данных MySQL, в которой указаны все страны. Сначала я хочу, чтобы выпадающий список университетов был заполнен всеми университетами в системе, однако конечный пользователь хочет, чтобы система была динамичной и училась так, как это происходит, поэтому в данный момент времени выпадающее меню не показывает никаких данных.HTML select onchange update query

<select name="academicdropdown" onchange="countrysortlist()" style="width:178px"> 
<option value"">Sort By Country</option> 
<option value"All" style="font-weight:bold; font-style:italic">All Countries</option> 
<?php 

while ($row=mysqli_fetch_array($countryresult2)) { 

    $id = $row["country_id"]; 
    $country = $row["country"]; 
    echo "<option value='$id'>$country</option>\n"; 
} 
?> 
</select> 

<select name="universitydropdown" onclick="unilist()" style="width:154px"> 
<option value"">University</option> 
<?php 

    if(isset($_SESSION['appformuniversity'])) { 

    if($_SESSION['appformacademic'] == "universitylist") { 

     $universityinput = $_SESSION['appformuniversitylist']; 
                while ($row=mysqli_fetch_array($universityresult)) { 
                 $universityid = $row["university_id"]; 
                   $university = $row["university_name"]; 
                 if($universityid == $universityinput) { 
                  echo "<option value='$universityid' selected='selected'>$university</option>\n"; 
                 } 
     else { 
                 echo "<option value='$universityid'>$university</option>\n"; 
                 } 
    } 
    } 
else { 
               while ($row=mysqli_fetch_array($universityresult)) { 

     $universityid = $row["university_id"]; 
     $university = $row["university_name"]; 
     echo "<option value='$universityid'>$university</option>\n"; 
                } 
} 
} 
else { 

    while ($row=mysqli_fetch_array($universityresult)) { 

      $universityid = $row["university_id"]; 
    $university = $row["university_name"]; 
      echo "<option value='$universityid'>$university</option>\n"; 
    } 
} 
?> 
</select></td></tr> 

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

Мой университет запрос на данный момент

$universitysql = "SELECT * FROM university ORDER BY university_name ASC" ; 

Заранее спасибо за любую помощь. Очень признателен.

ответ

0
You have to use ajax for this. If you know Jquery it would be easier. Just include the 
jquery.js file . Then write the ajax in the onchange function of the country dropdown. 
In the onchange method just pass the id of the country. Then in your ajax method send 
id to a php page. In that page generate the whole option list from the sql query using 
that country id . Make a relation between two tables i.e every university row should 
contain country id. Then echo the option list. In your ajax method just change the 
university list dynamically using innerhtml. I am giving you example 

1. onchange on country select 

onchange="countrysortlist(this.value)" 

2. ajax method in countrysortlist function 

    $.ajax({ 
    type: 'POST', 
    url: 'yourpage.php', // change name 
    data: "countryid="+id, // country id 
    success: function(data) { // returns date 
      $('.result').html(data); // result should be the class name of university dropdown 

    } 
}); 
+0

Я создал все, что вы сказали. Я включил файл jquery, затем я поместил код ajax в функцию countrysortlist в другой файл js, который я использую, и я сделал свою php-страницу, чтобы получить результаты и распечатать результаты запроса. Однако когда я выбираю страну, ничего не меняется? (На данный момент я поставил несколько университетов для тестирования) Знаете ли вы, что может быть неправильно, и делает все, что я сделал, правильно звучит? Благодарю. –

+0

С тех пор я получил выбор страны, чтобы что-то сделать, но ничто не появляется в выпадающем списке университета. На странице загружаются все университеты, но когда я сортирую по странам, выпадающее меню uni становится пустым и не показывает unis для этой страны. Любые идеи, почему они не показываются? Еще одна пара вопросов: использовать эхо или печать, а также мне нужно включить инструкции if, которые я показал в моем коде выше, или они просто появятся в любом случае после запуска запроса сортировки? А также я могу показать все университеты на загрузке, как я уже делаю, или это влияет на то, почему он не работает? –

+0

Сделайте одно: просто сообщите данные внутри успеха: функция, чтобы увидеть, какие значения приходят с php-страницы ... в противном случае вам нужно будет изменить ur php-код. –

1

Вы можете сделать что-то подобное с JavaScript:

<script type="text/javascript"> 
function countrysortlist() 
{ 
    document.form_name.submit(); 
} 
</script> 

При изменении выбора параметра, сайт будет обновляться заполнив форму

<form name='form_name' action='' method='get'> 
<select name="academicdropdown" onchange="countrysortlist()" style="width:178px"> 
... 
</select> 
</form> 

Тогда запрос будет загружать только были представлены университеты внутри страны.

<?php 
$country_id = $_GET['academicdropdown']; 
$universitysql = "SELECT * FROM university where countryid = '$country_id' ORDER BY university_name ASC" ; 
?>