如何使用PHP根据第一个选择标记中选择的选项填充第二个选择标记?

问题描述:

我将从数据库中绘制第二个选择标记的选项。如何使用PHP根据第一个选择标记中选择的选项填充第二个选择标记?

谢谢。

+0

这通常使用JavaScript来完成,因此用户不必重新加载页面。它必须是PHP吗? – 2010-10-08 00:19:37

+0

我认为他需要PHP后端进行AJAX调用 – stevendesu 2010-10-08 00:20:18

+0

我同意steven_desu – ITroubs 2010-10-08 00:21:56

您必须使用ajax来执行此操作,而无需提交页面。

或者只是提交页面使行动自我(相同的PHP)。

如果检查有$ _ POST [select1value]

然后从数据库填充在第二选择

<select2> 
<?php 
if(($_POST['submit']) && ($_POST['select1'])) 
{ 
?> 

<option1> of select2</option> 

<? 
} 
?> 

完蛋了。

但AJAX是好的,如果你婉使用

+0

谢谢。我在第一个选择的onchange事件中提交表单,其操作指向相同的文件并使用类似的PHP代码。 – systemovich 2010-10-08 06:48:36

+0

好。无论如何,当你花时间去尝试一些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请求。

但是,如果表格太大,或者第二个选择框可能具有依赖于用户的数据,那么显然这不是一个选项。