繁体   English   中英

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

[英]How do I use PHP to populate a second select-tag with options based on the option selected in the first select-tag?

我将从数据库中为第二个选择标签绘制选项。

谢谢。

非JavaScript解决方案:

让用户提交选择所在的表单,因此值将在GET / POST中。

当页面再次出现时,PHP可以访问变量以组合第二个select标签。

像这样:

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

还没有测试过,但应该可以。

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

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

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

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

检查是否有$ _POST [select1value]

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

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

<option1> of select2</option>

<?
}
?>

而已。

但是如果您想使用AJAX很好

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

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

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

SQL查询如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM