【问题标题】:how to auto complete cities list based on entered state name in PHP MySQL and JQuery如何根据在 PHP MySQL 和 JQuery 中输入的州名自动完成城市列表
【发布时间】:2016-06-13 13:02:09
【问题描述】:

我可以使用下面提到的脚本独立地自动填充(完成)州和城市文本框。

但我想做以下事情。

  • 首先我在状态文本框中输入状态名称,然后从建议状态列表中选择任何状态。

  • 我在城市文本框中输入城市名称后,但当时建议的城市列表应根据所选状态进行过滤。

  • 例如:首先我在州文本框中输入/选择“纽约”,然后当我在城市文本框中输入城市名称时,我应该只获得“纽约”州的建议城市列表。

请告诉我我需要在脚本中进行哪些更改才能获得所需的结果。

注意:statepkid 字段在 tr_cities 表中可用于关系。

index.php

<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script>
    $(function() {
        $( "#statename" ).autocomplete({
          source: 'search.php'
        });
    });
    $(function() {
        $( "#cityname" ).autocomplete({
          source: 'c_search.php'
        });
    });
</script>

<div class="ui-widget">
    <label for="statename">State: </label>
    <input id="statename">

    <label for="cityname">City: </label>
    <input id="cityname">
</div>

search.php(用于状态)

$dbHost = 'localhost';
$dbUsername = 'root';
$dbPassword = 'password';
$dbName = '10000dbname';
$db = new mysqli($dbHost,$dbUsername,$dbPassword,$dbName);
$searchTerm = $_GET['term'];
$query = $db->query("SELECT * FROM tr_states WHERE statename LIKE '%".$searchTerm."%' ORDER BY statename ASC");
while ($row = $query->fetch_assoc()) {
    $data[] = $row['statename'];
}
echo json_encode($data);

c_search.php(针对城市)

$dbHost = 'localhost';
$dbUsername = 'root';
$dbPassword = 'password';
$dbName = '10000dbname';
$db = new mysqli($dbHost,$dbUsername,$dbPassword,$dbName);
$searchTerm = $_GET['term'];
$query = $db->query("SELECT * FROM tr_cities WHERE city LIKE '%".$searchTerm."%' ORDER BY city ASC");
while ($row = $query->fetch_assoc()) {
    $data[] = $row['city'];
}
echo json_encode($data);

【问题讨论】:

  • 尝试获取状态值并将其传递给source: c_search.php?state={value}`。并在您的查询中应用过滤器
  • 所以你想要“级联”或“依赖”下拉菜单

标签: php jquery mysql


【解决方案1】:

在你的 JS 中

source: 'c_search.php?state=' + $('#statename').val()

在php文件中

我假设你的城市表中的列名是state_id

if(isset($_GET['state'])){
$stateid = $_GET['state'];
    $query = $db->query("SELECT * FROM tr_cities WHERE city LIKE '%".$searchTerm."%' AND state_id = ".$stateid."  ORDER BY city ASC");
}else{
    $query = $db->query("SELECT * FROM tr_cities WHERE city LIKE '%".$searchTerm."%' ORDER BY city ASC");
}

【讨论】:

  • 最初我无法在 if 条件和 sql 查询 (ANS -> AND) 中发现一个语法错误(一个缺失)和一个拼写错误,因此它不起作用,但现在它工作正常。非常感谢您的帮助。
  • @KAhir :感谢您通知错误。很高兴知道它有效。
  • 脚本存在小问题。它给出了相同的城市建议列表,没有我选择纽约或新泽西作为州。你能帮忙解决这个问题吗?
  • 你能创建一个jsfiddle吗
  • 如何将 PHP 代码添加到 jsfiddle 中?抱歉,我不太熟悉。
猜你喜欢
  • 1970-01-01
  • 2011-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-28
  • 2013-02-11
  • 1970-01-01
相关资源
最近更新 更多