Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwarka i stronicowanie w jednym
Forum PHP.pl > Forum > Bazy danych > MySQL
kuzarek
Postanowilem zmiksowac skrypt wyszukiwarki i skrypt odpowiedzialny za stronicowanie. Skrypty ww. zaczerpnalem ze stron tego forum.
Sprawa wyglada tak, ze majac slowo, które użytkownik szuka (zmienna $klucz) łacze się z bazą i wykonuje zapytanie:

Plik wynik.php
  1. $wykonaj = mysql_query("SELECT *
  2.  
  3. FROM $nazwa_tabeli WHERE nazwa like '%$klucz%' or miasto like '%$klucz%' or inne like '%$klucz%'
  4. ORDER by `id`
  5. LIMIT ".($page*$ile).", $ile") OR die(mysql_error());


Aby wszystko powyżej gralo ustawiam zmienna $ile = 5 . Tak dla info zmienna $klucz jest nazwą pola input wyszukiwarki.
Następnie za pomocą funkcji while wyświetlam np. nazwy rekordów które spelniaja kryteria wyszukiwania.

  1. <?php
  2.  
  3. while ($row = mysql_fetch_array($wykonaj))
  4. {
  5. echo"<table width="600">
  6. <tr>
  7. <td width="600"><div class="nazwa">".$row['nazwa']."</div></td>
  8. </tr>
  9. </table>";
  10. }
  11.  
  12. ?>

Nastepnie korzystajac z poniyszego skryptu zliczam ile jest rekordów które zawierają słowo pochodzące ze zmiennej $klucz i na tej podstawie mogę ustalić liczbe
podstron.
  1. <?php
  2.  
  3. $zapytanie = "SELECT count(*) 
  4.  FROM $nazwa_tabeli 
  5.  WHERE nazwa like '%$klucz%' 
  6.  OR miasto like '%$klucz%' 
  7.  OR inne like '%$klucz%'";
  8. $zlicz = mysql_db_query($nazwa_bazy,$zapytanie);
  9.  
  10. $podstron=ceil($wszystkich/$ile-1);
  11. if ($page>0) echo "<a href=wynik.php?page=".($page-1).">Poprzednia</a>"; else
  12. echo "Poprzednia";
  13. for($x=0;$x<=$podstron;$x++)
  14.  {
  15.  
  16. if ($x==$page) echo "[ ".($x+1)." ] "; else echo "<a href=wynik.php?page=$x>".($x+1)." </a>";
  17.  }
  18. if ($page<$podstron) echo "<a href=wynik.php?page=".($page+1).">Następna</a>";
  19. else echo "Następna";
  20.  
  21. ?>


Wszystko wydaje sie być ok, tzn. wyświetla się prawidłowa liczba podstron, a także wyniki są prawidłowo wyświetlane, ale tylko na 1 stronie.
Załóżmy że w wyniku szukania słowa kluczowego "123" mamy 17 rekordów i ustawiamy zmienną $ile na 5 to na pierwszej stronie otrzymujemy
5 wyników i pod spodem < poprzednia 1 [2] [3] [4] nastepna > , ale po kliknięciu na którąkolwiek z podstron skrypt jakby zapomina o warunkach
dla rekordów czego wynikiem jest wyświetlenie wszystkich wyników z bazy i pod spodem oczywiście zmienia sie ilość numerów podstron zgodnie z
zasadą (liczba rekordów w bazie): $ile .

Bardzo proszę o wskazówke, bo nie mam pojecia co może byc nie tak. Próbowałem przerobić na swoje potrzeby skrypt z postu http://forum.php.pl/index.php?showtopic=681 , który po przerobieniu na moje potrzeby zachowywał się tak samo jak ten "mój", czyli pierwsza strona ok, a już pozostałe nie wyświetlają wyników zgodnie z warunkami.

Coś mi chodzi po głowie, że może w jakiś sposób wartość zmiennej $klucz nie jest przekazywana do podstron, ale jak to zrobić? Coś czytałem kiedyś o global() czy coś w tym stylu, ale czy to by pomogło?

Pozdrawiam
nospor
Jest kilka sposobow na pamietanie warunku.
1) trzymanie w sesji
2) jesli to jest tylko jedna zmienna,mozesz tez pokusic sie o jej przekazywanie w url razem z numerem kolejnej strony
kuzarek
Dzięki śliczne za rade! Udało mi się poprzez przekazanie wartości zmiennej $klucz w adresie URL do kolejnych stron poprzez użycie "&klucz=$klucz". Dla przykładu podam jak teraz wygląda linia 11 mojego kodu

Było:
  1. <?php
  2.  
  3. if ($page>0) echo "<a href=wynik.php?page=".($page-1).">Poprzednia</a>"; else
  4.  
  5. ?>

Jest:
  1. <?php
  2.  
  3. if ($page>0) echo "<a href=wynik.php?page=".($page-1)."&klucz=$klucz>Poprzednia</a>"; else
  4.  
  5. ?>


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