如何使用PHP根据第一个选择标记中选择的选项填充第二个选择标记?
您必须使用ajax来执行此操作,而无需提交页面。
或者只是提交页面使行动自我(相同的PHP)。
如果检查有$ _ POST [select1value]
然后从数据库填充在第二选择
<select2>
<?php
if(($_POST['submit']) && ($_POST['select1']))
{
?>
<option1> of select2</option>
<?
}
?>
完蛋了。
但AJAX是好的,如果你婉使用
谢谢。我在第一个选择的onchange事件中提交表单,其操作指向相同的文件并使用类似的PHP代码。 – systemovich 2010-10-08 06:48:36
好。无论如何,当你花时间去尝试一些Ajax。这个下拉人口是ajax的最好例子。尝试。 http://www.w3schools.com/ajax/ajax_database.asp – zod 2010-10-08 13:41:21
通常你有一个表中的每个选择框。这里有一个例子:
table1:
id | item | extra_info
1 | 1 | ...
2 | 2 | ...
... ... ...
table2:
id | prev_choice | item
1 | 1 | 1_a
2 | 1 | 1_b
3 | 2 | 2_a
4 | 2 | 2_b
... ... ...
这样,你只要搜索表2中的任何项目基于任何一个“prev_choice”之前被选中。例如,如果表格1包含一个大洲列表,表格2可以包含一个国家列表,其中“prev_choice”表示该国家在哪个大洲。
SQL查询看起来是这样的:
SELECT * FROM table2 WHERE prev_choice LIKE {$_GET["selected"]}
非JavaScript的解决方案:
让用户提交表单的选择是,这样的值将是GET/POST。
当页面再次出现时,PHP可以访问变量来组装第二个选择标签。
事情是这样的:
<form action='' method='post'>
<select name='select1'>
<option value='blah'>blah</option>
</select>
<?PHP if(isset($_POST['select1']) {
/* call DB and get infos */
echo "<select>";
/* FOR loop echoing <option>info</option> */
echo "</select>"; ?>
</form>
没有测试过,但是应该是OK ISH。
如果表格很小,则根本不需要使用Ajax。您可以构建每个可能的第二个选择框并将其隐藏在页面上,并根据用户的选择显示适当的选择框。这比Ajax更快,不需要重新加载页面或http请求。
但是,如果表格太大,或者第二个选择框可能具有依赖于用户的数据,那么显然这不是一个选项。
这通常使用JavaScript来完成,因此用户不必重新加载页面。它必须是PHP吗? – 2010-10-08 00:19:37
我认为他需要PHP后端进行AJAX调用 – stevendesu 2010-10-08 00:20:18
我同意steven_desu – ITroubs 2010-10-08 00:21:56