php - 如何在php中按下提交按钮之前显示不同数量的记录

标签 php html mysql

我只是希望,如果用户在文本框中输入项目名称,那么数据库中的特定详细信息应显示在下表中的同一页面上。现在它适用于一项。现在,如果用户想要选择多个项目并希望在页面上显示每个所选项目的记录,直到未按下提交按钮。这是我的代码。任何帮助将不胜感激。

<html>
<head>
<title>Sales</title>
<script>
function search(string){
var xmlhttp;
if(window.XMLHttpRequest){
    xmlhttp = new XMLHttpRequest();
}else{
    xmlhttp = new ActiveXObject("XMLHTTP");
}
xmlhttp.onreadystatechange = function(){
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
        document.getElementById("search").innerHTML = xmlhttp.responseText;
    }
}
xmlhttp.open("GET", "sales_search.php?s="+string, true);
xmlhttp.send(null);
}
</script>
</head>

我没有包含 CSS 代码来缩短它。

<?php
include "connection.php";

function sales_result()
{
$submit = $_GET['finish'];
if(isset($_GET['mname']) && $_GET['mname'] != '')
{
$name = $_GET['mname'];
$sql = "SELECT * FROM `medicine_item_record` WHERE `medicine_item_name` LIKE '%$name%'";
$result = mysqli_query($GLOBALS['link'],$sql);
$row = mysqli_fetch_assoc($result);

    while($check =='submit')
    {
    echo strtoupper($row['company_name']);

    }
}
}
?>
<body>
<div style="text-align: center; width: 500px; margin: 0 auto;">
<h1>Sales</h1><span style="font-family: tahoma, sans-serif, arial; margin-left: 150px; font-size: 13px;"></span><br/><br/>
<table border=1>
<tr><td><input type="text" placeholder="Type to search.." onkeyup="search(this.value)" id="text" ></td>
<td><input type="text"  placeholder="Enter Quantity" name="quantity"      id="text"></td>
<td><input type ="submit" name="finish" value="finish"></td>
</tr>
</table>

<div id="search">


</div>
</div>
<table border=1 width='100%' align= 'center'>
<tr><?php sales_result() ?> </tr>
</table>

</body>
</html>

sales_search.php的代码如下:

<?php
include "connection.php";

if(isset($_GET['s']) && $_GET['s'] != '')
{
$s = $_GET['s'];
$sql = "SELECT * FROM `medicine_item_record` WHERE `medicine_item_name` LIKE '%$s%'";
$result = mysqli_query($link,$sql);
while($row = mysqli_fetch_array($result))
{

    $name = $row['medicine_item_name'];
    echo "<div style='' id='searchtitle'>"."<a style='font-family: verdana; text-decoration: none; color: black;' href='sales.php?mname=$name'>" . $name . "</div>";

}
}
?>

最佳答案

不确定您所说的“多个项目”是什么意思。如果用户输入不同的搜索词,您的意思是尝试一下吗?例如:“抑制剂、拭子”。在构建查询之前,您需要以某种方式解析它。如果您的分隔符(我的示例是逗号)位于字符串中,请将其分解,然后使用循环进行查询:

<?php
include "connection.php";

if(isset($_GET['s']) && $_GET['s'] != ''){
  $search_str = trim($_GET['s']);
  if(strpos($search_str, ",")){
    // Multiple Search Terms found
    $s = explode($search_str, ",");
    $sql = "SELECT * FROM `medicine_item_record` WHERE `medicine_item_name` LIKE '%" . mysqli_real_escape_string(trim($s[0]), $con) . "%'";
    for($i=1;$i<count($s);$i++){
       $sql .= " OR `medicine_item_name` LIKE '%" . mysqli_real_escape_string(trim($s[$i]), $con) . "%'";
    }
    $sql .= ";";
  } else {
    $sql = "SELECT * FROM `medicine_item_record` WHERE `medicine_item_name` LIKE '%" . mysqli_real_escape_string($search_str, $con) . "%';";
  }
  $result = mysqli_query($link,$sql);
  while($row = mysqli_fetch_array($result)){
    $name = $row['medicine_item_name'];
    echo "<div style='' id='searchtitle'>"."<a style='font-family: verdana; text-decoration: none; color: black;' href='sales.php?mname=$name'>" . $name . "</div>";
  }
}
?>

评论后编辑:

这发生在 AJAX 调用的响应中:

document.getElementById("search").innerHTML = xmlhttp.responseText;

这行代码替换该元素中的内容。您需要附加响应:

var current = document.getElementById("search").innerHTML;
document.getElementById("search").innerHTML = current + xmlhttp.responseText;

关于php - 如何在php中按下提交按钮之前显示不同数量的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29634997/

相关文章:

php - exec ffmpeg 失败,可能的原因或解决方案?

html - 背景图片在移动设备上没有响应

mysql - mysql中按时间范围分组查询产生错误

mysql - 如何获取特定 event_id 的最后 revision_id?

php - CSS - 表行奇数/偶数的背景颜色

php - 将 base64 编码图像上传到 Mamp 服务器

javascript - HTML 表单无法在移动设备上运行

html - 在我的 Linkedin 页面上衡量 SEO 的最佳方法是什么?

php - 无法选择“FROM WHERE”?

php - MPDF57 CSS3 列表样式 :none not being applied (or isn't supported) for <UL> items inside <TD> element