php搜索引擎详细代码

php搜索引擎详细代码

在开发php后端时,我们常常需要大量地检索许多信息。以下内容将会详细地告诉你如何去制作一个php搜索框让你更快检索信息。

本文章由 千度搜索引擎 提供支持。
千度亿下,你就知道
http://qdss.xyz/

首先,你需要写一个前端页面,命名为“index.html”,让用户输入关键词,也就是首页。在写入代码前,记得要在标签中声明编码为gb2312。

<form action="search.php">
<!--上面声明了以下内容为表单内容,向search.php发送get请求。-->
<input type="text" name="search" />
<input type="submit" value="搜索">
</form>

html代码写完了,接下来就是写搜索代码。至于搜索原理,就是使用MySQL数据库时,php连接数据库,并让数据库执行搜索指令。其实也不会很难,学会一点英语的人大概都看得懂下面这行指令:

SELECT * FROM search WHERE title LIKE ‘%千度搜索%’

直译成中文就是:

选择来自 search 的表,哪里的标题像“%千度搜索%”

怎么样?是不是懂了亿点点?

我们来慢慢讲解:

SELECT * FORM →先选择哪一张表格
search →表格的名字search
WHERE →搜索指令
title →要搜索的列title
LIKE →搜索类型,搜索类似的
% →通配符,及代表任意字符,也可以是没有
%千度搜索% →查找含有“千度搜索”的单元格

好了,这样它会在数据库中查找标题含有“千度搜索”的那一行。

这样,我们在MySQL数据库中执行下面的命令:

CREATE TABLE `你的数据库名字`.`search` ( `title` TEXT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NOT NULL , `text` TEXT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NOT NULL , `site` TEXT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NOT NULL ) ENGINE = InnoDB;

(注:把代码中的中文改为你的数据库名字,是数据库名字,不是用户名!!!)
(如何执行MySQL命令?登录数据库界面后点击界面上方的“SQL”即可执行,或点击界面下方的控制台即可执行)
(title列是用来写标题的,text列是描述,site列是写网址,点击后跳转的链接)

好了,写完了数据库,就要开始写php后端了。

在index.html的目录下,再创建一个search.php,代码如下:

 <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"/>
 <--先写一个自适应代码,手机电脑兼容-->
<title><?php echo $_GET['search']; ?> - 千度搜索</title>
<--标题随着用户输入的关键词的变化而变化-->
<?php
header("Content-Type:text/html;charset=gb2312");
//先确定该页面的编码为gb2312
$con = mysql_connect("数据库地址","数据库用户名","数据库密码");
//当然,你并不需要担心密码泄露,因为前端代码不会显示密码
if (!$con)
  {
  die('数据库出错,错误原因:' . mysql_error());
  //万一数据库出错,它还能告诉你怎么回事
  }
mysql_query("set names 'gb2312'",$con);
//这里填写的是php与数据库传输数据的编码,就像发电报时的电报编码表,不用管它
mysql_select_db("你的数据库名称", $con);
//确定sql命令执行的表
//好了,MySQL那边设定好了,轮到php传输过程了
  $searchs = $_GET['search'];  //传递搜索框过来的值
$searchs= trim($searchs);
//除去字符串两端空格
if (!$searchs){
echo '输入为空';
exit;
}
//这个设定了当用户没有输入或输入空格时的事件

$result = mysql_query("SELECT * FROM search where keyword like '%$searchs%' AND enter LIKE '%".$enter."%'");
//开始搜索并获取结果
echo "网页搜索结果<hr>";
//开始输出标题
if (mysql_num_rows($result) < 1) echo "无结果,去<a href='//baidu.com/s?word=".$searchs."'>百度</a>看看";
//当结果数量为0时的事件
//以下开始输出结果
while($row = mysql_fetch_array($result))
 {
  echo "<a href=".$row['enter'].">".$row['name']."</a>" ;
  echo "<br />";
  echo $row['text'] ;
  echo "<hr />";
  }
  //与数据库断开连接
mysql_close($con);
//程序结束
?>

好了,所有的代码已经展现出来了,大家可以去千度搜索看看真实效果(注:部分地方可能进过改动)

声明:本文章所有内容均为手打,如有错误,欢迎到下方批评指正。本文章代码部分由千度提供,网址: http://qdss.xyz 。


版权声明:本文为Etomosun原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。