2012-02-25 2 views
0

したがって、SQLデータベースにデータを送信するフォームを作成しています。 Iveには、「モジュールコード」と「モジュールタイトル」のデータを保持する2つの選択ドロップダウンがあります。データベースでは、モジュールのタイトルには1つのモジュールコードのみがあります。たとえば、チームプロジェクト(モジュールタイトル)にはモジュールコード11COB290があります。SQLデータベースを使用して2つのSELECTボックスをリンクする - PHP

ユーザーが特定のモジュール名を選択したとき、またはモジュールタイトルが自動的に正しいパートナーを選択するように、つまり、ユーザーが送信ボタンを押さずに選択したモジュール名に関連する正しいモジュールコードを選択する方法?

次のコードは、私がこれまで持っている選択ボックスとPHPコードのドロップダウンです。そうするための特別な理由がない限り

<td align="center"> 
<select name='ModuleTitle' id='ModuleTitle' style='width:100%;'> 
<option>Select...</option> 

    <?php 
     //3. Perform database query 
     $result = mysql_query("SELECT * FROM Module 
     ORDER BY `ModTitle` ASC;", $connection); 
     if(!$result){ 
      die("Database query failed: " . mysql_error()); 
     } 
     //4. Use Returned Data 
     while ($row = mysql_fetch_array($result)) { 
      $module = $row[2]; 
      echo "<option name='{$module}'>{$module}</option><br />";  
     } 
    ?> 
    </select> 
    </td> 

    <td align="center"> 
    <select name='ModuleCode' id='ModuleCode' style='width:100%;'> 
    <option>Select...</option> 

    <?php  
     //3. Perform database query 
     $result = mysql_query("SELECT * FROM Module 
     ORDER BY `ModCode` ASC;", $connection); 
     if(!$result){ 
      die("Database query failed: " . mysql_error()); 
     } 
    //4. Use Returned Data 
     while ($row = mysql_fetch_array($result)) { 
      $module = $row[3]; 
      echo "<option name='{$module}'>{$module}</option><br />";  
     } 
    ?> 
    </select> 
    </td> 
+0

ルックを作品願っています。ドロップダウンリストから変更イベントを処理し、PHPへのAJAX呼び出しを行うことができます。 –

+0

もしあなたが正しいとすれば、あなたは 'JS chained select lists'を使う必要があります。 –

答えて

0

、なぜ単一SELECTボックスの代わりに、2を与えていませんか?

<td align="center"> 
<select name='ModuleTitle' id='ModuleTitle' style='width:100%;'> 
<option>Select...</option> 
<?php 
    //3. Perform database query 
    $result = mysql_query("SELECT * FROM Module ORDER BY `ModTitle` ASC;", $connection); 
    if(!$result){ 
     die("Database query failed: " . mysql_error()); 
    } 
    //4. Use Returned Data 
    while ($row = mysql_fetch_array($result)) { 
     $module = $row[2] . ' (' . $row[3] . ')'; 
     $moduleCode = $row[3]; 
     echo "<option value='{$moduleCode}'>{$module}</option>"; 
    } 
?> 
</select> 
</td> 

あるいはあなたはAJAX呼び出しを使用し、2つのSELECTを維持したいと思います。その考え方は、各SELECTとそのイベントでonChangeイベントを定義し、AJAXリクエストをPHPスクリプトに送信することです。 PHPスクリプトはモジュールコードまたはタイトルを要求し、それをAJAXハンドラに返します。 AJAXハンドラは、自動的に他のSELECTの対応するオプションをSELECTEDとしてマークすることができます。このようなことをまだ経験していない場合は、AJAXとJavaScriptについて調べる必要があるかもしれません。

もう1つの考え方は、コードSELECTの値としてタイトルとモジュールのタイトルの値としてモジュールコードを使用することです。例えば、タイトルSELECTは次のようになります。

<SELECT name="ModuleTitle" id="ModuleTitle" style="width:100%;"> 
<OPTION>Select...</option> 
<OPTION value="123">Title 123</OPTION> 
<OPTION value="345">Title 345</OPTION> 
<OPTION value="567">Title 567</OPTION> 
</SELECT> 

が続いonChangeイベントハンドラで、あなたがこのような何かを行う可能性があります:

var selObj = document.getElementById('ModuleTitle'); 
var selIndex = selObj.selectedIndex; 
document.getElementById('ModuleCode').value = selObj.option[selIndex].text; 

をところで、のための「名前」属性が存在しません。代わりに "値"でなければなりません。あなたのコードで修正してください。

希望すると助かります!

注意:上記のコードのいずれもテストされていないが、私はそれがjQueryのAJAX機能への細かい

関連する問題