Търсене в mysql

Преди време ми се наложи да пиша търсачка за нещо подобно на проект за сайт и понеже нямах никаква идея как да го направя, рових в 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 &amp;&amp; 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%'");

Това е. Ако на някой му трябват обяснения, да вика. Не съм настроен да коментирам всеки ред.

This entry was posted in Geeky, IT, short. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

Anti-Spam Protection by WP-SpamFree