DropDown列表不显示子类别级别

时间:2016-10-12 01:54:25

标签: javascript php jquery mysql

我有一个mySql表,包含类别和子类别。他们以" Master" number,其中master 0是相对于第一个dropDown上的选项,nexts下拉列表是根据它们的依赖项定义的。例如:如果在第一个Dd中有一个名称为A且id为1的选项,并且我希望第二个Dd的选项取决于A,我说具有名称AA且ID为110的选项具有" master&#34 ;在图1中,对于项目AB id 111和主项1以及项目AC id 112和主1进行相同的操作。

现在,我可以获得所有选项id master number等于0,这是预期的,但对于下一次下拉,我无法正确。我无法获得归因于他们的任何价值,无论是错误还是正确。

这是我的索引代码:

<?php

try {

    $objDb = new PDO('mysql:host=localhost;dbname="#$$"', '$%#$%', 'PW$#%#$%');
    $objDb->exec('SET CHARACTER SET utf8');

    $sql = "SELECT * 
            FROM `categories`
            WHERE `master` = 0";
    $statement = $objDb->query($sql);
    $list = $statement->fetchAll(PDO::FETCH_ASSOC);

} catch(PDOException $e) {
    echo 'There was a problem';
}



?>
<!DOCTYPE HTML>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>Dependable dropdown menu</title>
    <meta name="description" content="Dependable dropdown menu" />
    <meta name="keywords" content="Dependable dropdown menu" />
    <link href="css/core.css" rel="stylesheet" type="text/css" />
    <!--[if lt IE 9]>
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
</head>
<body>


<div id="wrapper">

    <form action="" method="post">

        <select name="gender" id="gender" class="update">
            <option value="">Select one</option>
            <?php if (!empty($list)) { ?>
                <?php foreach($list as $row) { ?>
                    <option value="<?php echo $row['id']; ?>">
                        <?php echo $row['name']; ?>
                    </option>
                <?php } ?>
            <?php } ?>
        </select>

        <select name="category" id="category" class="update"
            disabled="disabled">
            <option value="">----</option>
        </select>

        <select name="colour" id="colour" class="update"
            disabled="disabled">
            <option value="">----</option>
        </select>

    </form>

</div>


<script src="js/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="js/core.js" type="text/javascript"></script>
</body>
</html>

更新文件的代码:

<?php
if (!empty($_GET['id']) && !empty($_GET['value'])) {

    $id = $_GET['id'];
    $value = $_GET['value'];

    try {

        $objDb = new PDO('mysql:host=localhost;dbname=#$%', '$R#"', 'PW"#$"%');
        $objDb->exec('SET CHARACTER SET utf8');

        $sql = "SELECT * 
                FROM `categories`
                WHERE `master` = ?";
        $statement = $objDb->prepare($sql);
        $statement->execute(array($value));
        $list = $statement->fetchAll(PDO::FETCH_ASSOC);

        if (!empty($list)) {

            $out = array('<option value="">Select one</option>');

            foreach($list as $row) {
                $out[] = '<option value="'.$row['id'].'">'.$row['name'].'</option>';
            }

            echo json_encode(array('error' => false, 'list' => implode('', $out)));

        } else {
            echo json_encode(array('error' => true));
        }

    } catch(PDOException $e) {
        echo json_encode(array('error' => true));
    }

} else {
    echo json_encode(array('error' => true));
}

核心文件

var formObject = {
    run : function(obj) {
        if (obj.val() === '') {
            obj.nextAll('.update').html('<option value="">----</option>').attr('disabled', true);
        } else {
            var id = obj.attr('id');
            var v = obj.val();
            jQuery.getJSON('C:\wamp64\www\Site\Dropdown\mod\update.php', { id : id, value : v }, function(data) {
                if (!data.error) {
                    obj.next('.update').html(data.list).removeAttr('disabled');
                } else {
                    obj.nextAll('.update').html('<option value="">----</option>').attr('disabled', true);
                }
            });
        }
    }
};
$(function() {

    $('.update').live('change', function() {
        formObject.run($(this));
    });

});

基本上所有数据都在同一个表和Db下,但我无法将它们联系起来。

任何输入?

0 个答案:

没有答案