2015-09-03 107 views
3

我想从基于另一个组合框的组合框中的mysql中获取数据。它根据选择获取数据。 但问题是我并没有以适当的方式得到结果数据。组合框不是作为组合框填充,但像文本

enter image description here

,另一个问题是,我想在页面加载时要显示的数据也不仅当我改变选择。 当页面加载时不显示任何测试名称但改变后显示。 enter image description here

请大家帮忙。非常感谢

的.js代码:

<script type="text/javascript"> 
$(document).ready(function() 
{ 
$(".country").change(function() 
{ 
var id=$(this).val(); 
var dataString = 'id='+ id; 

$.ajax 
({ 
type: "POST", 
url: "ajax_city.php", 
data: dataString, 
cache: false, 
success: function(html) 
{ 
$(".city").html(html); 
} 
}); 

}); 
}); 
</script> 

的index.php:

<html> 
<head> 
<script src="assets-global/js/getdata/jquery.min.js"></script> 
</head> 
<body> 
<select name="country" class="country" style="width:625px;"> 
     <?php 
     include('con_pick.php'); 
     $query = "select * from main_cats"; 
     $results = mysql_query($query); 

     while ($rows = mysql_fetch_assoc($results)) 
     { 
     $idc = $rows['id']; 
     $q_selected_cat = mysql_query("SELECT mcat_id FROM questions WHERE mcat_id='$mcat_id' "); 
     $category = mysql_fetch_assoc($q_selected_cat); 
     $selected_category = $category['mcat_id']; 
     if($idc == $selected_category){ 
     ?> 
      <option selected value="<?php echo $rows['id'];?>"><?php echo $rows['unique_name'];?></option> 
     <?php }else{ ?> 
     <option value="<?php echo $rows['id'];?>"><?php echo $rows['unique_name'];?></option> 
     <?php } } ?> 
</select> 
<select name="city" class="city"></select> 
</body> 
</html> 

ajax_city.php:

<?php 
include('con_pick.php'); 
if($_POST['id']) 
{ 
$id=$_POST['id']; 


$q_all_categories1 = mysql_query("SELECT * FROM tests where mcat_id=$id"); 
while ($all_categories1 = mysql_fetch_array($q_all_categories1)) 
{ 
    $category_id1 = $all_categories1['id']; 
    $categories_name1 = $all_categories1['unique_name']; 

    $q_selected_cat1 = mysql_query("SELECT test_id FROM questions WHERE test_id=$test_id and id =$cats_id "); 

    $selected1 = ""; 
    while ($category1 = mysql_fetch_array($q_selected_cat1)) 
    { 
     $selected_category1 = $category1['test_id']; 
     if($category_id1 == $selected_category1){$selected1 = "selected";} 
    } 
    print "<option class='' ".$selected1." value='".$category_id1."'>".$categories_name1."</option>"; 
    $selected1 = ""; 
} 

} 

?> 

回答

0

你的第一个问题: 你的截图(约类别会谈)似乎不符合代码(谈论国家)。 看来你缺少从index.php的“城市”,所以补充说:

<select name="city" class="city"></select> 

此外,我会在你的Ajax调用使用数据:

data: { 
    'id': id 
}, 

是否如预期般的东西不工作,尝试console.log(你的结果)。它可能是PHP脚本发出警告或超时?

您的第二个问题: 加载页面后,您可以调用change()事件 - 就好像用户导致了更改。从这里:https://api.jquery.com/change/

手动触发事件,应用.change()不带参数

另外: 您的ajax_city.php代码不验证其输入,但把它变直SQL服务器。设想$ _POST ['id']是这样的文本:“0; DROP TABLE测试;” - 你会失去你的桌子。在$ _POST ['id']之前的一个简单的(int)会阻止(但是在SQL注入中读取)。

+0

抱歉错误没有粘贴现在编辑的城市的其他选择。 如果你编辑我的代码并重新发布它,你会如此友善吗? –

+1

你可以看看这个小提琴:https://jsfiddle.net/bubgym6e/ –

+0

@赫伯特范弗利特谢谢你的回应。但我无法弄清楚,当我试图用这与MySQL它没有得到的数据。请看我的代码,如果你可以配置一切与我的代码,并尽可能工作,如果可能的话......非常感谢提前 –