2012-03-13 67 views
-1

如何填充在我的形式只匹配組產品選擇框,另一個選擇框中選擇?更新選項時選擇在形式上改變

我使用在MySQL數據庫中的兩個表:

GROUP "node" 
nid | title 
g1 | Group 1 
g2 | Group 2 

GROUP "products" 
id | name  | parent_id | group_id 
p1 | Product 1 | p1  | g1 
p2 | Product 2 | p1  | g1 
p3 | Product 3 | p3  | g1 
p4 | Product 4 | p4  | g2 
p5 | Product 5 | p5  | g2 
p6 | Product 6 | p5  | g2 

當添加使用形式的產品,管理員應該能夠選擇組和上代產品。這是我的代碼功能:

<li> 
       <label for="group">Group</label> 
       <select name="group"> 
        <?php 
        //get group names 
        $result = mysql_query("SELECT nid, title FROM node WHERE type = 'group';"); 
         while($row = mysql_fetch_array($result)) { ?> 

          <option value="<?php echo $row['nid']; ?>"><?php echo $row['title']; ?></option> 


         <?php } ?> 
       </select> 
      </li> 


      <li> 
       <label for="parent">Parent</label> 
       <select name="parent"> 
       <?php 
       //get parent names 
       $result = mysql_query("SELECT id, name, group_id FROM products"); 
        while($row = mysql_fetch_array($result)) {?> 

         <option value="<? echo $row['id']; ?>"><?php echo $row['name']; ?></option> 

        <?php }?> 
       </select> 
      </li> 

不過,我想有父(母產品)選擇框填充只與被選擇的組的一部分產品。

在該示例數據庫, 「組1」 選擇將填充產品P1,P2和P3。所選的「組2」將填充產品p4,p5和p6。

我知道,這不能與直PHP來實現,但需要某種JavaScript代碼與GROUP_ID檢測GROUP_ID /兩個表中的NID並只顯示產品。

這樣做的最好方法是什麼?我將如何輕鬆完成此任務?

回答

0

依賴。如果你想使用Javascript,你可以使用AJAX。

要做到這一點,首先綁定到你的第一選擇的情況下,「變」的功能。

使用jQuery,你可以創建一個函數,並將其綁定:

pull_products_by_group = function(this) { 
    // Use AJAX here 
} 

$('select[name="group"]').change(pull_products_by_group); 

然後使用AJAX在這個函數調用了一些新的腳本,從產品表中選擇。你可以讓這個函數返回JSON(通常推薦)或者直線HTML(如果你堅持)。

如果你不想使用JavaScript,那麼你必須添加一個按鈕,用戶在選擇組後將點擊按鈕,這將重新加載自己(PHP腳本),它將接收選定的組,並且可以重新顯示相同的頁面,但這一次與產品清單。

+0

聽起來不錯,但我不熟悉AJAX和什麼樣的代碼,以從數據庫中獲取的信息,並匹配到選擇使用什麼。 – nitsuj 2012-03-13 18:43:34

+0

我建議你熟悉AJAX,因爲複製/粘貼你不明白的代碼不會幫助你。它不會工作,你不知道爲什麼。我建議從這裏開始:http://www.codeproject.com/Articles/31155/Ajax-Tutorial-for-Beginners-Part-1 – roychri 2012-03-13 18:47:46