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