我想创建一个搜索引擎来检查爱尔兰的公司名称,如http://www.vision-net.ie/freeSearch或https://search.cro.ie/company/,但不知道这个搜索引擎是如何工作的?如果有人专家在这里,然后帮助我创建搜索引擎检查公司名称。
这是一个介绍教程,展示了PHP和ajax的搜索功能,与MySQL数据库一起工作
首先创建html表单..您应该在本地主机WAMP环境中执行此操作以观察效果。
<!DOCTYPE html>
<html>
<head>
<style>
table
{
border:0;
padding:0;
margin:0 auto 0 auto;
background:#000;
color:#fff;
font-size:10px;
font-family:Verdana;
}
#resultsCity
{
position:absolute;
top:0;
right:0;
width:96px;
height:auto;
overflow:visible;
z-index:12;
text-align:center;
background:#111;
display:none;
}
#resultVenue0
{
position:relative;
top:0;
right:0;
width:96px;
min-height:60px;
height:auto;
overflow:visible;
z-index:12;
text-align:center;
background:#222;
display:block;
}
</style>
</head>
<body>
<h1>Form demonstration</h1>
<form action="./adduser.php" method="post" >
<table>
<tr>
<td>User name</td>
<td><textarea name="content" ></textarea></td>
</tr>
<tr>
<td>Enter city or town</td>
<td><input type="text" name="work" id='searchVenue0' /></td>
</tr>
<tr>
<td>Click city</td>
<td>
<div id='resultVenue0'>
<ul id='list'></ul>
</div>
</td>
</tr>
<td>*</td>
<td><input type="submit" value="submit" name="submit" /></td>
</table>
<script type='text/javascript' src='searchvenue.js'>
</script>
</body>
</html>
然后在同一目录下创建一个文件,命名为'searchvenue.js'您正在制作ajax文件,该文件将响应用户在CITY字段
中输入的内容。// file : searchvenue.js
var timer1;
var ajaxreq2;
var msg0;
var divCity0;
var array0;
ajaxreq2 = false;
var obj;
obj=document.getElementById("searchVenue0"); // form entry INPUT element
obj.onkeydown = StartSearch; // add the event that re-acts to the keyboard pressed..
divCity0 = document.getElementById("resultVenue0");
function sendmsg0(target)
{
try
{
ajaxreq2= new XMLHttpRequest();
}
catch (error)
{
try {
ajaxreq2 = new ActiveXObject("Microsoft.XMLHTTP");
} catch (error)
{
return false;
}
}
msg0 = document.getElementById("searchVenue0").value;
// CAPTURE the value of the TEXT in the input field
ajaxreq2.open("POST","./searchvenue.php",true);
ajaxreq2.setRequestHeader("Content-type","application/x-www-form-urlencoded");
ajaxreq2.onreadystatechange = DisplayResults;
ajaxreq2.send("msg="+msg0);
}
function StartSearch()
{
if (timer1)
{
window.clearTimeout(timer1);
}
timer1 = window.setTimeout("sendmsg0();",200);
}
function DisplayResults() {
if (ajaxreq2.readyState !=4)
{
return;
}
if (ajaxreq2.status==200)
{
// Create Variables
var ul,div,name,names,text,li,i,a;
ul = document.getElementById("list");
div = document.getElementById("resultVenue0");
div.removeChild(ul);
ul = document.createElement("ul");
ul.id="list";
names = ajaxreq2.responseXML.getElementsByTagName("name");
for (i = 0; i < names.length; i++)
{
arrayCount = 0;
li = document.createElement("li");
name = names[i].firstChild.nodeValue;
text = document.createTextNode(name);
li.appendChild(text);
a = document.createElement("a");
a.href = "#";
a.appendChild(li);
ul.appendChild(a);
}
if (names.length==0) {
li = document.createElement("li");
divCity0.style.display="none";
li.appendChild(document.createTextNode("No results"));
ul.appendChild(li);
array0 = new Array();
arrayCount = 0;
}
divCity0.style.display="block";
div.appendChild(ul);
}
}
最后这里是'the searchvenue.php'文件,客户端浏览器将使用ajax访问该文件。它将执行php脚本并在数据库中执行搜索。
<?php
header("Content-type: text/xml");
$host = "localhost";
$user = "root";
$code = "";
$db = "matrix2";
$connect = mysqli_connect($host,$user,$code,$db);
$sql = "SELECT city FROM citylist;";
// searching a table called citylist and getting the Column 'city'
$result = mysqli_query($connect,$sql);
$query=$_POST['msg'];
// Argument OR paramter received from the CLIENT browser
// ( the HTML input field )
echo '<?xml version="1.0" ?>';
echo "<names>";
while ($array = mysqli_fetch_assoc($result) )
{
if (stristr($array['city'],$query))
{
echo "<name>".$array['city']."</name>";
}
}
echo "</names>";
?>
php脚本获取整个数据库,只有通过使用'stristr'函数才能过滤结果,然后通过XML格式返回给客户端的请求。应该有更好的SQL查询可以执行。
但是请记住,为了测试这个,在searchplace .php脚本中,你必须更改变量$host, $user, $code和$db的值,以匹配你想要参与的数据库
DROP TABLE IF EXISTS `citylist`;
CREATE TABLE IF NOT EXISTS `citylist` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`city` varchar(50) NOT NULL,
`target_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
INSERT INTO `citylist` (`id`, `city`, `target_id`) VALUES
(1, 'cape town', 385095),
(2, 'durban', 295693),
(3, 'johannesburg', 886895);
下面是创建和填充citylist表的测试代码,在当前示例中使用