Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从属下拉列表未显示下拉列表数据_Php_Ajax_Drop Down Menu - Fatal编程技术网

Php 从属下拉列表未显示下拉列表数据

Php 从属下拉列表未显示下拉列表数据,php,ajax,drop-down-menu,Php,Ajax,Drop Down Menu,我试图创建一个相关的下拉列表,人们可以根据南、北、东、西等地区选择特定的商店。 我创建了一个数据库,其中有4列,如id、region\u id、region、store name。我有两个下拉列表,一个显示区域,另一个显示商店名称。这两个函数都是从数据库中调用的。区域下拉列表显示所有区域。但存储名称为空。 我正在尝试按区域id获取存储。如果区域id=='',则它将在区域id获取匹配项的位置调用select查询。如果我做错了什么,我需要帮助。这就是为什么我没有得到结果 代码: dashboard.

我试图创建一个相关的下拉列表,人们可以根据南、北、东、西等地区选择特定的商店。 我创建了一个数据库,其中有4列,如id、region\u id、region、store name。我有两个下拉列表,一个显示区域,另一个显示商店名称。这两个函数都是从数据库中调用的。区域下拉列表显示所有区域。但存储名称为空。 我正在尝试按区域id获取存储。如果区域id=='',则它将在区域id获取匹配项的位置调用select查询。如果我做错了什么,我需要帮助。这就是为什么我没有得到结果

代码: dashboard.php

<tr>
    <th>
    <label for="inputPassword3" class="col-md-5 control-label">Date</label>
        <div class="col-md-6">
            <input type="date" class="form-control  c-square c-border-2px c-theme" id="inputEmail3-55" placeholder="" name="date"> 
        </div>
    </th>
    <th> 
        <div class="form-group">
        <label for="inputPassword3" class="col-md-3 control-label">Region</label>
            <div class="col-md-6">
                <select class="form-control  c-square c-border-2px c-theme" name="region" id="region">
                <?php 
                    $sql = mysqli_query($link, "SELECT DISTINCT region FROM store_details");
                    while ($row = $sql->fetch_assoc()){
                    echo "<option value=\"owner1\">" . $row['region'] . "</option>";
                    }
                ?>
                </select>
            </div>
        </div>
    </th>
    <?php $region_id =(isset($_POST['region_id']));{
            echo $region_id;
    }?>
    <th>
        <div class="form-group">
            <label for="inputPassword3" class="col-md-6 control-label">Store Name</label>
                <div class="col-md-6">
                    <select class="form-control  c-square c-border-2px c-theme" name="store_details" id="states-list">
                    <option value=''>Select Store</option>
                    </select>
                </div>
        </div>
    </th>
</tr>
SerachRegion.php

<?php
    require_once('DbConnection.php');
    if(isset($_POST['region_id'])){
    $region_id =$_POST['region_id'];
}
    if($region_id!=''){
        $states_result = $conn->query('select * from store_details where region_id='.$region_id.'');
        $options = "<option value=''>Select store</option>";
        while($row = $states_result->fetch_assoc()){
            $options .= "<option value='".$row['region_id']."'>".$row['name']."</option>";
        }
        echo $options;
        }
?>
Ajax代码:

<script>
$('#region').on('change', function(){
var region_id = $(this).val();
$.ajax({
type: "POST",
url: "SearchRegion.php",
data:{region_id:region_id},
success: function(result){
$("#states-list").html(result);
}
});
});

</script>
我已经检查了DbConnection.php文件,它工作正常。问题是:


商店名称下拉列表为空。我没有收到任何错误。

在成功调用中检查结果是否为空,然后将结果附加到id 第一次更改时,请清除最旧的状态,以便新值出现在该位置

<script>
$('#region').on('change', function(){
    $("#states-list").html(''); // empty the currnt values
        var region_id = this.value;
        $.ajax({
        type: "POST",
        url: "SearchRegion.php",
        data:'region_id='+region_id,
        success: function(result){
        $("#states-list").append(result); // then append new values
        }
    });
});
</script>

在PHP函数中,检查post值的isset。如果您检查isset,它将仅为该变量返回true或false

例如:

$expected_array_got_string = 'somestring';
var_dump(isset($expected_array_got_string['some_key']));
输出将是:

bool(true)
因此,您需要更改变量声明,如下所示:

    if(isset($_POST['region_id'])){
       $region_id =$_POST['region_id'];
    }
在Ajax中,您需要获得以下类型的值:

$('#region').on('change', function(){
        var region_id = $(this).val();
        $.ajax({
          type: "POST",
          url: "SearchRegion.php",
          data:{region_id:region_id},
          success: function(result){
            $("#states-list").html(result);
        }
        });
    });
编辑:

这是从我这里开始测试的:示例代码是

test1.php

change.php


在ajax调用中试试这个

你有$'region'。在'change'上,函数{,但是我没有看到id=region,只有name=regionregion是第一个region下拉列表的id。你检查过你的浏览器控制台,看你的ajax是否启动了吗?嘿,我试过这种方法。但是它不起作用,你的回答也不起作用。运气不好。我还遗漏了什么。我真的很想知道你在SearchRegion.ph中的帖子值是多少p?再次在SearchRegion.php文件中打印post值不走运。下拉列表为空白。我收到错误:未定义变量:isset和致命错误:函数名必须是以下内容的字符串:if$isset$\u post{$region\u id=$\u post['region\u id'];}在ajax中尝试此变量声明:var region\u id=$'region'。查找:selected.text;
<html>
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
</html> 
<select id="_city">
    <option value="1">
        ONE
    </option>
    <option value="2">
        TWO
    </option>
    <option value="3">
        THREE
    </option>
</select>

<select name="store_details" id="states-list">
    <option value=''>Select Store</option>
</select>
<script>    
 $(document).ready(function () {
    $('#_city').on('change', function(){
          var region_id = this.value;
          $.ajax({
          type: "POST",
          url: "change.php",
          data:{region_id : region_id},
          success: function(result){
                $("#states-list").html(result);
            }
        });
    });
 });
</script>
<?php

if(isset($_POST['region_id'])){
       $region_id =$_POST['region_id'];
       echo '<option value="'.$region_id.'">'.$region_id.'</option>' ;

       exit;
    }
?>