Mysql 从上一个下拉列表填充下拉列表-使用AJAX、PDO、jQuery

Mysql 从上一个下拉列表填充下拉列表-使用AJAX、PDO、jQuery,mysql,Mysql,我是使用PHP和mySQL的新手,所以我完全知道我可能犯了一些非常“noob”的错误。然而,当我从mySQL中填充第二个下拉列表时,我真的被卡住了,因为之前的下拉列表中已经选择了一个选项 我尝试过所有的论坛,也尝试过示例脚本,但是每次,尽管在互联网上尝试了不同的示例,我还是会继续出错。所以我希望有人能帮助我 我正在尝试建立一个小型电影网站,有人可以选择一部电影,然后选择一个日期和时间等。我使用mySQL填充下拉列表,但当我想填充第二个下拉列表时,会被卡住,因为它依赖于第一个选择选项 我尝试过使用

我是使用PHP和mySQL的新手,所以我完全知道我可能犯了一些非常“noob”的错误。然而,当我从mySQL中填充第二个下拉列表时,我真的被卡住了,因为之前的下拉列表中已经选择了一个选项

我尝试过所有的论坛,也尝试过示例脚本,但是每次,尽管在互联网上尝试了不同的示例,我还是会继续出错。所以我希望有人能帮助我

我正在尝试建立一个小型电影网站,有人可以选择一部电影,然后选择一个日期和时间等。我使用mySQL填充下拉列表,但当我想填充第二个下拉列表时,会被卡住,因为它依赖于第一个选择选项


我尝试过使用AJAX,但没有效果。我很感激我可能犯了一些新手错误,可能会混淆变量,但如果有人能说明我错在哪里,我将非常感激

你的问题我以前在选择国家和城市时遇到过

这里有一个很好的教程来做这个技巧


您在getDates.php上有一个小错误

<?php
    require("Connect.php");

    $name = (!empty($_REQUEST["name"])) ? trim($_REQUEST["name"]) : "");
    if (!empty($name)) {
        $sql = "SELECT Dates FROM Cinema WHERE name = $name";
        try {
            $stmt = $DB->prepare($sql);
            $stmt->bindValue("tn", trim($name));
            $stmt->execute();
            $results = $stmt->fetchAll();
        } catch (Exception $ex) {
            echo($ex->getMessage());
        }
        if (count($results) > 0) {
        ?>
        <label>Dates: 
            <select name="Dates">
                <?php foreach ($results as $rs) { ?>
                <option value="<?php echo $rs["Dates"]; ?></option>
                <?php } ?>
            </select>
        </label>
        <?php
        } 
    }
?>
请尝试并反馈index.php

<?php
    require Connect.php;
?>
<!DOCTYPE html>
<html>
<head>
    <title>Films for Family!!</title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <script type="text/javascript"> 
    function Datesforfilms(sel) {
        var name = sel.options[sel.selectedIndex].value;
        $("#output1").html("");
        $.ajax({
            type: "POST",
            url: "getDates.php",
            data: "name=" + name,
            cache: false,
            success: function(html) {
                $("#output1").html(html);;
            }
        });
    }
    </script>
</head>
<body>
    <div class="welcome">
        <h1>Films for Family</h1>
    </div>

    <div class="SelectFilm">

        <h3> Step 1: </h3>
        <p> *Select a film*</p>       

        <form name="Filmform" method="get">
            <select name="Select a Film" onChange="Datesforfilms(this);">
                <option value="0">Select a Film</option>
                <?php
                $sql = "SELECT name FROM company";
                $handle = $conn->prepare($sql);
                $handle->execute(array($sql));
                $res = $handle->fetchAll();
                foreach($res as $movie) { ?>
                    <option value="<?=$movie['name']?>"><?=$movie['name']?></option>
                <?php } ?>
            </select>
            <div id="output1"></div>    
        </form>    
    </div>     
</body>
</html>
getDates.php

<?php
require("Connect.php");

$name = (!empty($_POST["name"]) ? trim($_POST["name"]) : "");
if (!empty($name)) {
    $sql = "SELECT Dates FROM Cinema WHERE name = $name";
    try {
        $stmt = $DB->prepare($sql);
        $stmt->bindValue("tn", trim($name));
        $stmt->execute();
        $results = $stmt->fetchAll();
    } catch (Exception $ex) {
        echo($ex->getMessage());
    }
    if (count($results) > 0) {
?>
        <label>Dates: 
            <select name="Dates">
                <?php foreach ($results as $rs) { ?>
                    <option value="<?php echo $rs["Dates"]; ?>"><?php echo $rs["Dates"]; ?></option>
                <?php } ?>
            </select>
        </label>
    <? } ?>
<? } ?>

第一个代码块末尾的$results变量来自哪里?这可能是$res的错别字吗?感谢您的回复-我在当天早些时候尝试了这个示例,但有些代码现在已被弃用,因此我不确定从何处开始..:谢谢你的帮助-它在最后一行读到了意想不到的文件结尾-你知道它是什么吗?所以看起来getDates的php脚本现在可以工作了。但是,我无法使用html填充结果。我在这里迷路了,非常感谢你的帮助!顺便说一句,你应该对SQL注入和脚本注入保持警惕——如果我知道你,我会使用MVC,比如CakePHP,这会让你的生活更轻松谢谢法赫德的帮助!我又试过了,但还是没有成功。它不断抛出以下错误>>未找到列:“where子句'>语法错误或访问冲突中的1054未知列“ELF”:1064您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解第1行“傻瓜”附近使用的正确语法。为什么这里有三个答案?你应该编辑其中一个以包含你想要展示的所有信息,并删除其他信息。2,使之成为3@JayBlanchard@JayBlanchard-我又学到了一些东西:-第一个答案是编辑他的代码,第二个是我的代码