0

我有一个小的表单字段,因为dropdown <name="product">此列表是通过从 mysql 表中提取数据生成的。

mysql数据库设置如下:

表产品:

  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

有没有一种快速简便的方法来做到这一点?

表单的意图还将捕获一些其他数据并将其提交到单独的数据库,这引导我了解如何绑定两个数据库。

谢谢。

4

1 回答 1

0

有很多方法可以做到这一点。这是一个:

  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函数已弃用。请改用PDOmysqli

现在回到答案。如前所述,我的 PHP 不是那么好,但基本上你想{prodID: ... }在填充下拉列表时格式化步骤 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;
?>

这里的代码中可能有一两个错误,因此可能需要进行一些调试。

于 2013-05-28T17:49:20.950 回答