Wyszukiwanie w bazie i sortowanie


(Radmistrz2) #1

Zadaję zapytanie do bazy, które zwraca mi szereg wyników w tablicy (WHERE id LIKE $zmienna) . Chciał bym aby wyniki były poukładane od tego najbardziej pasującego do wyrażenia $zmienna do najmniej. Taka wyszukiwarka winksmiley.jpg Nie mam pojęcia jak to zrobć. Pytałem wujka na zapytania sortowanie mysql ale nic konkretnego ... Wie ktoś może??


(system) #2

Właśnie przymierzam się do takiej wyszukiwarki, potrzebne komendy w mysql to MATCH() i AGAINST(). Do szukanej kolumny utworzyć index FULLTEXT.


(Radmistrz2) #3

Niby napisałem coś takiego ale nie działa. Wyświetla błąd w "while ($wiersz = mysql_fetch_row($zapytanie))"

$wns = 10;

settype($strona, "integer");


$tresc_zapytania_max = 'SELECT `id`, `post_date`, `post_title`, `link`, `size` MATCH (post_title) AGAINST ('.$_GET['szukaj'].') AS score FROM `wp_posts` WHERE MATCH (post_title) AGAINST ('.$_GET['szukaj'].') ORDER BY MATCH (post_title) AGAINST ('.$_GET['szukaj'].') DESC';

$zapytanie_max = mysql_query($tresc_zapytania_max);

// $r_max zawiera ilosc wszystkich rekordow w tabeli

$r_max = mysql_num_rows($zapytanie_max);


$tresc_zapytania = 'SELECT `id`, `post_date`, `post_title`, `link`, `size` MATCH (post_title) AGAINST ('.$_GET['szukaj'].') AS score FROM `wp_posts` WHERE MATCH (post_title) AGAINST ('.$_GET['szukaj'].') ORDER BY MATCH (post_title) AGAINST ('.$_GET['szukaj'].') DESC LIMIT '.(($strona-1)*$wns).','.$wns;

$zapytanie = mysql_query($tresc_zapytania);

while ($wiersz = mysql_fetch_row($zapytanie)) 

{

echo '
		

Tytuł: '.$wiersz[2].' 
 Rozmiar: '.$wiersz[4].' |				

Dodano: '.$wiersz[1].' | Pobierz';

}[/code]

(system) #4

http://blog.kutar.pl/2008/05/wyszukiwan ... -fulltext/