Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Програмиране на собствена търсачка с MySQL и PHP
  1. Въведение
  2. Създаване на търсачката
  3. Извеждане на резултатите от търсенето
  4. Пример за тестване
Mutatos
     
Автор  Mutatos (14.04.2005 22:30)  съобщение до автора
Погледнат  5898 пъти  добави към любими
Оценка  добави коментар
Гласове  4  изпрати на приятел
Коментари  (2)  абонирай се за PHP
    Страница 2 / 4

 



Създаване на търсачката

Първо си създаваме един нов файл на име form.html и създаваме в него формата за търсене. За тази цел си създаваме едно текстово поле и един бутон за търсене.


CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<html>
<
head>
<
title>Search</title>
<
meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</
head>

<
body>
<
table border="0" cellspacing="2" cellpadding="0">
    <
tr>
        <
form action="search.php" method="GET">
        <
td colspan="2" align="center">
            <
input name="search_query" type="text">
            <
input name="search_button" type="submit" value="Search">
        </
td>
        </
form>
    </
tr>
</
table>
</
body>
</
html>


Следва PHP кода, който ще въведем в нашия документ на име search.php.


Запитването към MySQL


CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?
mysql_pconnect("xxx","xxx","xxx")
or die ( 'Unable to connect to server.' );

mysql_select_db("test")
or die ( 'Unable to select database.' );

$RESULTS_LIMIT=10;

if(isset($search_query))
{
   
if(!isset($first_pos))
    {
       
$first_pos = "0";
   
}
       
   
$start_search = getmicrotime();
   
   
$sql_query = mysql_query("SELECT * FROM news WHERE MATCH(title,article) AGAINST('$search_query')");
   
   
   
if($results = mysql_num_rows($sql_query) != 0)
    {
       
$sql_result_query = mysql_query("SELECT * FROM news WHERE MATCH(title,article) AGAINST('$search_query') LIMIT $first_pos, $RESULTS_LIMIT");   
   
}
   
else
   
{
       
$sql_query = mysql_query("SELECT * FROM news WHERE (title LIKE '%".$search_query."%' OR article LIKE '%".$search_query."%') ");
       
$results = mysql_num_rows($sql_query);
       
$sql_result_query = mysql_query("SELECT * FROM news WHERE (title LIKE '%".$search_query."%' OR article LIKE '%".$search_query."%') LIMIT $first_pos, $RESULTS_LIMIT ");
   
}
   
   
$stop_search = getmicrotime();
   
$time_search = ($stop_search - $start_search);
}
?>


За да можем да продължим нататък трябва да разберем какво точно направихме по-горе. Първо гледаме дъли изобщо е зададена някаква фраза за търсене. Ако това е факт, то променливата $query_string ще съществува. След като вече е зададена фразата проверяваме дъли съществува маркера за нашето прилистване на резултатите. Т.е ако променливата $first_pos не съществува, то ние задаваме, че показването на резултатите ще започва от първа страница, като инициализираме променливата със стойност нула.

Първата заявка претърсва полетата title, article за фразата $search_query. Един от недостатъците при това запитване, е че MySQL не извежда резултати за фрази, който се срещат прекалено често в текстовете. Поради тази причина проверяваме броя на намерените резултати и ако той е нула, то тогава преминаваме към стандартно претърсване на полетата от таблицата с LIKE %...%, което в общи линии е малък недостатък, тъй като чрез този вид запитване нямаме възможност да използваме INDEX.

Специално за изчисляването на времето на заявката написваме една функция, която да връща времето в секунди.

CODE
1
2
3
4
5
function getmicrotime()
{
   
list($usec, $sec) = explode(" ", microtime());
   
return ((float)$usec + (float)$sec);
}

За изчисляване на времето на търсенето, извикахме два пъти функцията преди и след запитването:

CODE
1
2
3
$start_search = getmicrotime();
$stop_search = getmicrotime();
$time_search = ($stop_search - $start_search);

Променливата $time_search съдържа времето на запитването към базата за данни.



 << Предишна страница Следваща страница >> 


Ключови думи: PHP myslq програмиране търсачка таблица fulltext index заявка запитване


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 За автора: Mutatos  
Николай Николов се занимава с програмиране на PHP/MySQL повече от 6 години. Заедно с разработката на уеб приложения на PHP, се занимава с Java, XML и Webservices.
   
 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

Ми на ред 104 или 105 си пропуснал да сложиш ;

  Mutatos на 03.12.2006 11:21

Направих всичко точно но когато искам да търся нещо ми излиза това
 CODE
1
Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in C:\Program Files\Xammpp\xampp\htdocs\Test\search.php on line 105
как да го оправя?

  k1amera на 16.05.2006 17:50

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008