2010-10-08 77 views

回答

0

您必須使用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

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

這樣,你只要搜索表2中的任何項目基於任何一個「prev_choice」之前被選中。例如,如果表格1包含一個大洲列表,表格2可以包含一個國家列表,其中「prev_choice」表示該國家在哪個大洲。

SQL查詢看起來是這樣的:

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

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

1

如果表格很小,則根本不需要使用Ajax。您可以構建每個可能的第二個選擇框並將其隱藏在頁面上,並根據用戶的選擇顯示適當的選擇框。這比Ajax更快,不需要重新加載頁面或http請求。

但是,如果表格太大,或者第二個選擇框可能具有依賴於用戶的數據,那麼顯然這不是一個選項。

相關問題