Преди време ми се наложи да пиша търсачка за нещо подобно на проект за сайт и понеже нямах никаква идея как да го направя, рових в google доста време със спорни резултати – огромни проекти, платени неработещи tutorial-и и т.н. След четене, мислене и малко късмет успях да подкарам възможно най-простия search enginge, който мога да си представя.
Оказа се, че цялата работа била в заявката. Ясно ми е, че и да обяснявам, и да развивам теории, единственото, което се търси в такива статии е кода, затова направо го пускам
За да тръгне всичко по-долу са нужни:
- http сървър (apache, lighttpd, etc.)
- php версия > 4
- MySQL версия 5 и нагоре
- достъп до база данни
Най-важното е таблицата, в която ще търсим. В този случай ще се търси в три колони – за име, фамилия и e-mail. Ето sql заявката за таблицата:
CREATE TABLE `searchinhere` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`fname` VARCHAR( 255 ) NOT NULL ,
`lname` VARCHAR( 255 ) NOT NULL ,
`age` VARCHAR( 255 ) NOT NULL ,
`mail` VARCHAR( 255 ) NOT NULL ) TYPE = MYISAM ;
Следва форма, която да подава на скрипта низа, който търсим:
<form method="post">
<input maxlength="50" name="search" size="25" type="text" />
<input name="Submit" type="Submit" value="Search" />
</form>
След това идва кода, който обработва пратеното от формата:
<?
if(isset($_POST['search'])){
$min = 1;
$max = 50;
if (strlen($_POST['search']) >= $min && strlen($_POST['search']) <= $max) {
mysql_connect("host","user","pass");
mysql_select_db("searchinme");
$search=$_POST["search"];
$result = mysql_query("select * from searchinhere where fname like '%$search%' or lname like '%$search%' or mail like '%$search%'");
$results=mysql_num_rows($result);
echo "
<h2>$results results returned for \"$search\"</h2>
";
while($r=mysql_fetch_array($result)){
$id=$r['id'];
$fname=$r['fname'];
$lname=$r['lname'];
$age=$r['age'];
$mail=$r['mail'];
echo "<strong>id:</strong> $id <br />
<strong>First Name:</strong> $fname <br />
<strong>Last Name:</strong> $lname <br />
<strong>Age:</strong> $age <br />
<strong>e-mail:</strong> $mail <br />
<hr />";
}
}
else{
echo "Трябва да въведете от <b>$min</b> до <b>$max</b> символа!";
}
}
else {
//do nothing
}
?>
Главната работа се върши от реда
$result = mysql_query("select * from searchinhere where fname like '%$search%' or lname like '%$search%' or mail like '%$search%'");
Това е. Ако на някой му трябват обяснения, да вика. Не съм настроен да коментирам всеки ред.




