在多选下拉列表中查询来自多个父项的多个子项

时间:2015-07-13 04:07:04

标签: php select multiple-select

我在选定的多个省份显示多个城市/城镇时遇到问题。 我现在有什么代码,只是为了显示所有地区,省和市/镇 这是它的外观:http://screencast.com/t/VsGUZfQcBF 码: http://pastebin.com/0HmmT35m

1 个答案:

答案 0 :(得分:0)

如果要动态显示所选省/地区的城市

,则必须混合使用javascript和php
  • 检索所选选项的值,然后使用javascript将数组发布到php并使用select sql查询中的“in”语句

首先,您必须仅填充区域字段,并且在选择区域时,您可以触发javascript以发布所选区域,然后使用返回的结果填充省(与省和城市相同)

区域示例:

Javascript:

// post the value to php
var region = $('#region').val();
$.ajax({
url: 'retrieve_province.php',
data: region, 
dataType: 'json', 
success: function(json) {
 $.each(json, function(index, value) { 
 $('#province').append('<option value="'+ value+'">'+ value +'</option>');
});

}
}); 

PHP:(retrieve_province.php)

<?php

// --- PDO Connexion to database  
try {  
$db1 = new PDO('mysql:dbname=dbname;host=localhost', 'user', 'password');
} catch (PDOException $ex) {  
echo 'Connection failed: ' . $ex->getMessage();  
}  

// Explode the array to get the right mysql syntax
if(isset($_GET['region'])) {
$type = $_GET['region'];
$datasregion ='';

foreach($type as $val) {
  $datasregion .= "'".$val."',";
}

$datasregion = "(".substr($datasregion,0,-1).")";
}

// Execute the query
$sql_province="SELECT * FROM tbl_province where region in $datasregion ORDER   BY name ASC";
 $results = $db1->query($sql_province) or die(print_r($db1->errorInfo()));

// results
while($donnees = $results->fetch(PDO::FETCH_ASSOC)) {

    $json[$donnees['pt_id']][] = utf8_encode($donnees['name']);
}

// send results to javascript
echo json_encode($json);


?>

然后你必须为省/市做同样的事情