How to make cascading drop-down lists using mysql and php

后端 未结 2 1209
灰色年华
灰色年华 2020-12-12 05:31

I have to make a form with multiple drop-down menus that modify one another. The menus/database tables are:

Categories, Styles, Types, and Mechanisms

I have

相关标签:
2条回答
  • 2020-12-12 05:49

    option must be array.

    $options[]="<OPTGROUP LABEL=\"$category_name\"> <br />";
    <SELECT NAME="category_id">
       <?php foreach ($options as $value) 
               echo $value?>
    </SELECT>
    
    0 讨论(0)
  • 2020-12-12 05:52

    Finally just had to figure it out on my own, but thanks for those who tried to help.

    I will post my middle table from my Class/Category/Style/Type cascading tables. First make a function such as the below:

     <?php //Category Selection
        function Category_Selection($link) {
            global $connection;
            $options="";
            if(isset($_GET["class_id"])) {
                $query="SELECT categories.category_id, categories.Category_Name ";
                $query.="FROM categories ";
                $query.="ORDER BY categories.Category_Name ASC";
                $result=mysql_query($query, $connection);
                $class_id=$_GET['class_id'];
    
                if(!$result){
                    die("Database query failed: " . mysql_error());
                }
                while ($row=mysql_fetch_array($result)) {
                    $name=$row["Category_Name"];
                    $id=$row["category_id"];
                    $link2=$link."&category_id={$id}";
                    $options.="<OPTION VALUE=\"$link2\" ";
                    if(isset($_GET["category_id"])) {
                        $category_id = $_GET['category_id'];
                        if($id==$category_id) {
                            $options.=" selected=\"selected\" ";
                        }
                    }
                    $options.=" >".$name.'</OPTION>';
                }
            } else {
                $options.="<OPTION selected=\"selected\" VALUE=0>First Select Class</OPTION>";
            }
            return($options);
        }
    ?>
    

    Then place on your main page:

    <?php session_start() ?>
        //Category
        if(isset($_GET['category_id'])) {
            $category_id=$_GET['category_id'];
            setcookie('category_id',$category_id);
            $link.="&category_id={$category_id}";
        }elseif(isset($_COOKIE['category_id'])) {
            $_GET['category_id']=$_COOKIE['category_id'];
            $category_id=$_COOKIE['category_id'];
            $link.="&category_id={$category_id}";
        }
    

    Now make your selection drop-down:

    <?php //Category Selection
                    $options=Category_Selection($link);
                ?>
                <center>
                <SELECT NAME="category_id" ONCHANGE="location = this.options[this.selectedIndex].value;">
                    <OPTION VALUE=0></OPTION>
                    <?php echo $options ?>
                </SELECT>
                </center>
    

    Repeat above for each required drop-down.

    Good luck...and, of course use MYSQLi to protect your site rather than the MYSQL shown above...

    0 讨论(0)
提交回复
热议问题