2012-03-13 7 views
-1

別の選択ボックスで選択されたグループに一致する製品のみを使用してフォームの選択ボックスにデータを入力するにはどうすればよいですか?SELECT Aがフォームで変更されたときに、SELECT BのMYSQLからオプションを更新します

私は、MySQLデータベース内の2つのテーブルを使用しています:

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 

フォームを使用して製品を追加する場合、管理者はGROUPと親の製品を選択することができるはずです。これは私のコードで機能している:

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

しかし、私は唯一選ばれたグループの一部である製品を投入するPARENT(親製品)選択ボックスを持っていると思います。

例データベースでは、選択された「グループ1」が製品p1、p2およびp3を入力します。選択された「グループ2」は、製品p4、p5およびp6を入力する。

これはストレートPHPではできませんが、両方のテーブルでgroup_id/nidを検出し、そのgroup_idでプロダクトのみを表示するにはJavaScriptが必要です。

これを行うにはどのような方法が最適ですか?どうすればこれを簡単に達成できますか?

答えて

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

+0

あなたが理解していないコードをコピーして貼り付けることは助けにならないので、AJAXに精通することをお勧めします。それはうまくいかず、なぜあなたは知りません。私はここから始めることをお勧めします:http://www.codeproject.com/Articles/31155/Ajax-Tutorial-for-Beginners-Part-1 – roychri

関連する問題