Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> wyszukiwanie w bazie i sortowanie
radmistrz2
post
Post #1





Grupa: Zarejestrowani
Postów: 143
Pomógł: 4
Dołączył: 2.03.2008

Ostrzeżenie: (10%)
X----


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??
Go to the top of the page
+Quote Post
nevt
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


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...


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
wookieb
post
Post #3





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Do takich rzeczy tworzy sie bardziej zaawansowane algorytmy.


--------------------
Go to the top of the page
+Quote Post
vokiel
post
Post #4





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
radmistrz2
post
Post #5





Grupa: Zarejestrowani
Postów: 143
Pomógł: 4
Dołączył: 2.03.2008

Ostrzeżenie: (10%)
X----


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. ?>
Go to the top of the page
+Quote Post
vokiel
post
Post #6





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


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. ?>


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 03:43