2011-06-24 37 views
1

我想要實現的是在第一個下拉框中選擇後填充第二個保管箱。實時傳遞變量

我不太喜歡AJAX(我相信我需要用它來實現這一點)。

到目前爲止,我有以下PHP代碼。

<select name="category"> 
    <?php 
    $q = $admindb->getParentCategories(); 
    while($row=mysql_fetch_assoc($q)){ 
     $title=$row['title']; 
     $catid=$row['id']; 
     ?> 
     <option value="<?php echo $catid; ?>"<?php if($catid == $form->value("category")){ echo 'selected="selected"'; }?>><?php echo $title; ?></option> 
     <?php 
    } 
    ?> 
</select> 
<select name="subcategory"> 
    <?php 
    $q = $admindb->getSubCategories($catid); 
    while($row=mysql_fetch_assoc($q)){ 
     $title=$row['title']; 
     $catid=$row['id']; 
     ?> 
     <option value="<?php echo $catid; ?>"<?php if($catid == $form->value("subcategory")){ echo 'selected="selected"'; }?>><?php echo $title; ?></option> 
     <?php 
    } 
    ?> 
</select> 

正如你所看到的,我有兩個下拉框。

問題是第二個盒子需要選擇第一個工作。 所以我需要實現一種方式,將選擇從第一個框傳送到第二個框。

任何人都可以提供關於如何做到這一點的任何指針?

謝謝

+0

我想實現的只是一個小數據傳遞。我想要選擇父類別,然後將此類別的標識發送到數據庫查詢以相應地填充子類別下拉列表。 – sark9012

回答

1

您需要將用於創建第一個和第二個下拉列表的代碼隔離到兩個單獨的PHP文件中。當某人在第一個選擇框中選擇一個類別時,向生成第二個列表框的文件發出一個Ajax請求。在請求中包含第一個選擇框中的選擇內容。我建議使用jQuery來執行實際的Ajax請求。

+0

不需要兩個獨立的PHP文件。也不是一個阿賈克斯呼籲。根據數據的大小,所有內容都可以加載到單個文件中。它可以使用js數組或JSON對象完成,然後在事件觸發時動態加載到第二個選擇框中。 – SBerg413

+0

你可以做到這一點,但你爲什麼要? –

+0

如果數據足夠簡單,那麼這樣做更有意義。網絡流量較少,最終速度會更快。此外,只是指出選項 - 阿賈克斯是沒有必要的。 – SBerg413

1

根據數據來自何處,您可能專門或不需要ajax調用。但是你確實需要捕捉事件,然後相應地填充第二個下拉框。要做到這一點,最簡單的方法是使用jQuery的事件:

http://api.jquery.com/category/events/

有教程這個音調爲好。只是谷歌它。

0

所以,你將有HTML,你打算使用jQuery(因爲它是控球。)

在你的HTML,你將有一個<form...>與你的兩個下拉表單字段。

我打算用簡短的僞代碼來解釋。

$('#first_dropdown').change(function(   
    // When someone makes a change to the drop down or "selects" something (maybe bind click() too) 
    // Your code here to select the value selected and do a ... 
    $.post() // post to some PHP script that will return the values that will fill the 2nd 
    // dropdown but it'll be stored in some javascript variable 
    // and you're going to add jQuery code to take that js variable to populate the 2nd dropdown 
){}); 
0

這裏是一個辦法做到這一點

  • 在PHP中創建的第一個下拉列表,使第二個空禁用
  • 你的第一個下拉列表綁定即發射一個JS方法onchange
  • PHP中的
  • 創建一個入口點,返回第二個下拉列表中的數據,AJAX將使用此入口點獲取數據
  • 在JS方法中,您綁定了第一個dr opdown,使用AJAX獲取您的第二個下拉列表中的數據

現在,您可以使用jQuery,prototype,yui任何適合您的JS工具包。如果我是初學者,我會從服務器發送標記以響應我的AJAX呼叫,並將在下拉列表中替換該標記

+0

Google是#1,Y!使用Bing,所以Y!不是第二,順便說一句,我沒有得到你的問題的背景......你爲什麼要問這裏? – Kumar

+0

以及SO不是共享私人信息的平臺,所以如果沒有您的電子郵件ID,我啾啾您 – Kumar

+0

我的Twitter帳戶是@eggzotic – FinalForm