【问题标题】:Auto select from db从数据库中自动选择
【发布时间】:2011-04-20 11:52:41
【问题描述】:

我想做以下事情,这里是简单的选择,它从 db 获取信息。我有一个 db 有 id/city/people.SO 这就像一些示例选择

  Select1|Select2|
    City1   |2    
    City2   |Poeple2      
    City3   |People3      
    City4   |People1        
    City5   |PopleFromFirstCity  

这就是我想要做的,当我从第一个选择中选择某个城市时,我希望在第二个选择中 Select2 输出自动更改为我在第一个选择中设置的内容,所以如果我选择 City1,第二个选择有 PeopleFromFirstCityPeople1

【问题讨论】:

  • 这没什么意义。能说清楚点吗?
  • 您的问题非常模糊,很难看出“City1”和“People1”之间的任何关系。也许如果你解释一下 Select1 和 Select2 之间的关系,它可能会帮助人们回答你的问题。
  • 对我来说仍然没有任何意义。我假设您尚未规范化数据库。你有 2 张桌子,一张桌子是城市,另一张桌子是人吗?
  • 我有一张桌子,里面有城市和人的栏目
  • 如果所有数据都在一个表中,则不需要有两个选择框。如果是真的,那么cityX 只有一个PersonX(反之亦然),但如果CityX 确实有PersonX、PersonY、PersonZ,那么您必须将表拆分为关于要完成的3NF 的两个表。 .. 然后,您将拥有一个包含 id|city 列的表和另一个包含 id|city_id|person 列且关系 Persons.city_id -> Cities.id 的表。之后,您可以使用 JavaScript (AJAX) 加载第一次选择中选择的城市中的所有人员,并使他们成为第二次选择的选项...

标签: php javascript jquery mysql html


【解决方案1】:

对于第一个选择,请执行以下操作:

 <form>
 Select city: <select name="cities" onchange="showCity(this.value)">
 <option value="0">Chose city...</option>
 <?php          
 $sql="SELECT id,city FROM table1 ORDER BY ID DESC";      
 $result = mysql_query($sql);
 while($row = mysql_fetch_array($result))
 {
 echo"<option value=" . $row[id] . ">" . $row[city] . "</option>";
 }
 ?>
 </select></form>

对于 selection2 的输出,制作 div:

<div id="txtHint"></div>

现在制作第二个包含人物的表table2,并制作.js文件

var xmlhttp;

function showCity(str)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
{
alert ("Browser does not support HTTP Request");
return;
}
var url="http://fullpathtoselection2file/selection2.php"; // Example: http://www.site.com/files/selection2.php
url=url+"?q="+str;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChanged()
{
if (xmlhttp.readyState==4)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
      }
if (window.ActiveXObject)
{
// code for IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}

在你的文件中实现选择 1 这个 js 文件。 现在进行选择 2:

<?php
// Get city id
$q=$_GET["q"];
// Select from SQL where city = city id
$sql="SELECT peoples,city_id FROM table2 WHERE city_id = '".$q."' order by id desc";

$result = mysql_query($sql);

// echo it
while($row = mysql_fetch_array($result))
{
echo $row['peoples'];
}

您如何拥有 2 张桌子。表 1 为城市,第二表 2 为人民。例如,当您从管理面板更新数据库时,您需要更新 2 个表。为人民和城市。 对于表 1 需要包含:id、city... 表 2 需要包含 id、peoples、city_id。

代码未经测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-24
    • 2012-01-01
    • 2010-12-11
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    相关资源
    最近更新 更多