我确实有一个使用PHP、MySQL和JavaScript的例程。有两个表: tbl_category和tbl_subcategory,如下所示:
tbl_category
tbl_subcategory
他们里面有一些信息
tbl_category:
tbl_subcategory:
我将指向javascript库的链接放入文件头:
<script type="text/javascript" src="jquery-1.8.2.min.js"></script>
当然,我以前从jquery网站下载(更新版本)。
我现在有了脚本例程:
<script type="text/javascript">
$(document).ready(function(){
$("select[name=cat_id").change(function(){
$("select[name=scat_id]").html('<option value="">Loading...</option>');
$.post("ajax_subcategory.php",
{cat_id:$(this).val()},
function(valor){
$("select[name=scat_id]").html(valor);
}
)
})
})
现在我有了表单,预装了来自表tbl_category的数据的select字段类别:
<form name="form" method="post" action="" enctype="multipart/form-data">
<table width="100%" border="0" cellspacing="6" cellpadding="0">
<tr>
<td align="right">Category:</td>
<td><select name="cat_id" >
<option value="0">Choose category</option>
<?php
$sql1 =mysql_query("SELECT * FROM tbl_category ORDER by cat_name")or die(mysql_error());
while($row = mysql_fetch_array($sql1))
{
echo ("<option value=\"$row[cat_id]\"" . ($sql1 == $row["cat_name"] ? " selected" : "") . ">$row[cat_name]</option>");
}
?></select>
</td>
</tr>
<tr>
<td align="right">Sub-category:</td>
<td><select name="scat_id" selected="selected" >
<option value="0">Waiting category...</option>
</select>
</td>
</tr>
</table>
<input type="submit" name="submit" value="Submit"/>
</form>
然后是名为ajax_subcategory的php文件:
<?php
include "../connect_to_mysql.php";
$cat_id = $_POST['cat_id'];
$sql1 =mysql_query("SELECT * FROM tbl_subcategory WHERE cat_parent_id='$cat_id' ORDER by cat_name")or die(mysql_error());
while($row = mysql_fetch_array($sql1))
{
echo ("<option value=\"$row[scat_id]\"" . ($sql1 == $row["scat_name"] ? " selected" : "") . ">$row[scat_name]</option>");
}
?>
完成了!一切看起来都很完美和美丽。当我在第一个组合中选择项目时,我可以看到Javascript在工作和加载.显示出来,但是第二个ComboBox总是空的,不管我选择什么项,它显示为空并变得更小(宽度)。
这是一个很好的例行公事,我从另一个网站看到了在网上工作。
你们能帮我找到解决办法吗?
谢谢
发布于 2012-11-05 21:42:58
首先,您需要一步一步地进行故障排除来分析数据。在你的情况下,我会这样做:
注意:我不明白您为什么要检查条件$sql1 == $row"cat_name“。$sql1将是一个资源Id,根据您的查询,$row‘’cat_ name‘是一个字符串,表示您的子类别名称。
顺便说一句,mysql_*函数是不受欢迎的,并且强烈反对使用它们。使用mysqli_*函数或PDO。
发布于 2012-11-05 22:25:44
请将$row["scat_name"]
更改为$row["cat_name"]
<?php
include "../connect_to_mysql.php";
$cat_id = $_POST['cat_id'];
$sql1 =mysql_query("SELECT * FROM tbl_subcategory WHERE cat_parent_id='$cat_id' ORDER by cat_name")or die(mysql_error());
while($row = mysql_fetch_array($sql1))
{
echo ("<option value=\"$row[scat_id]\"" . ($sql1 == $row["cat_name"] ? " selected" : "") . ">$row[cat_name]</option>");
}
?>
https://stackoverflow.com/questions/13244754
复制相似问题