如何使用PHP根据第一个select-tag中选择的选项使用选项填充第二个select-tag?

时间:2010-10-08 00:17:51

标签: php html select

我将从数据库中绘制第二个select-tag的选项。

感谢。

4 个答案:

答案 0 :(得分:1)

非JavaScript解决方案:

让用户提交select所在的表单,因此值将为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>

没有测试过,但应该没问题。

答案 1 :(得分:1)

如果表很小,则根本不需要使用Ajax。您可以构建每个可能的第二个选择框并将其隐藏在页面上,并根据用户的选择显示相应的选择框。这甚至比Ajax更快,并且不需要页面重新加载或http请求。

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

答案 2 :(得分:0)

你必须使用ajax来执行此操作而不提交页面。

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

检查是否有$ _POST [select1value]

然后从第二个选择

中的db填充
<select2>
<?php
if( ($_POST['submit'])  && ($_POST['select1']) )
{
?>

<option1> of select2</option>

<?
}
?>

多数民众赞成。

但如果你想使用

,AJAX很好

答案 3 :(得分:0)

通常,每个选择框都有一个表格。这是一个例子:

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
  ...        ...         ...

这样,您只需根据之前选择的内容搜索table2中的任何项目并使用“prev_choice”。例如,如果表1包含大陆列表,则表2可以包含一个国家列表,其中“prev_choice”指的是该国家所在的大陆。

SQL查询看起来像:

SELECT * FROM table2 WHERE prev_choice LIKE {$_GET["selected"]}