2016-03-02 156 views
2

我已经完全按照this tutorial,并且已经成功了。但是,这导致我陷入了一个死胡同,我必须付钱才能访问关于实现“搜索”功能的教程。PHP/MySQL搜索功能

我想知道是否有人可以帮助我如何实现一个搜索功能给定如何构建教程?教程似乎不适用于此。

到目前为止,我已经在单独的页面上尝试了这一点,但似乎并不奏效 - 我也不知道如何在我的实际网站上实现它。

<?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(); 
 
    ?>

+0

您的设置的邮政编码 - >你在尝试什么,..和你卡在哪里请.. – andre3wap

+0

对不起,更新了这篇文章。 – nitan

+1

'mysql_connect ...' - 找到一个较新的教程,一个不使用已弃用/过时的函数,并删除带有SQL注入漏洞的代码。您可能想从pdo开始:http://php.net/manual/en/book.pdo.php,并且对于MySQL中的搜索功能,FULLTEXT索引:http://dev.mysql.com/doc/refman/ 5.7/en/fulltext-natural-language.html – CD001

回答

1

你的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条目。

+0

的奇怪问题哦,该死的 - - 我觉得哑。谢谢!我已经更新了这篇文章,有没有一种方法可以将我的主要内容实现到目前为止? - 或者我应该重做一切吗? – nitan

+0

@nitan更新了我的示例。你已经有了一些搜索功能,但你需要把它添加到你的'$ pdo-> query($ sql)'SQL查询中。 –

+1

好的,谢谢。 :)) – nitan