HTML页面上的数据库搜索功能可能吗?

时间:2012-03-27 04:47:26

标签: javascript html database

不确定这是否符合stackoverflow规则,因为它不是特定的代码问题,但我真的需要一些帮助。

我想知道是否可以在将要查询数据库并返回结果的HTML网页上创建搜索功能(搜索框)?

基本上我有一个产品及其相关类别的数据库。用户将访问该网站,在搜索字段中输入该类别...以某种方式查询数据库并将结果返回到新页面。

注意:结果页面不必是HTML(可以是PHP等)。

如果你还可以提供一些指导如何(请不要详细,只需要一个方向)。 谢谢!

2 个答案:

答案 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设置一个数据库,如果你还没有它的话。