PHP / MySQL搜索功能

nitan

我已经仔细阅读了本教程,并获得了成功。但是,这使我陷入了死胡同,在这里我必须付费才能访问有关实现“搜索”功能的教程。

我想知道是否有人可以根据给定教程的结构来帮助我实现搜索功能?教程似乎不适用于此。

到目前为止,我已经在单独的页面上尝试过此操作,但是它似乎无法正常工作-我也不知道如何在我的实际网站上实现它。

<?php
mysql_connect("localhost","root","") or die("could not connect");
mysql_select_db("kkp") or die("could not find db!");
$output ='';

//collect
if (isset($_POST['search'])){
    $searchq = $_POST['search'];
    $searchq = preg_replace("#[^0-9a-z]#i","",$searchq);
    $query = mysql_query("SELECT * FROM personal_info WHERE FirstName LIKE '%$searchq%' OR SurName LIKE '%$searchq%'") or die("could not search");
    $count = mysql_num_rows($query);
    if($count == 0){
        $output = 'There was no search results!';
    }else{
        while($row = mysql_fetch_array($query)){
            $fname = $row['FirstName'];
            $lname = $row['SurName'];
            $id = $row['id'];

            $output .= '<div>'.$fname.''.$lname.'</div>';
        }
    }
}
?>
<!DOCTYPE html>
<html>
<head>
    <title>Search</title>
</head>
<body>
    <form method="post" action="search.php"></form>
        <input type="text" name="search" placeholder="Search for student">
        <input type="submit" value="Submit">
</body>
</html>

<?php print("$output");?>

另外,这是我尝试实现搜索功能的地方。它仅显示一个表格,其中包含我已添加到数据库中的条目。

<div class="row">
    <h3>List of Student Volunteers</h3>
</div>
<div class="row">
    <table class="table table-striped table-bordered">
    <thead>
        <tr>
            <td>Name</td>
            <td>Email Address</td>
            <td>Mobile Number</td>
            <td>Action</th>
        </tr>
    </thead>
    <tbody>
    <?php
        include 'database.php';
        $pdo = Database::connect();
        $sql = 'SELECT * FROM personal_info ORDER BY id DESC';
        foreach ($pdo->query($sql) as $row) {
            echo '<tr>';
            echo '<td>'. $row['FirstName'] . '</td>';
            echo '<td>'. $row['EmailAddress'] . '</td>';
            echo '<td>'. $row['MobileNum'] . '</td>';
            echo '<td width=250>';
            echo '<a class="btn" href="read.php?id='.$row['id'].'">Read</a>';
            echo ' ';
            echo '<a class="btn" href="update.php?id='.$row['id'].'">Update</a>';
            echo ' ';
            echo '<a class="btn" href="delete.php?id='.$row['id'].'">Delete</a>';
            echo '</td>';
            echo '</tr>';
        }
        Database::disconnect();
    ?>

柯克·比尔德

您的HTML不正确。您关闭<form>标签的时间过早,因此<input>不会提交给PHP文件。

例如,将您的HTML更改为:

<form method="post" action="search.php">
    <input type="text" name="search" placeholder="Search for student">
    <input type="submit" value="Submit">
</form>

要测试和调试将什么数据提交到PHP文件,可以使用print_r($_POST)查看所有详细信息。

例如,根据您的代码,添加:

<?php
mysql_connect("localhost","root","") or die("could not connect");
mysql_select_db("kkp") or die("could not find db!");
$output ='';
print_r($_POST);
// ...

根据您发布的代码,您应该看到一个空数组。这将有助于您确定问题。


编辑:扩展搜索功能...

您的SQL已经包含了LIKE '%$searchq%'可以过滤SQL结果的部分。您只需要更新其他SQL查询即可执行类似的操作:

$sql = 'SELECT * FROM personal_info ORDER BY id DESC';

应该是这样的:

$sql = "SELECT * FROM personal_info WHERE FirstName LIKE '%$searchq%' OR LastName LIKE '%$searchq%' ORDER BY id DESC";

您只需要自定义SQL以添加适当的LIKE条目。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章