php - 在 Web 提交表单中显示 php 搜索结果

标签 php forms

我有一个 Web 表单,可以将工作票信息添加到数据库中。我现在需要搜索该信息,但我需要结果出现在提交表单的字段中。用户必须能够在第二次提交表单以更新数据库之前更新这些“结果”字段中的一个或多个。我无法向服务器添加一堆东西(例如 AJAX)。这可能吗?谢谢。

<html>

<body>

<div id="naming" class="name-form">

<h3>Add name and click Submit.</h3>

    <form action="search3.php" method="POST">

        <fieldset>
            <label for="name">Name:</label> 
            <input type="text" name="name" size="20" /><br />
            <label for="id_number">ID Number:</label>
            <input type="text" name="id_number" size="20" /><br />
        </fieldset>

    <br/>

        <fieldset class="center">
            <input type="submit" value="Submit" />
        </fieldset>

    </form>

</div>

</body>

</html>

这两个脚本位于不同的文件中。

<?php

$con = mysqli_connect("localhost","root","","names");

// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$name = trim($_REQUEST['name']);

$id_number = trim($_REQUEST['id_number']);

$insert_sql = "INSERT INTO names (name, id_number) VALUES ('{$name}', '{$id_number}')";

// Add name to database
mysqli_query($con, $insert_sql)
  or die(mysql_error());

?>

<meta http-equiv="refresh" content=".5; url=http://localhost/testforms/search3.html">

最佳答案

为此,您需要使用 AJAX 并用它发送数据、接收响应并更新表单输入值。

HTML

这里我们添加监听“onclick”事件并将数据发送到“search3.php”的函数

<form action="search3.php" method="POST">
    <fieldset>
        <label for="name">Name:</label> 
        <input class='formElements' type="text" name="name" size="20" /><br />
        <label for="id_number">ID Number:</label>
        <input class='formElements' type="text" name="id_number" size="20" /><br />
    </fieldset>
    <br/>
    <fieldset class="center">
        <input type="submit" value="Submit" onclick='sendData(); return false;'/>
    </fieldset>
</form>

JavaScript

这是 AJAX 函数,它获取表单元素值,将它们发送到服务器并接收 JSON 格式的响应数据。响应数据被插入到表单元素值中。

function sendData()
{
    var formElements = document.querySelectorAll(".formElement");
    var formData = new FormData(); 
    for(var i = 0; i < formElements.length; i++)
        formData.append(formElements[i].name, formElements[i].value);
    var xmlHttp = new XMLHttpRequest();
        xmlHttp.onreadystatechange = function()
        {
            if(xmlHttp.readyState === 4 && xmlHttp.status === 200)
            {
                var responseText = JSON.parse(xmlHttp.responseText);
                formElements[0].value = responseText[0];
                formElements[1].value = responseText[1];
            }
        }
        xmlHttp.open("POST", "search3.php"); 
        xmlHttp.send(formData);
}

PHP

在这里,您可以从 AJAX 函数获取表单元素值。 之后插入数据库,获取last insert id来选择新输入的数据并以JSON格式返回给客户端。

<?php 
    $name = $_POST["name"];
    $id = $_POST["id_number"];

    $con = new mysqli("localhost", "root", "", "names");

    $prepare = $con->prepare("INSERT INTO `names` (`name`, `id_number`) VALUES (?, ?); 
        $prepare->bind_param("ss", $name, $id); 
        $prepare->execute();
        $prepare->close();
     $lastInsertId = $con->insert_id;

    $prepareTwo = $con->prepare("SELECT `name`, `id_number` FROM `names` where `id` = ?); 
        $prepareTwo->bind_param("s", $lastInsertId);
        $prepareTwo->execute();
        $prepareTwo->store_result();
        $prepareTwo->bind_result($name, $id_number);
        $prepareTwo->fetch();
        $prepareTwo->close();

    $con->close();

        $responseArray = array();
        $responseArray[0] = $name;
        $responseArray[1] = $id_number;

        $responseArray = json_encode($responseArray);
        echo $responseArray;
?>

关于php - 在 Web 提交表单中显示 php 搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48086898/

相关文章:

c++ - 在 Windows 窗体上获取文本的方法(非托管 C++ 项目)

javascript - 如何不转到 TAB 上的下一个表单域

html - 提交按钮太靠近表单 - Bootstrap

ASP.net 表单不传递 ddl 值

php - AJAX 请求返回某种形式的长字符串

php scandir 按文件日期排序

php - Opencart最低订货价

php - Magento - 覆盖订单 Controller

PHP Facebook FQL : Making queries in the new SDK

jQuery 验证插件 + CKEditor - 输入时验证