不确定这是否符合stackoverflow规则,因为它不是特定的代码问题,但我真的需要一些帮助。
我想知道是否可以在将要查询数据库并返回结果的HTML网页上创建搜索功能(搜索框)?
基本上我有一个产品及其相关类别的数据库。用户将访问该网站,在搜索字段中输入该类别...以某种方式查询数据库并将结果返回到新页面。
注意:结果页面不必是HTML(可以是PHP等)。
如果你还可以提供一些指导如何(请不要详细,只需要一个方向)。 谢谢!
答案 0 :(得分:2)
是的,当然,这很容易。
这就是我要做的事情:
在您的第一页上:
<form action="mypage.php?searching=true" method="POST">
<input type="text" name="searchcategory" value=""/>
<input type="submit" value="Search"/>
</form>
在mypage.php上:
<table>
<?php
$sql=$db->prepare('SELECT * FROM mytable WHERE category=:category');
$sql->execute(array(':category'=>$_REQUEST[searchcategory]));
while ($row=$sql->fetch())
{
//Here is where you will loop through all the results for your search. If
//you had for example for each product name, price, and category,
//you might do the following
echo "<tr><td>$row[name]</td><td>$row[price]</td><td>$row[category]</td></tr>";
}
?>
</table>
注意:
我使用mySQL ...我不确定你会用其他东西做什么,但我猜你可以调整其他类型数据库的代码。
我通常使用PDO(通过准备和执行访问)......我的老师说它更安全。您可以将代码的这一部分更改为连接到数据库。我用来连接的代码看起来像(在mypage.php上面的代码之前):
try {
$db = new PDO("mysql:host=localhost;dbname=mydatabasename","username","password");
} catch (Exception $e) {
echo "PDO connection error: " . $e->getMessage();
exit(1);
}
它们实际上不必是单独的页面。如果您有两个页面php(第一个不是直接HTML),您可以根据变量(可能称为搜索)是设置为true还是false来更改内容。
如果有任何不清楚的地方,请告诉我,我很乐意帮助你。祝好运! :)
答案 1 :(得分:1)
这很简单。 首先是HTML
<form action='search.php' method='POST'>
<input type='text' name='search'/>
<input type='submit' value='submit'/>
</form>
现在使用此代码创建一个connect.php文件
<?php
// Connects to Our Database
$link = new mysqli('localhost', 'username', 'password', 'db_name');
/* check connection */
if (mysqli_connect_errno()) {
echo "Could not connect to database, please check your connection details";
exit();
}
?>
好吧,现在使用以下代码创建search.php文件
<?php
include 'connect.php';
$search = $_POST['search']."*";
$search_query = $link->prepare("SELECT name FROM products WHERE MATCH(name) AGAINST (? IN BOOLEAN MODE)")
$search_query->bind_param('s', $search);
$search_query->execute();
$search_query->store_result();
$search_rows = $search_query->num_rows;
$search_query->bind_result($product_name);
if($search_rows > 0){
while($search_query->fetch()){
echo "Your search returned $search_rows results";
echo "$product_name <br>";
}
} else { echo "Your search returned no results, sorry :("; }
这将做的是,它将在数据库中搜索用户搜索的内容或其中的一部分并返回结果。 假设您在数据库中有这些产品
1)Micorosft mouse
2)iBall mouse
3)Logitech mouse
让我们说用户搜索'鼠标' 它将从数据库返回信息,其中包含字符串'mouse': - )
希望这有帮助;)
你还需要通过phpmyadmin设置一个数据库,如果你还没有它的话。