0

dropdown <name="product">このリストはmysqlテーブルからデータを取得することによって生成されるため、小さなフォームフィールドがあります。

mysql DB は次のようにセットアップされます。

テーブル製品:

  Column: Product
  Column: Product ID

テーブルの連絡先:

  Column: Product ID
  Column: Contact Name
  Column: Contact name #2
  Column: Contact Name #3
  Column: Contact name #4

ユーザーがプルダウン リストで選択した内容に基づいて、データベースに再度クエリを実行し、4 つの新しいテキスト ボックスにデータを入力します。

Name1
Name2
Name3
Name4

これを行うための迅速かつ簡単な方法はありますか?

フォームの目的は、他のデータも取得して別のデータベースに送信することです。これにより、2 つの DB を結び付ける方法がわかりました。

ありがとう。

4

1 に答える 1

0

これを行うには多くの方法があります。ここに1つあります:

  1. ページを準備するときは、すべてのContact行の列をクエリし、それらをページの JavaScript 配列に配置します。出力は次のようになります (これを実装する正しい方法はたくさんあります)。

    <script language=JavaScript>
    var contactInfo = new Array(
      {prodID: 1, name1: 'aaaa', name2: 'bbbb', name3: 'cccc', name4: 'dddd'},
      {prodID: 4, name1: 'eeee', name2: 'ffff', name3: 'gggg', name4: 'hhhh'},
      ...
      {prodID: 90, name1: 'wwww', name2: 'xxxx', name3: 'yyyy', name4: 'zzzz'}
    );
    
  2. ドロップダウン リストので、選択onchangeを処理する関数を呼び出します。productID

    <select name="ddlProductID" onchange="processProductChange(this);">
    
  3. テキストボックスが定義されていることを確認してください。この例では、次のように呼び出しtxtName1ますtxtName4

    <input type=text name="txtName1">
    ...
    <input type=text name="txtName1">
    
  4. 呼び出された関数で、ドロップダウン リストの値を取得し、contactInfo配列内で見つけます。それはあなたを名前に導き、それらをテキストボックスにポップすることができます:

    function processProductChange(prodDropdown) {
      for (indx = 0; indx < contactInfo.length; ++indx) {
        if (contactInfo[indx].prodID == prodDropdown.value {
           // The product ID has been located in the array. Put its names
           // in the txtName1 through txtName4 textboxes.
           document.forms[0].txtName1.value = contactInfo[indx].name1;
           document.forms[0].txtName2.value = contactInfo[indx].name2;
           document.forms[0].txtName3.value = contactInfo[indx].name3;
           document.forms[0].txtName4.value = contactInfo[indx].name4;
           // all done, can get out
           break;
        }
      }
    }
    

補遺:OPは、このアプローチの詳細を求めました。これには PHP コードが必要ですが、私はそれほど得意ではありませんが、mysqlPHP 関数の使用について最初に必須の警告を表示することは十分にわかっています。ここに行きます...

PHPmysql関数は非推奨です。代わりにPDOまたはmysqliを使用してください。

では答えに戻ります。前述のように、私の PHP はそれほど優れたものではありませんが、基本的には{prodID: ... }、ドロップダウン リストにデータを入力する際に​​、ステップ 1 のスクリプトの行をフォーマットする必要があります。そうすれば、結果を 1 回スキャンするだけで済みます。次のようになります(OPがコメントで提供したコードに散在しています):

<?php
$jsArray = '';
while ($row = mysql_fetch_array($productlist)) {
   $rowmod = strtr($row['ProductID']," ","_"); // change the spaces to underscore to work in URL line
   if (jsArray) {
     // comma between elements
     jsArray .= ",";
   }
   jsArray .= "\n{prodID: {$row['ProductID']}, ";
   jsArray .= "name1: \"{$row['Name1']}\", ";
   jsArray .= "name2: \"{$row['Name2']}\", ";
   jsArray .= "name3: \"{$row['Name3']}\", ";
   jsArray .= "name4: \"{$row['Name4']}\"}";
   echo "<option value='$rowmod'>$row[ProductElement]</option>";
}
?>

次に、JavaScript を安全に配置できるようになったら (たとえば、終了<form>タグの後に、次のようにします。

<? php
echo <<< endJS
 <script language="JavaScript">
  var contactInfo = new Array($jsArray);

  NOTE: PASTE THE FUNCTION FROM STEP 4 HERE

 </script>
endJS;
?>

このコードには 1 つまたは 2 つのエラーがある可能性があるため、デバッグが必要になる可能性があります。

于 2013-05-28T17:49:20.950 に答える