2012-11-27 83 views
2

我試圖使用另一個下拉框中的選擇來填充下拉框。我已經想出瞭如何使用數據庫中的數據來填充列表,看起來問題在於在沒有提交表單的情況下從同一頁面上的第一個下拉框中選擇它們。這是我迄今爲止所擁有的。PHP - 從下拉框中獲取選擇以便在同一頁面上的另一個下拉框中使用

<select name = "trainer_has_update_pokemon"> 
<p>Trainer</p> 
<?php 
$query = "SELECT name FROM Trainer"; 

if ($stmt = $mysqli->prepare($query)) { 
$stmt->execute(); 
$stmt->bind_result($name); 
while ($stmt->fetch()) { 
    echo"<option>$name</option>"; 
} 


$stmt->close(); 
} 


?> 
</select> 

<?php 
$trainer_name = $_GET['trainer_has_update_pokemon']; 
?> 

<p>Pokemon</p> 
<select name = "type_of_update_pokemon"> 
<?php 
$query = "SELECT DISTINCT p.name FROM Pokemon p WHERE p.owner_id = (SELECT t.trainer_id FROM Trainer t WHERE t.name = '$trainer_name')"; 
if ($stmt = $mysqli->prepare($query)) { 
$stmt->execute(); 
$stmt->bind_result($pkmn_name); 
while ($stmt->fetch()) { 
    echo"<option>$pkmn_name</option>"; 
} 
$stmt->close(); 
} 
?> 

我真的沒有在Javascript或AJAX任何經驗,所以如果有一種方法可以做到這一點如果沒有這些,那將是有益的,但如果沒有,我願意在此學習他們的應用程序案件。

+0

沒有沒有其他辦法比AJAX(撇開加載你的整個數據庫的初始頁面加載方式,然後只是改變與JavaScript的組合框) – Vultour

回答

1

不幸的是,您需要某種客戶端腳本來調用外部php頁面才能實時獲取數據。快速模仿起來會看起來像:

的javascript:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script> 
<script type="text/javascript"> 
$(function(){ //document ready 
    $('select[name="trainer_has_update_pokemon"]').change(function(){ // when trainer_has_update_pokemon changes 
     $.ajax({ 
      type:"POST", //send a post method 
      url:'ajax.php', // path to ajax page 
      data:"trainer_name="+$(this).val(), //set trainer_name to value 
      success:function(response){ // retrieve response from php 
       $('select[name="type_of_update_pokemon"]').html(response); // update select 
      } 
     }); 
    }); 
}); 
</script> 

PHP(我命名ajax.php):

<?php 
/* ADD YOUR DATABASE CONNECTION */ 
$trainer_name = $_POST['trainer_name']; // DONT FORGET TO ESCAPE!! 
$query = "SELECT DISTINCT p.name FROM Pokemon p WHERE p.owner_id = (SELECT t.trainer_id FROM Trainer t WHERE t.name = '$trainer_name')"; 
if ($stmt = $mysqli->prepare($query)) { 
    $stmt->execute(); 
    $stmt->bind_result($pkmn_name); 
    while ($stmt->fetch()) { 
     echo"<option>$pkmn_name</option>"; 
    } 
    $stmt->close(); 
}?> 
+0

我遵循你正在做的與JS和AJAX,我已經適應我的代碼使用它,但它仍然離開了我選擇了一位教練後,下拉框空了。我相信我在數據庫上有口袋妖怪,並且我使用phpMyAdmin來測試我的SQL查詢。 –

+0

一些建議。使用firebug中的控制檯選項卡(在Firefox中)確保請求成功完成。接下來,嘗試使用上面的'alert(response)':'$('input [name =「type_of_update_pokemon」]')。html(response);'並且在success:function(){}' –

+0

我看了它使用螢火蟲控制檯,並沒有任何出現任何它。 我應該從'alert(response)'部分得到什麼? –

相關問題