Php 下拉选择可自动更改第二个下拉选择
我有一个网页,其中我有一个表格,有几个区域可以输入文本和两个下拉选择选项。第一个是国家,第二个应该显示该国家要选择的遗产。 我的页面连接到我的数据库,它从那里获取国家和地产。。。。我有一张列有国家名称的表格,每个国家的房地产有一张表格。 因此,我所要做的就是让它更改状态,以便根据选择的国家自动进行选择,而不求和表单,因为这会在我的db中的另一个表中输入一个新条目。 我知道使用javascript是一条可行之路,但在我的情况下无法让它工作,因为我不想被发送到另一个页面或表单。 这里是我的代码的一部分,任何帮助都将不胜感激。谢谢Php 下拉选择可自动更改第二个下拉选择,php,javascript,html,Php,Javascript,Html,我有一个网页,其中我有一个表格,有几个区域可以输入文本和两个下拉选择选项。第一个是国家,第二个应该显示该国家要选择的遗产。 我的页面连接到我的数据库,它从那里获取国家和地产。。。。我有一张列有国家名称的表格,每个国家的房地产有一张表格。 因此,我所要做的就是让它更改状态,以便根据选择的国家自动进行选择,而不求和表单,因为这会在我的db中的另一个表中输入一个新条目。 我知道使用javascript是一条可行之路,但在我的情况下无法让它工作,因为我不想被发送到另一个页面或表单。 这里是我的代码的一部
$paissql = "SELECT * FROM Paises_table";
$paisresult = mysql_query($paissql);
?>
<script language="text/javascript">
function showMe(str)
{
<? $estadosql = "SELECT * FROM ".str."_table";
$estadoresult = mysql_query($estadosql); ?>
}
</script>
<TABLE BORDER="2" CELLPADDING="2" CELLSPACING="2" ALIGN="CENTER">
<form action="<?php echo $_SERVER['PHP_SELF']?>" method=POST>
<TR><th> id </th> <td><?php echo $row_to_edit['id']?></td>
</TR>
<TR><th>Nombre:</th><td><input type="TEXT" name=Nombre value="<?php echo $row_to_edit['Id_Nombre']?>"
SIZE="100"></td></TR>
</td></TR>
<TR><th>Pais:</th><td>
<select name=Pais onchange="showMe(this.value);" >
<?
while($rowp = mysql_fetch_array($paisresult)) {
$pais = $rowp['Name'];
?>
<option value=<?php echo $pais; ?>
<?php if($row_to_edit['Pais']==$pais)
{ echo ' selected="true"';} ?>
><?php echo $pais; ?>
</option>
<?
}
?>
</select></td></TR>
<TR><th>Estado:</th><td>
<select name=Estado >
<?
while($rowe = mysql_fetch_array($estadoresult)) {
$estado = $rowe['Estado'];
?>
<option value=<?php echo $estado; ?> <?php if($row_to_edit['Estado']==$estado)
{ echo ' selected="true"';} ?>
><?php echo $estado; ?></option>
<?
}
?>
<TR><th>Ciudad:</th><td><input type="TEXT" name=Ciudad value="<?php echo $row_to_edit['Ciudad']?>"
SIZE="100"></td></TR>
<TR><th>Website:</th><td><input type="TEXT" name=website value="<?php echo $row_to_edit['website']?>"
SIZE="100"></td></TR>
<TR><td> </td>
<td>
<input type="HIDDEN" name="id" value="<?php echo $edit_id?>">
Para agregar preciona aqui:
<input type="SUBMIT" name="ACTION" value="AGREGAR">
</td>
</TR>
</form>
</TABLE>
<BR>
<BR>
我希望您知道,使用普通PHP进行开发是90年代的事情。我希望你知道,使用mysql_*就像是为黑客敞开大门
您需要的东西称为AJAX和事件绑定。基本上,您观察第一个下拉列表,当其状态发生变化时(即用户选择一个国家),您向服务器发出异步请求,检索该特定国家的地区列表,然后重建第二个下拉列表。如果您不需要支持大量的国家/地区,那么在每次请求时下载整个数据库可能是一个很好的折衷方案:这样您的用户就不必等待ajax调用,会有一个很小但可以感知的延迟,但会浪费带宽。你可以选择
关于Javascript部分,您可能希望使用一个库来观察事件和管理AJAX,可能还需要使用。对于级联下拉列表,即使服务器端的技术是ASP,而不是PHP,但您对JS部分感兴趣
我提出了一个涉及PHP、针对AJAX的jQuery和Knockout的快速解决方案。你不需要完全采用它,有成千上万种可能的变化。至少,你会有一个了解学习内容的起点
var国家=;
$function{
var模型=发达国家{
var self=这个;
self.countries=ko.countries;
self.regions=ko.observearray[];
self.getRegions=函数{
$.get?json,{country:$country.val},functionregions{
自我区域;
};
}
}
var国家=新模式国家;
ko.应用绑定中心;
//初始化绑定后的第二个下拉列表
国家和地区;
};
级联下降
国家:
地区:
不能像这样将javascript与PHP混合使用。您需要AJAX的可读性,这一直是一个考虑因素。@codingbiz-AJAX不是唯一的解决方案。OP还可以包括一个国家和不动产列表,并根据该列表动态构建第二个下拉列表。如果不知道所涉及数据的大小,就很难给出好的建议。作为一种退步,OP可以设置它,以便用户选择国家,然后转到下一页选择遗产,并通过JS和AJAX一起避免。数据不多,一个表中只有20个国家,然后每个国家有20个表,我将所有遗产添加到每个国家。每个国家有20个表?对于我来说,这听起来不对,因为教程的链接确实符合我的要求,但由于使用了另一种我不知道的编码,我没有找到一种方法在我的案例中使用它。谢谢你,是的,我知道如果我使用mysql,任何人都可以访问我的数据库,但这只是为了我自己学习。不管我有什么,这只是为了我学习。所以尽你所能学习最好的:如果你知道mysql扩展有缺陷且不安全,就扔掉它!如果您知道不验证用户输入可能会导致问题,请使用库!真的,学习错误有什么意义呢?谢谢你的建议,你不需要知道,但我只是在学习如何使用mysql连接到我的数据库,所以我提出了这个问题,因为我正在用我在这里和那里找到的片段自己做一个表,能够学习AJAX将是一个不同的故事。无论如何,谢谢你。