Php 从数据库填充相关下拉列表
我想在MIKOA下拉列表中选择一个值后填充WILAYA dropList。以下是我到目前为止所做的。但更改事件时不会填充下拉列表。到目前为止,你做错了什么 在Php 从数据库填充相关下拉列表,php,mysql,ajax,Php,Mysql,Ajax,我想在MIKOA下拉列表中选择一个值后填充WILAYA dropList。以下是我到目前为止所做的。但更改事件时不会填充下拉列表。到目前为止,你做错了什么 在first.php上 <head> <script type = "text/javascript"> function jazaWilaya (mkoa_value) { var xmlhttp = new XHMLHttpRequest ();
first.php上
<head>
<script type = "text/javascript">
function jazaWilaya (mkoa_value)
{
var xmlhttp = new XHMLHttpRequest ();
xmlhttp.onreadystatechange = function ()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
document.getElementById("wilaya").innerHTML= xmlhttp.reponseText;
}
};
xmlhttp.open ("GET", "wilaya.php?mkoa="+mkoa_value, true);
xmlhttp.send ();
}
</script>
</head>
<?php
// put your code here
$con = mysql_connect("localhost", "root", "root");
if (!$con)
{
echo mysql_error();
}
$mkoa = mysql_real_escape_string($_REQUEST["mkoa"]);
mysql_select_db("dalaliOnline", $con);
$sql = "SELECT wilaya_jina FROM WILAYA WHERE mkoa_jina ='$mkoa' ";
$result =mysql_query($sql, $con);
?>
下面是我的新答案。下面的原始答案不相关
你的JavaScript不能做任何事情,除非它有一些来自你的脚本的输出。PHP变量对它没有任何用处。一种解决方案是让wilaya.php使用原始代码为选择框创建新选项:
<?php
$con = mysql_connect("localhost", "root", "root");
if (!$con)
{
// we don't want to output anything if something goes wrong, it'll mess the select up
die();
}
$mkoa = mysql_real_escape_string($_REQUEST["mkoa"]);
mysql_select_db("dalaliOnline", $con);
$sql = "SELECT wilaya_jina FROM WILAYA WHERE mkoa_jina ='$mkoa' ";
$result = mysql_query($sql, $con);
?>
<option>Chagua</option>
<?php
while ($row = mysql_fetch_array($result))
{
?>
<option value = "<?php echo $row['wilaya_id']; ?>"><?php echo $row['wilaya_jina']; ?></option>
<?php
}
?>
(我假设下面的代码中有一些JS正在使用的输出。)
另外,必须使用mysql扩展,不推荐使用。方便时更新到PDO或mysqli。在wilaya.php中更正代码:
并从first.php文件中删除以下代码:
Wilaya:应该是
查瓜
而不是威拉亚:
查瓜
我再举一个州和城市的例子,当用户从第一个选择框中选择一个州时,第二个选择框会显示相应的城市。请尝试此操作。
这是state.php
页面
<?php
mysql_connect("localhost","root","");
mysql_select_db("statename");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script>
function showdetails(str)
{
var xmlhttp;
if (str==0)
{
alert("please select state name");
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("showresult").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","details.php?id="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<form>
SELECT STATE:
:<select name="sid" id="sid" onchange="showdetails(this.value)">
<option value="0">Select State Name</option>
<?php
$sql="select sid,statename from state";
$qry=mysql_query($sql);
$num=mysql_num_rows($qry);
if($num>0)
{
while($res=mysql_fetch_array($qry))
{
?>
<option value="<?php echo $res['sid'];?>"><?php echo $res["statename"];?></option>
<?php
}
}
?>
</select>
CITY NAMES:
<div id=showresult></div>
</form>
</body>
</html>
这里有两个表,一个是city表(cid,sid,cityname),另一个是state表(sid,state name)state表的sid是sid city表的外键
<?php
// put your code here
$con = mysql_connect("localhost", "root", "root");
if (!$con)
{
echo mysql_error();
}
$mkoa = mysql_real_escape_string($_REQUEST["mkoa"]);
mysql_select_db("dalaliOnline", $con);
$sql = "SELECT wilaya_jina FROM WILAYA WHERE mkoa_jina ='$mkoa' ";
$result =mysql_query($sql, $con);
?>
<option>Chagua</option>
<?php
while ($row = mysql_fetch_array($result))
{
?>
<option value="<?php echo $row['wilaya_id']?>"><?php echo $row['wilaya_jina'];?></option>
<?php
}
?>
在第一个.php文件中更改
维拉亚:
<select id="wilaya" name="wilaya">
<option>Chagua</option>
</select>
查瓜
我不是有意要保留它,请查看wilaya php上的编辑。注意:即使使用$_GET,它也不会运行查看我的更新-wilaya.php中还有其他代码有输出吗?wilaya.php没有输出任何内容。它只是从数据库中获取数据,这是你的问题。如果没有脚本的一些输出,JavaScript将无法执行任何操作。我现在将更新我的答案。我希望输出显示在WILAYA dropdownlist上;我在SELECT元素的选项标记之间保留了一条echo语句我按照指示做了,我找不到错误,但第二个lıst不会加载。我的Javascript代码写对了吗?@Buzuka是的,你的Javascript代码写对了。但是在ajax调用中,您需要在服务器端脚本中回显或打印您的输出,并通过javascript在特定元素中编写此响应。您发布了答案或一些您认为适合答案的代码??是的,尝试一下这可能会帮到您,而不是像上述问题一样的答案@Arif_suhail_123对不起,您说了什么,如果我理解正确的话,你说的可能对我有帮助不是答案??对不起,如果我弄错了,这个程序就像上面的问题一样,是由@Buzuka开始的。复制页面代码并按照说明创建数据库和表,这样你就能知道这到底是什么了。@sameerkumar我非常理解你的例子,在我当前的代码和thıs之间有一个很好的区别,比如标记,你能不能在没有我们额外的dıv的情况下编写thıs代码?bse我不想改变我工作中目前的dıv安排。
mysql_connect("localhost","root","");
mysql_select_db("statename");
$id = $_REQUEST["id"];
$sql="select * from city where sid='$id'";
$qry=mysql_query($sql);
$num=mysql_num_rows($qry);
?>
<select name="cid" id="cid">
<option value="0">Select City Name</option>
<?php
if($num>0)
{
while($res=mysql_fetch_array($qry))
{
?>
<option value="<?php echo $res['cid'];?>"><?php echo $res["cityname"];?></option>
<?php
}
}
?>
</select>
<?php
// put your code here
$con = mysql_connect("localhost", "root", "root");
if (!$con)
{
echo mysql_error();
}
$mkoa = mysql_real_escape_string($_REQUEST["mkoa"]);
mysql_select_db("dalaliOnline", $con);
$sql = "SELECT wilaya_jina FROM WILAYA WHERE mkoa_jina ='$mkoa' ";
$result =mysql_query($sql, $con);
?>
<option>Chagua</option>
<?php
while ($row = mysql_fetch_array($result))
{
?>
<option value="<?php echo $row['wilaya_id']?>"><?php echo $row['wilaya_jina'];?></option>
<?php
}
?>
<select id="wilaya" name="wilaya">
<option>Chagua</option>
</select>