组合框不像组合框那样填充,而是像文本一样

时间:2015-09-03 07:44:26

标签: php mysql combobox

我试图从另一个组合框中的组合框中获取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 = "";
}

}

?>

1 个答案:

答案 0 :(得分:0)

你的第一期: 您的屏幕截图(谈论类别)似乎与代码不匹配(谈论国家/地区)。 看来你错过了城市&#39;来自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 Server。想象一下$ _POST [&#39; id&#39;]就是这样的文字:&#34; 0; DROP TABLE测试;&#34; - 你会失去你的桌子。在$ _POST [&#39; id&#39;]之前的一个简单的(int)会阻止它(但是读取SQL注入)。