Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyszukiwanie w bazie i sortowanie
Forum PHP.pl > Forum > PHP
radmistrz2
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??
nevt
nie ma czegoś takiego jak wynik wyszukiwania mniej lub bardziej pasujący do wyrażenia LIKE. albo pasuje albo nie pasuje. koniec kropka. nie ma innych opcji...
wookieb
Do takich rzeczy tworzy sie bardziej zaawansowane algorytmy.
vokiel
Coś w ten deseń (pisane z palca)
  1. SELECT
  2. NAZWA,
  3. MATCH (`NAZWA`) AGAINST ('słowo') AS licznik_waznosci
  4. FROM TABELA WHERE MATCH (`NAZWA`) AGAINST ('słowo')
  5. ORDER BY `licznik_waznosci` DESC
radmistrz2
Niby napisałem coś takiego ale nie działa. Wyświetla błąd w "while ($wiersz = mysql_fetch_row($zapytanie))"

  1. <?php
  2. $wns = 10;
  3. settype($strona, "integer");
  4.  
  5. $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';
  6. $zapytanie_max = mysql_query($tresc_zapytania_max);
  7. // $r_max zawiera ilosc wszystkich rekordow w tabeli
  8. $r_max = mysql_num_rows($zapytanie_max);
  9.  
  10. $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;
  11. $zapytanie = mysql_query($tresc_zapytania);
  12. while ($wiersz = mysql_fetch_row($zapytanie))
  13. {
  14. echo '<p class="post-footer">        
  15. Tytu: <a href="index.php?id='.$wiersz[0].'" class="date">'.$wiersz[2].'</a> <br /> Rozmiar: <span class="date">'.$wiersz[4].'</span> |                
  16. Dodano: <span class="date">'.$wiersz[1].'</span> | <a href="'.$wiersz[3].'" class="date">Pobierz</a></p>';
  17. }
  18. ?>
vokiel
Jak pokazuje przykład poniżej, ten sposób działa smile.gif
  1. SELECT `ID_ARTYKULU`, `NAZWA`, MATCH (`NAZWA`) AGAINST ('asus') AS licznik_waznosci FROM `ARTYKUL` WHERE MATCH (`NAZWA`) AGAINST ('asus')
  2. ORDER BY `licznik_waznosci` DESC





Zatem zajmijmy się Twoim smile.gif
wygląda tak:
  1. <?php
  2. $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';
  3. ?>


A powinno raczej tak:
  1. <?php
  2. $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  score DESC';
  3. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.