【发布时间】: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