2012-11-27 48 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)'部分得到什么? –

相关问题