繁体   English   中英

如何在 PHP/HTML 中拥有多个搜索输入/值

[英]How can I have multiple search inputs/values within PHP/HTML

我目前有一个 HTML 搜索表单,它接受用户输入(例如 123456)并使用 PHP 搜索数据库以查看该数字是否作为项目编号存在。 然后它在表中返回有关该项目的信息。

是否可以一次搜索多个项目,例如 123456、654321、000000,并将每个项目的结果显示在表格中? 我目前无法找到有关如何实现这一目标的任何文档。 任何帮助将不胜感激。

我当前搜索并带回一项数据的代码是。

<div id="div1">
            <!-- [SEARCH FORM] -->
        <form method="post" action="nweb.php">
        <h1>Product Information</h1>
        <input type="text" name="search" required/>
        <input type="submit" value="Search"/>
        </form>
        <?php

         if (isset($_POST['search'])) {
         require "2-search.php";
         if (count($results) > 0) {
         foreach ($results as $r) {
           echo "<table>";  
       
      
            echo "<tr><td>Item number</td><td>" . $r['item_number'] . "</td></tr>";  
            echo "<tr><td>Stock available</td><td>" . $r['stock_available'] . "</td></tr>";
            echo "<tr><td>Available Stock</td><td>" . $r['available_stock'] . "</td></tr>";  
            echo "<tr><td>Detailed Description</td><td>" . $r['detailed_desc'] . "</td></tr>";   
            echo "<tr><td>Gender</td><td>" . $r['gender'] . "</td></tr>"; 
            echo "<tr><td>Group</td><td>" . $r['group'] . "</td></tr>"; 
            echo "<tr><td>Subgroup</td><td>" . $r['sub_group'] . "</td></tr>"; 
        }
            echo "</table>";  
      } else {
        echo "No results found";
      }
    }
    ?>
    </div>

我的搜索代码是。

try {
  $pdo = new PDO(
    "sqlsrv:Server=$server;Database=$database", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
   } catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
   }
$stmt = $pdo->prepare ("SELECT * FROM dbo.[data] WHERE [item_number] LIKE ? OR [stock_available] LIKE ?");
$stmt->execute(["%" . $_POST['search'] . "%", "%" . $_POST['search'] . "%"]);
$results = $stmt->fetchAll();
if (isset($_POST['ajax'])) { echo json_encode($results); }
?>

一种简单的方法,在您的代码中没有太多剧烈的变化,是选择一个分隔符(可能是逗号)并像这样编写您的项目,然后,您将这些项目分成一组搜索项目:

$searchFor = explode(',', $_POST['search']);

并一一搜索:

$resultsArray = [];

foreach ($searchFor as $searchItem){
    $stmt = $pdo->prepare ("SELECT * FROM dbo.[data] WHERE [item_number] LIKE ? OR [stock_available] LIKE ?");
    $stmt->execute(["%" .$searchItem . "%", "%" . $searchItem . "%"]);
    $results = $stmt->fetchAll();
    array_push($resultsArray, $results);
}

最后,您将以与现在几乎相同的方式回显表:

foreach ($resultsArray as $results) {
...
    foreach ($results as $r) {
    ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM