【问题标题】:Populating input fields with database info relative to selection from drop down menu使用与下拉菜单中的选择相关的数据库信息填充输入字段
【发布时间】:2015-07-25 22:53:15
【问题描述】:

我有一个表格。在表单中,我有一个从数据库填充的人名下拉菜单。表单的其余部分由几个输入字段组成,地址、电话、电子邮件。此信息也存储在同一数据库中。我想要的是当您从下拉菜单中选择一个名称时,其余的表单字段会自动/动态地填充该人的相关数据。没有刷新,没有提交,没有转到刚刚填充的字段的另一个页面。我认为这是一个 ajax 请求,我可能需要表单上的 onChange 函数,但我不确定。不想只使用 jQuery 就使用 javascript。我在这方面没有取得太大的成功,这让我很生气。任何帮助,将不胜感激。这是我的代码的 sn-p 表单:

            <option value="" selected="selected" class="firstLine">select a name</option>               

            <?php $query = "SELECT * FROM customers ORDER BY id ASC";

              $run = mysqli_query($dbc, $query);

              while($row = mysqli_fetch_assoc($run)){ 

              $row['fullname'] = $row['first'].' '.$row['surname'];?>

              <option value="<?php echo $row['id'];?>"><?php echo $row['fullname']; ?></option><?php } ?>

        </select>

        <input type="text" name="address" id="address" value="" disabled="disabled"><br />          

        <input type="text" name="phone" id="phone" value="" disabled="disabled"><br />

        <input type="text" name="email" id="email" value="" disabled="disabled"><br />  

【问题讨论】:

  • 您的onChange()ajax 尝试在哪里?右侧的相关链接中有很多示例。另外,你会使用普通的 javascript 还是 jQuery 库?
  • 只使用普通的 javascript 并不想为此使用 jQuery。我知道我可以将 onChange 放在选项标签中,但是您如何编写该函数的脚本并填充表单?谢谢肖恩。

标签: javascript php ajax


【解决方案1】:

我经常采用的一种方法是创建一个小型 getData 类型的服务端点。

例如在 php 中:*但是您可以在 c# 中轻松地做到这一点,就像我在以下链接中所做的那样。 http://chadcollins.com/json-service-output-from-sql-select-using-c/

  1. 创建一个 /services/getData.php 文件并在其中:
  2. 确保页面仅在会话经过身份验证/检查身份验证时运行
  3. 连接到您的数据库并通过将 sessionUserID 传递给您的选择来执行对数据库的查询。
  4. 以 json 格式回显响应
  5. 使用 jquery 来处理 ajax(使用原生 js 会有点代码,但如果你愿意也可以。
  6. 在您的 UI 中的 onChange() 事件上,考虑使用 ajax 方法来调用您的 services/getData.php 脚本
  7. 然后使用返回的 json 数据集合,循环数据并按 id 将值分配给表单字段。

请注意,在我的示例脚本中,我如何打印出 JSON ajax 读取调用所需的格式。如果您想要示例 php 代码,请告诉我,我可能可以将一些东西放在一起。

【讨论】:

  • 我只需要 php 和 javascript 代码而不需要 jQuery。如果你有这样的例子,我将不胜感激,谢谢。
  • 嗨@JohnH。我会看看今晚我能想出什么。我已经开始使用原始 javascript 进行 ajax 请求的示例方法。随意查看这个例子。如果您遵循我描述的模型,这应该适合您。 code.tutsplus.com/articles/…
【解决方案2】:

这是你需要做的

    <option value="" selected="selected" class="firstLine">select a name</option>               

                <?php $query = "SELECT * FROM customers ORDER BY id ASC";

                  $run = mysqli_query($dbc, $query);

                  while($row = mysqli_fetch_assoc($run)){ 

                  $row['fullname'] = $row['first'].' '.$row['surname'];?>

                  <option value="<?php echo $row['id'];?>" onchange="getdata()"><?php echo $row['fullname'];?></option>
    <input type="hidden" name="addressinfo" value="<?php echo $row['address']?>">
    <input type="hidden" name="phoneno" value="<?php echo $row['phone']?>">
    <input type="hidden" name="emailid" value="<?php echo $row['email']?>">

    <?php } ?>

            </select>

            <input type="text" name="address" id="address" value="" disabled="disabled"><br />          

            <input type="text" name="phone" id="phone" value="" disabled="disabled"><br />

            <input type="text" name="email" id="email" value="" disabled="disabled"><br /> 



now you can use javascript to populate the value to those input boxes
<script>
function myFunction() {
var phone= document.getElementById("phoneno").value;
 var address = document.getElementById("addressinfo").value;
var email= document.getElementById("emailid").value;
document.getElementById('phone').value(phone);
document.getElementById('email').value(email);
document.getElementById('address').value(address);
}
</script>

【讨论】:

  • 感谢这里的代码,但这似乎不起作用。它在下拉选项字段中留下一个名称,其余名称在下拉字段之外和下方。另外,没有一个输入字段是动态填充的。这是一个令人头疼的问题!
  • @sagar chapagain 你的回答不正确,方法也不正确。为什么他会这样用javsacript……最好的办法就是用ajax请求响应的方式。
  • @ChadCollins :正确查看问题。我知道我们可以使用 jquery-ajax 来获得应得的答案,但请正确查看他要求使用 javascript 而不是 jquery 解决的问题,所以我正在使用这种方法。
  • @sagar chapagain,我看到了这个问题,并在下面给出了一个指向原始 javascrpt XML/HTTP 请求方法的链接,没有 jquery ...我发现它的示例在语法上完全不正确,并且作为接近。
猜你喜欢
  • 2012-08-14
  • 2023-03-21
  • 2013-04-05
  • 2012-07-24
  • 1970-01-01
  • 1970-01-01
  • 2012-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多