【问题标题】:Dropdown based on previous dropdown using php class基于使用 php 类的先前下拉列表的下拉列表
【发布时间】:2014-07-31 22:00:44
【问题描述】:

我的页面中有以下下拉菜单

<label for="state">State: </label>
<select name="state" class="dropdown">
<option value="" selected>Please Select</option>
<?php echo $states->getStates(); ?>
</select>

下拉菜单本身可以正常工作,并且可以自行填充状态。但是现在我希望它能够选择一个州,并根据该州的城市下拉菜单显示该州的相应城市。

下面是我的课程。我只是不知道如何调用 myclass 的 getCity 函数并将状态下拉列表中的选定值传递给它。

states.php

class states{
function getStates(){
        $success = false;
        try{
            $con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD ); 
            $con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
            $sql = "SELECT DISTINCT(state) FROM tbl_zip ORDER BY state ASC";

            $stmt = $con->prepare( $sql );
            $stmt->execute();


            $valid = $stmt->fetchAll();

            if( $valid ) {
                $success = true;
                    $list = "";
                    // Loop through list of states
                    foreach($valid as $row) {
                        $list .= '<option value=\"' . $row["state"] .'\">' . $row["state"] . '</option>';
                    }   

            }


            $con = null;
            return $list;
         }catch (PDOException $e) {
             echo $e->getMessage();
             return $success;
         }
    }

    function getCity($state){
        $success = false;
        try{
            $con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD ); 
            $con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
            $sql = "SELECT DISTINCT city FROM tbl_zip WHERE state = :state ORDER BY city ASC";

            $stmt = $con->prepare( $sql );
            $stmt->bindValue( "state", $state , PDO::PARAM_STR );
            $stmt->execute();


            $valid = $stmt->fetchAll();

            if( $valid ) {
                $success = true;
                    $list = '<select name=\"state\">';
                    $list .= '<option value=\"\" selected>Please Select</option>';
                    // Loop through list of states
                    foreach($valid as $row) {
                        $list .= '<option value=\"' . $row["city"] .'\">' . $row["city"] . '</option>';
                    }   
                    $list .= '</select>';
            }


            $con = null;
            return $list;
         }catch (PDOException $e) {
             echo $e->getMessage();
             return $success;
         }
    }                                               
}

【问题讨论】:

  • 通常,人们通过AJAX调用来实现这种功能,你对city.php页面进行get/post调用并获取返回array/json代码并使用javascript更新city dropdown的值.

标签: php drop-down-menu cascadingdropdown


【解决方案1】:

不确定,到底是什么让你烦恼,但是这个怎么样:

$city = $states->getCity($_POST['state']);

【讨论】:

  • 看起来不错,但我没有意识到我可以直接在课堂上发帖
  • 但是当用户选择一个状态时我怎么能做到这一点?
  • 这很简单。只需添加这样的帖子数据检查 if (isset($_POST['state'])) {} 并相应地填充您的选择元素。因此,当用户提交您的表单时,页面会重新加载并发布发送的数据。如果选择并通过了州,则将填充带有城市列表的第二个选择。当然,它可以在不重新加载页面的情况下完成,但我想你现在应该学习基础知识。
猜你喜欢
  • 2019-10-27
  • 2011-10-10
  • 2019-12-21
  • 2017-08-12
  • 1970-01-01
  • 2016-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多