Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]paginacja nie działa
Michał90
post
Post #1





Grupa: Zarejestrowani
Postów: 267
Pomógł: 0
Dołączył: 16.05.2007

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


Witam,
Mam taki kod
  1. <?php
  2. if(isset($_POST['znajdz']))
  3. {
  4. $tytul = $_POST['tytul'];
  5. $autor = $_POST["autor"];
  6. $tytul = ucfirst(strtolower($tytul));
  7. $autor = ucfirst(strtolower($autor));
  8. if (empty($_GET['page']) || !is_numeric($_GET['page']) || $_GET['page'] < 0) {
  9. $page = 1;
  10. } else {
  11. $page = $_GET['page'];
  12. }
  13. $ile=5;
  14. $od=($page*$ile);
  15. $connection = mysql_connect('localhost','xxxx','xxxx','xxxx');
  16. mysql_select_db ('xxxxx');
  17.  
  18.  
  19. if(empty($tytul) && empty($autor)) {
  20. die("Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!");
  21. }
  22. $zapytanie = exit("SELECT * FROM `wynik` WHERE `tytul` LIKE '%$tytul%' AND `autor` LIKE '%$autor%' LIMIT ".$od.",".$ile."") or die(mysql_error());
  23.  
  24. if(mysql_num_rows($zapytanie)==0){
  25. echo "Nie znaleziono wpisów.";
  26. }
  27.  
  28. while( $row = mysql_fetch_array($zapytanie) )
  29. {
  30.  
  31. echo '<div class="post">';
  32. echo '<div class="l"> <a href='.$row['link'].' title='.$row['linka'].'><img src='.$row['img'].' alt="" /></a> </div>';
  33. echo '<div class="r">';
  34. echo '<h2><a href='.$row['link'].' title='.$row['linka'].'>'.$row['tytul'].'</a></h2>';
  35. echo '</div>';
  36. echo '</div>';
  37.  
  38. }
  39.  
  40. echo '<a href="search.php?page='.$page.'">następna</a>';
  41.  
  42.  
  43. mysql_close($connection);
  44. }
  45. ?>


Ale jak klikne następną strone to już nie ma wyników dlaczego (IMG:style_emoticons/default/sad.gif) ?

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Po pierwsze to zdecyduj się czy pierwsza strona jest numerowana od 0 czy 1 (IMG:style_emoticons/default/smile.gif) Bo jeśli od 0 to Ci się rypnie skrypt przy sprawdzaniu empty, który stronę 0 wychwyci jako pustą i wpisze tam 1, czyli de facto drugą.
Jeśli zaczynać chcesz od strony pierwszej to musisz od wyników odejmować 1 bo pierwszą partią jaką poślesz do bazy będzie LIMIT 5, 5 czyli pobierz 5 rekordów począwszy od 5, a nie o to Ci chyba chodzi, tylko LIMIT 0, 5 (IMG:style_emoticons/default/smile.gif)
Stąd konieczność zmiany
  1. if (empty($_GET['page']) || !is_numeric($_GET['page']) || $_GET['page'] < 1) {
  2. $page = 1;
  3. } else {
  4. $page = $_GET['page']-1;
  5. }
lub jak radzi Szeszek dopiero przy zmiennej $od odejmować 1.
No i wspomnianej strony Następna na o DWA większą (o jeden jeśli posłużysz się sposobem Szeszka), bo w końcu wcześniej zmniejszyłeś ją już o jeden (IMG:style_emoticons/default/smile.gif)
  1. echo '<a href="search.php?page='.($page+2).'">następna</a>';
Inna sprawa, że głupotą jest tak robić bo nie masz ogranicznika i możesz nawet sobie od 3 strony mieć wyniki puste, ale możesz przechodzić sobie na kolejne do usranej śmierci bo link Następna nadal będzie się zwiększał. Musisz zrobić ograniczenie, które wyeliminuje dodawanie tego linku gdy osiągniesz ostatnie rekordy tabeli.

Ten post edytował thek 22.01.2010, 21:00:35
Go to the top of the page
+Quote Post

Posty w temacie
- Michał90   [PHP][MySQL]paginacja nie działa   22.01.2010, 19:43:53
- - Tokk   [PHP] pobierz, plaintext $zapytanie = mysql_query...   22.01.2010, 20:15:45
- - Michał90   Zmieniłem ale nie pomogło... Tzn. jest tak samo wy...   22.01.2010, 20:22:31
- - Szeszek1992   Zacznijmy od tego: [PHP] pobierz, plaintext $ile=5...   22.01.2010, 20:43:26
- - thek   Po pierwsze to zdecyduj się czy pierwsza strona je...   22.01.2010, 20:59:17
- - Szeszek1992   Dla ścisłości http://php.about.com/od/mysqlcommand...   22.01.2010, 21:07:41
- - Michał90   czyli tak to ma wyglądać? [PHP] pobierz, plaintex...   22.01.2010, 21:20:34
- - Szeszek1992   Odpowiedź chyba jest prostsza, niż myślałem. Dane ...   22.01.2010, 21:27:59
- - Michał90   Tak to ma wyglądać? [PHP] pobierz, plaintext ...   22.01.2010, 22:18:18
- - Szeszek1992   [PHP] pobierz, plaintext echo '<a href="se...   22.01.2010, 22:30:04
- - Michał90   znajdz tylko rak się pojawia w adresie jak coś wys...   22.01.2010, 22:34:02
- - Szeszek1992   Czyli rozwiązanie nr 2.   22.01.2010, 22:38:22
- - Michał90   No działa już mi ta paginacja ;] Jak zrobić taki...   22.01.2010, 22:45:00
- - Szeszek1992   [PHP] pobierz, plaintext $iloscwynikow = mysql_fet...   22.01.2010, 22:56:07
- - Michał90   Bo jak wywaliłem [PHP] pobierz, plaintext if...   22.01.2010, 23:04:35
- - Szeszek1992   Zamiast [PHP] pobierz, plaintext if(isset...   22.01.2010, 23:27:14
- - Michał90   Gdy zamieniłem na to: [PHP] pobierz, plaintext if...   23.01.2010, 16:59:41
- - Szeszek1992   Troszkę własnej inwencji... Nie dam Ci gotowca, na...   23.01.2010, 17:18:29
- - Michał90   Czyli z tego kodu mogę skorzystać? [PHP] pobierz,...   23.01.2010, 17:22:31
- - Szeszek1992   Tak, możesz skorzystać z tej części kodu.   23.01.2010, 17:24:21
- - Michał90   Robię to na pętli for ponieważ znalazłem przykład ...   23.01.2010, 19:16:43
- - Szeszek1992   Użyj mysql_query lub zapoznaj się z manualem dotyc...   23.01.2010, 20:30:45
- - Michał90   Kurcze próbowałem ale nie wyświetla mi tych stron   24.01.2010, 16:06:03
- - Szeszek1992   [PHP] pobierz, plaintext echo "Strony: ...   24.01.2010, 16:10:46
- - Michał90   Dałem tak: [PHP] pobierz, plaintext echo "Str...   24.01.2010, 16:34:17
- - thek   Taaa... A przy 40 stronach zrobi linijkę z 40 link...   24.01.2010, 16:46:42
- - Szeszek1992   Podobnie napisałem mu na poprzedniej podstronie(ni...   24.01.2010, 17:01:10
- - Michał90   Dobra zrobiłem to tak jak miałem Tylko dodałem j...   24.01.2010, 17:07:40


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

 



RSS Aktualny czas: 13.10.2025 - 17:31