我有一个小的表单字段,其中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
有一种快速简便的方法吗?
表单的意图还将捕获一些其他数据并将其提交到一个单独的数据库,这将引导我如何绑定两个数据库。
感谢。
答案 0 :(得分:0)
有很多方法可以做到这一点。这是一个:
准备页面时,查询所有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函数的强制性警告。这就是......
不推荐使用PHP mysql
函数。请改为使用PDO或mysqli。
现在回到答案。如上所述,我的PHP并不是那么好,但基本上你想在填充下拉列表的同时格式化步骤1中脚本的{prodID: ... }
行;这样你只需要扫描一次结果。它会像这样(散布在评论中提供的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;
?>
这里的代码中可能存在错误或两个错误,因此可能需要进行一些调试。