Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.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
动态下拉式Ajax PHP请求_Php_Mysql_Ajax - Fatal编程技术网

动态下拉式Ajax PHP请求

动态下拉式Ajax PHP请求,php,mysql,ajax,Php,Mysql,Ajax,我试图在表单中创建一个动态填充的下拉列表,用于位置选择。我在其他问类似问题的帖子和一些网站上搜索了一下,但我的第二个下拉列表总是空白的 第一个下拉列表是通过MySQL查询填充的 表格部分 关于如何填充下拉列表的任何想法似乎都是数据库的问题。 您可以使用mysqli_REPORT mysqli_REPORT_ALL;看看发生了什么 检查ajax_county.php,最后,它可以创建一个无限循环。 您正在使用数据库,所以可能会遇到问题 不管怎样,我准备了一个应该适合你的代码 请注意,我再次修改了您

我试图在表单中创建一个动态填充的下拉列表,用于位置选择。我在其他问类似问题的帖子和一些网站上搜索了一下,但我的第二个下拉列表总是空白的

第一个下拉列表是通过MySQL查询填充的

表格部分


关于如何填充下拉列表的任何想法似乎都是数据库的问题。 您可以使用mysqli_REPORT mysqli_REPORT_ALL;看看发生了什么 检查ajax_county.php,最后,它可以创建一个无限循环。 您正在使用数据库,所以可能会遇到问题

不管怎样,我准备了一个应该适合你的代码

请注意,我再次修改了您的代码,仅用于测试目的,仅使用getCouncils函数,数据库查询有点不同

index.php

Database.php

<?php
class Database{
public static $host = "localhost";
public static $dbName = "yourdatabase";
public static $username = "root";
public static $password = "";

private static function connect() {
    $pdo = new PDO("mysql:host=".self::$host.";dbname=".self::$dbName.";charset=utf8", self::$username, self::$password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    return $pdo;
}

//GET COUNCILS  
    public static function getCouncils($id) {
        $con = new Database();
            $con->connect();
            $stmt = self::connect()->prepare("SELECT * FROM councils where council_id = $id");
            $stmt->execute();
            
            $councils = $stmt->fetchAll();
            foreach ($councils as $row):
            echo "<option value=".$row['council_id'].">".$row['council_name']."</option>";
            endforeach; 
    }
}
ajax_county.php


这似乎是数据库的问题。 您可以使用mysqli_REPORT mysqli_REPORT_ALL;看看发生了什么 检查ajax_county.php,最后,它可以创建一个无限循环。 您正在使用数据库,所以可能会遇到问题

不管怎样,我准备了一个应该适合你的代码

请注意,我再次修改了您的代码,仅用于测试目的,仅使用getCouncils函数,数据库查询有点不同

index.php

Database.php

<?php
class Database{
public static $host = "localhost";
public static $dbName = "yourdatabase";
public static $username = "root";
public static $password = "";

private static function connect() {
    $pdo = new PDO("mysql:host=".self::$host.";dbname=".self::$dbName.";charset=utf8", self::$username, self::$password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    return $pdo;
}

//GET COUNCILS  
    public static function getCouncils($id) {
        $con = new Database();
            $con->connect();
            $stmt = self::connect()->prepare("SELECT * FROM councils where council_id = $id");
            $stmt->execute();
            
            $councils = $stmt->fetchAll();
            foreach ($councils as $row):
            echo "<option value=".$row['council_id'].">".$row['council_name']."</option>";
            endforeach; 
    }
}
ajax_county.php


你好,阿尔文,谢谢你的回答,但县选择框在地区选择更改后仍然变为空白。你好,多米尼克,如果你没有激活mysqli_报告,我建议你使用它来查看查询不起作用的原因。可能与数据库连接有关,我已经用连接的方式更新了答案。我希望能有所帮助,谢谢你的回复。我似乎没有从php文件中获取任何数据返回页面上的ajax请求。我分别检查了连接,mysql查询很好,连接也很好。我只是好像没办法把数据拿回来。我的routing Route::set与此有关吗?如果我添加:``成功:functionreply{console.logreply;alertreply;},错误:函数{alert'error Occursed';}``控制台显示:**jquery.min.js:4 XHR已完成加载:POST.**警报只是说:Localhost说它是空白的。你能确认ajax_county.php文件正在检索数据吗?使用$dist=SOMEVALIDVALUE在浏览器中打开文件;看看它是否显示了$dist specifiedHi Alvin的值,谢谢你的回答,但在地区选择更改后,县选择框仍然是空白的。你好,多米尼克,我建议你使用mysqli_报告,如果你没有激活它,看看为什么查询不起作用。可能与数据库连接有关,我已经用连接的方式更新了答案。我希望能有所帮助,谢谢你的回复。我似乎没有从php文件中获取任何数据返回页面上的ajax请求。我分别检查了连接,mysql查询很好,连接也很好。我只是好像没办法把数据拿回来。我的routing Route::set与此有关吗?如果我添加:``成功:functionreply{console.logreply;alertreply;},错误:函数{alert'error Occursed';}``控制台显示:**jquery.min.js:4 XHR已完成加载:POST.**警报只是说:Localhost说它是空白的。你能确认ajax_county.php文件正在检索数据吗?使用$dist=SOMEVALIDVALUE在浏览器中打开文件;并查看它是否显示指定的$dist中的值
<?php
if(isset($_POST['district'])){
    $district = $_POST['district'];

    $dist = new Database();
    $dist->getCouncils($district);

}else{
    echo"fail";
}

?>
<?php
class Database{
public static $host = "localhost";
public static $dbName = "domaidandb";
public static $username = "root";
public static $password = "";

private static function connect() {
    $pdo = new PDO("mysql:host=".self::$host.";dbname=".self::$dbName.";charset=utf8", self::$username, self::$password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    return $pdo;
}

//GET COUNCILS  
    public static function getCouncils($id) {
        $con = new Database();
            $con->connect();
            $stmt = self::connect()->prepare("SELECT * FROM councils_portugal where dist_parent_id = $id");
            $stmt->execute();
            
            $councils = $stmt->fetchAll();
            foreach ($councils as $row):
            echo "<option value=".$row['council_id'].">".$row['council_name']."</option>";
            endforeach; 
    }
}

Route::set('home', function(){
        Index::CreateView('Index');
    });
<?php
include('Database.php');
?>

<label for="" class="block">District
    <select id="dists" name="prop_district" class="full block" required>
        <option selected disabled>District...</option>
        <?php
            $dist = new Database();
            $dist->getCouncils(1);
            
        ?>
    </select>
</label>

<label for="" class="block">Council
    <select id="p_councils" name="prop_council" class="full block" required>
        <option selected disabled>Council...</option>

    </select>
</label>




<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
    $(document).ready(function(){
        $("#dists").change(function(){
        var id=$(this).val(); 
        
        $.ajax({
            type: "POST",
            url: "ajax_county.php",
            data: { district: id },
            success: function(html){
                console.log(html);
                $("#p_councils").html(html);
            } 
            });
            
        });
    });
</script>
<?php
class Database{
public static $host = "localhost";
public static $dbName = "yourdatabase";
public static $username = "root";
public static $password = "";

private static function connect() {
    $pdo = new PDO("mysql:host=".self::$host.";dbname=".self::$dbName.";charset=utf8", self::$username, self::$password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    return $pdo;
}

//GET COUNCILS  
    public static function getCouncils($id) {
        $con = new Database();
            $con->connect();
            $stmt = self::connect()->prepare("SELECT * FROM councils where council_id = $id");
            $stmt->execute();
            
            $councils = $stmt->fetchAll();
            foreach ($councils as $row):
            echo "<option value=".$row['council_id'].">".$row['council_name']."</option>";
            endforeach; 
    }
}
<?php

$dist = $_POST['district'];


$servername = "localhost";
$username = "root";
$password = "";
//mysqli_report();



// Create connection
$con = new mysqli($servername, $username, $password);
$con->select_db("teststack");


$stmt = $con->prepare("SELECT * FROM councils WHERE dist_parent_id = ?");
$stmt->bind_param( 'i' , $dist);
$stmt->execute();

$dists = $stmt->get_result();
$dists = $dists->fetch_all(MYSQLI_ASSOC);

echo '<option selected disabled>Councils...</option>';
foreach($dists as $r){
    echo "<option value=".$r['council_id'].">".$r['council_name']."</option>";
}