首页 > 解决方案 > 试图在 PHP 中搜索表

问题描述

我正在尝试在我的表中创建搜索。

我已经用已经加载的日期填充了表格,但是当我在搜索框中输入名称并按提交时,没有发生任何事情,页面只是重新加载并且没有任何反应。

这是代码,(我还需要对表数据都是外键的表做同样的事情。)

    <?php // Include config file
include("$_SERVER[DOCUMENT_ROOT]/freddies/inc/config.php");
include("$_SERVER[DOCUMENT_ROOT]/freddies/inc/functions.php");
include("$_SERVER[DOCUMENT_ROOT]/freddies/inc/header.php");

  $sql = "SELECT * FROM patient";

if (isset($_POST['searchform'])) {

  $search_term = ($_POST['searchpat']);

  $sql .= " WHERE fName LIKE '{$search_term}'";
  $sql .= " OR sName LIKE '{$search_term}'";
  $sql .= " OR addLineOne LIKE '{$search_term}'";
}

$query = mysqli_query($db, $sql) or die(mysql_error());

?>

<body>
<div class="container">
<?php include("$_SERVER[DOCUMENT_ROOT]/freddies/inc/logo.html"); ?>

  <h2>List of Patients</h2>
  <p>All Patients Registered with Freddies Medical:</p>     

  <form name="searchform" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
                    <div class="form-group">
                            <label>Search for Patient</label>
                            <input type="text"  class="form-control" name="searchpat" required><br>
                            <input type="submit" class="btn btn-primary" name="search" value="Submit">
                            <span class="help-block"></span>
                        </div>

  <table class="table table-striped">
    <thead>
      <tr>
        <th>First Name</th>
        <th>Surname</th>
        <th>Address</th>
        <th>Phone</th>
        <th>Email Address</th>
        <th></th>
      </tr>
    </thead>
    <tbody>
    <?php
        $no     = 1;
        $total  = 0;
        while ($row = mysqli_fetch_array($query))
        {
            echo '<tr>
                    <td>'.$row['fName'].'</td>
                    <td>'.$row['sName'].'</td>
                    <td>'.$row['addLineOne'].", ".$row['addCity'].", ".$row['addPostCode'].'</td>
                    <td>'.$row['phone'].'</td>
                    <td>'.$row['email'].'</td>
                    <td><a href="patprofile.php?id='.($row['patient_id']).'" class="btn btn-success pull-right btn-xs">View Patient</a></td>   
                    <td><a href="delpat.php?id='.($row['patient_id']).'" class="btn btn-danger pull-right btn-xs">Delete</a></td>
                        </tr>';    
            $no++;
        }?>
    </tbody>
  </table>
  <a href="createpatient.php" class="btn btn-success pull-left">New Patient</a>
  <a href="../" class="btn btn-info pull-right">Admin Area</a>
</div>
<div class="bottompadding"></div>
<?php include("$_SERVER[DOCUMENT_ROOT]/freddies/inc/footer.php"); ?>
</body>
</html>

标签: javascriptphpmysqlsql

解决方案


$_POST['searchform']据我所知,不会设置,因为它是表单的名称而不是表单元素。更好地检查isset($_POST['search'])

if(isset($_POST['search'])) {
    $search_term = $_POST['searchpat'];

    $sql .= " WHERE fName LIKE '%".$search_term."%'"; // Using % wildcard will search for fields 'containing' searched string rather then 'exact matches'
    $sql .= " OR sName LIKE '%".$search_term."%'";
    $sql .= " OR addLineOne LIKE '%".$search_term."%'";
}

推荐阅读