【问题标题】:Replace echo data shown with new echo data when searching搜索时将显示的回波数据替换为新的回波数据
【发布时间】:2020-12-02 21:44:37
【问题描述】:

我正在使用 PHP、HTML 和 MySQL 创建一个页面。目前,当我加载页面时,它会从人员表中选择所有数据并显示出来。

我有一个搜索功能,因此用户可以按名字、姓氏或全名进行过滤。

当用户单击搜索按钮时,是否可以将显示每一行的数据替换为我的搜索条件。

目前我的代码搜索正确,但它只是将它作为一行添加到所有数据行中。我以为我可以使用正则表达式来替换,但该变量无法全局访问,因为它位于 if 语句中。

<?php
        $output = NULL;
        if(isset($_POST['submit'])) {


            $regex = '/<table[^>]*>.*?<\/table>/s';  //test doesnt work
            $replace = ''; //test doesnt work
            $result = preg_replace($regex, $replace, $html); //test doesnt work "no html variable"
            echo($result); //test doesnt work

            $search = $con->real_escape_string($_POST['search']);


            $res = $_POST['searchGroup'];   
            if($res == "first") {
                $resultSet = $con->query("SELECT * FROM staff WHERE firstname LIKE '%$search%'");
                if($resultSet->num_rows > 0) {
                    while($rows = $resultSet -> fetch_assoc()) {
                        $field1name = $rows["firstname"];
                        $field2name = $rows["lastname"];
                        $field3name = $rows["dob"];
                        $field4name = $rows["created"];
                        $field5name = $rows["last_updated"];
                        $field6name = $rows["is_user"];


                        $output .= '<tr> 
                                  <td>'.$field1name.'</td> 
                                  <td>'.$field2name.'</td> 
                                  <td>'.$field3name.'</td> 
                                  <td>'.$field4name.'</td> 
                                  <td>'.$field5name.'</td> 
                                  <td>'.$field6name.'</td> 
                              </tr>';

                    }
                }
                else {

                    $output = "No Results";
                }

            }

然后是我当前显示所有数据的代码

<?php 
        $query = "SELECT * FROM staff";

        

        echo '<div class="tableFixHead">
        <table border="0" cellspacing="2" cellpadding="2"> 
          <tr> 
              <td> <font face="Arial"><b>First Name</b></font> </td> 
              <td> <font face="Arial"><b>Last Name</b></font> </td> 
              <td> <font face="Arial"><b>Date of Birth</b></font> </td> 
              <td> <font face="Arial"><b>Creation Date</b></font> </td> 
              <td> <font face="Arial"><b>Last Updated</b></font> </td> 
              <td> <font face="Arial"><b>Is User</b></font> </td> 

          </tr>
          </div>';

          echo $output;



        if ($result = $con->query($query)) {
            while ($row = $result->fetch_assoc()) {
                $field1name = $row["firstname"];
                $field2name = $row["lastname"];
                $field3name = $row["dob"];
                $field4name = $row["created"];
                $field5name = $row["last_updated"];
                $field6name = $row["is_user"];


                $html= '<tr> 
                          <td>'.$field1name.'</td> 
                          <td>'.$field2name.'</td> 
                          <td>'.$field3name.'</td> 
                          <td>'.$field4name.'</td> 
                          <td>'.$field5name.'</td> 
                          <td>'.$field6name.'</td> 
                      </tr>';
                echo $html;
            }
            $result->free();
        } 
        ?>

我的方法可能是错误的,但我想知道是否可以在按下搜索按钮时以某种方式删除当前 $html echo 标记中的数据。

【问题讨论】:

标签: php html mysql echo


【解决方案1】:

除了代码风格之外,我还想为您提供一些漏洞示例。因为我猜你还是个学生。

只是一个简单的例子,你可以做什么;

$query = "SELECT * FROM staff";
if(isset($_POST['submit'])) {
    $search = $con->real_escape_string($_POST['search']);
    $query .= " WHERE firstname LIKE '%$search%'"
}

这应该足以帮助您前进。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多