从一个表单字段获取条目并在数据库中搜索其对应数据并自动填写表单中的其他字段

Posted

技术标签:

【中文标题】从一个表单字段获取条目并在数据库中搜索其对应数据并自动填写表单中的其他字段【英文标题】:Get entry from one form field and search for its corresponding data in database and auto fill other fields in form 【发布时间】:2017-08-31 14:10:14 【问题描述】:

我正在编写一个计费代码,在它里面而不是通过键入来输入每个条目例如:在我的表单中有一个显示客户信息的部分,这是通过输入 customer_id 完成的,然后一个 php 文件获取名称地址电话号码和与输入的 customer_id 对应的其他数据,并自动填写表单的其他客户字段。 html 表单

<form action="./manipulate/invoice.php" method="post" accept-charset="UTF-8">
<div style="width:15%;float:left">
Customer #
<br>
<input id="searchbox" style="width:98%;margin-left:1%;margin:right:1%" name="cust_id" type="text" placeholder="Customer ID">
</div>
<div class="w3-container">
<div style="width:100%;">
<h4>Contact Info About Customer</h4>

</div>

<div style="width:30%;float:left" >
<input id="cust_address" style="width:98%;margin-left:1%;margin:right:1%" type="text" placeholder="Customer_Address" >
</div>

<div style="width:15%;float:left">
<input style="width:98%;margin-left:1%;margin:right:1%" type="text" placeholder="City" id="cust_city">
</div>

<div style="width:15%;float:left">
<input style="width:98%;margin-left:1%;margin:right:1%" type="text" placeholder="State" id="cust_state">
</div>

<div style="width:15%;float:left">
<input style="width:98%;margin-left:1%;margin:right:1%" type="number" placeholder="Pincode" id="cust_pincode">
</div>

<div style="width:25%;float:left">
<input style="width:98%;margin-left:1%;margin:right:1%" type="number" placeholder="Phone Number"  id="cust_phone">
</div>
</div>
</form>

javascript 函数:

<script>
    $(document).ready(function () 

        function trial(s)
        $('#searchbox').val(s);
        $.ajax(
            url:'./manipulate/get_addre.php',
            type:'POST',
            data:'cust_id='+s,
            dataType:'json',
            success:function(e)
                //$('#cust_add').append(e['address']);
                $('#cust_Address').val(e['address']);
                $('#cust_city').val(e['city']);
                $('#cust_state').val(e['state']);
                $('#cust_pincode').val(e['pincode']);
                $('#cust_phone').val(e['phone']);
                $('#cust_Name').val(e['name']);
                

        );
    
  );
$('#searchbox').change(function() 
    trail($(this).val());
);
</script>

get_addre.php 是

<?php

$mysqli = new mysqli("localhost","root","","tssolutions");

if($mysqli->connect_errno)
    echo "connection failed : $mysqli->connect_errno";
    exit();

$cust_id = $_POST['cust_name'];
$query = "SELECT * FROM customer WHERE customerid = '".$cust_id."' ";
//echo 'hi';
if($result = $mysqli->query($query))
    /* fetch details*/
    while($row = $result->fetch_assoc())
        $json = json_encode($row);
        //return $json;
        echo $json;
        //echo "<b>Address : </b>".$row['address'].", ".$row['city'].", ".$row['state'].", ".$row['pincode'].", contact no. ".$row['phone'];
    
    $result->free();

$mysqli->close();

?>

在 invoice.php 中,这些字段 + 更多字段被插入到数据库中的另一个表中。 我面临的问题是,每当我在表单中输入 customer_id 字段时,所有字段都保持空白,这些字段应该自动填写。 任何人都可以纠正它吗?提前致谢。

【问题讨论】:

【参考方案1】:

我要说的第一件事是:您的代码容易受到 SQL 注入的攻击。你应该改变这一行:

$cust_id = $_POST['cust_name'];

到这一行:

$cust_id = $mysqli->real_escape_string($_POST['cust_name']);

乍一看,我没有看到任何错误,但奇怪的是没有事件处理程序,它会真正调用您的 JavaScript 试用函数。您似乎缺少这部分代码:

$('#searchbox').change(function() 
    trial($(this).val());
);

编辑 重建您的应用程序后,我发现了您的错误。您正在发送名为“cust_id”的数据,但您正在请求名为“cust_name”的数据。一旦你把你的名字改成正确的名字,这将起作用。

您可以使用 Web 开发人员控制台(Chrome 和 Firefox 中的 F12)在 newtwork 选项卡中查看服务器对您的 ajax 调用的响应。

【讨论】:

感谢您对SQL注入的宝贵建议。另外我确实添加了以下代码,结果仍然相同,所有其他字段仍然为空,它们没有得到值。 您的事件处理程序必须在您的 $(document).ready() 函数中。我还打错了字,把你的函数拼错了(真丢脸)。除此之外,我发现了您的错误并编辑了我的答案。 天哪,这么小的错误(我感到羞耻),实际上我大约在 1 年前编写了代码,但有人希望我修改 if 并在 1 年后更改代码,因此拼写错误的变量(我的坏)...

以上是关于从一个表单字段获取条目并在数据库中搜索其对应数据并自动填写表单中的其他字段的主要内容,如果未能解决你的问题,请参考以下文章

从所有字段或仅一个字段的搜索中获取结果

如何在不完整的 Django 表单字段中获取用户输入?

Xamarin 表单从另一个视图获取数据

单击并在数据库中更新时在 Django 中编辑表单字段

网络表单中的全文搜索

如何从数据库中获取图像并在 laravel 中使用 ajax 以编辑形式预览它?