これを行うには多くの方法があります。ここに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'}
);
ドロップダウン リストので、選択onchange
を処理する関数を呼び出します。productID
<select name="ddlProductID" onchange="processProductChange(this);">
テキストボックスが定義されていることを確認してください。この例では、次のように呼び出しtxtName1
ますtxtName4
。
<input type=text name="txtName1">
...
<input type=text name="txtName1">
呼び出された関数で、ドロップダウン リストの値を取得し、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 コードが必要ですが、私はそれほど得意ではありませんが、mysql
PHP 関数の使用について最初に必須の警告を表示することは十分にわかっています。ここに行きます...
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 つのエラーがある可能性があるため、デバッグが必要になる可能性があります。