【问题标题】:Populating Drop Down List from Previous Drop Down - using AJAX, PDO, jQuery从上一个下拉列表中填充下拉列表 - 使用 AJAX、PDO、jQuery
【发布时间】:2015-12-01 18:29:05
【问题描述】:

我是使用 PHP 和 mySQL 的新手,所以我完全清楚我可能犯了一些非常“菜鸟”的错误。但是,当我从 mySQL 填充我的第二个下拉列表时,我真的被卡住了,因为从以前的下拉列表中选择了一个选项。

我已经尝试了所有论坛并尝试了示例脚本,但每次尝试互联网上的不同示例时,我都会继续出错。因此希望为什么我希望有人可以帮助我。

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

我尝试过使用 AJAX,但无济于事。感谢我在这里可能犯了一些非常菜鸟的错误(可能对变量感到困惑),但如果有人能阐明我错在哪里,我将不胜感激。

【问题讨论】:

  • 您从哪里获得第一个代码块末尾的 $results 变量?会不会是$res 的错字?

标签: mysql


【解决方案1】:

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

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

http://www.php-dev-zone.com/2013/10/country-state-city-dropdown-using-ajax.html

【讨论】:

  • 感谢您的回复 - 我在当天早些时候尝试了这个示例,但现在不推荐使用某些代码,所以我不确定从哪里开始.. :(
【解决方案2】:

你在 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
        } 
    }
?>

请尝试并反馈

【讨论】:

  • 感谢您的帮助 - 它在最后一行读取意外的文件结尾 - 你知道它是什么吗?
  • 所以看起来 getDates 的 php 脚本现在可以工作了。但是,我无法获取 html 来填充结果。我在这里很迷茫,非常感谢您的帮助!
【解决方案3】:

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>
    <? } ?>
<? } ?>

【讨论】:

  • 顺便提一下,你应该警惕 SQL 注入和脚本注入 - 如果我知道我会使用像 CakePHP 这样的 MVC,它会让你的生活更轻松
  • 感谢 Fahed 的帮助!我已经尝试再次运行它,但仍然没有运气。它不断抛出以下错误>> Column not found: 1054 Unknown column 'ELF' in 'where Clause' > 语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“白痴”附近使用正确的语法
  • 为什么这里有三个答案?您应该编辑其中一个以包含您要演示的所有信息并删除其他信息。
  • 2,把那个 3 @JayBlanchard
  • @JayBlanchard - 我又在学习一些东西 :) - 第一个答案是编辑他的代码,第二个答案是我的代码
猜你喜欢
  • 2012-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-03
  • 1970-01-01
  • 1970-01-01
  • 2013-05-07
  • 1970-01-01
相关资源
最近更新 更多