Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Stronnicowanie - błąd
Forum PHP.pl > Forum > Przedszkole
raum
Witam! Chciałbym was prosić o pomoc w rozwiązaniu następującego problemu. Mam taki kod do porcjowania wyników w którym mam ustawione by wyświetlało się 20 wyników na stronie. Gdy chcę wyświetlanie wyników ograniczyć do 15 wyświetleń wtedy po wyświetleniu 15 artykułów w danej kategorii na dole strony wyświetla mi się stronicowanie w postaci 1,2,3,4,5. Moje pytanie brzmi dlaczego nie wyświetla mi się na dole przejście do drugiej strony tylko wyświetla się 5 stron ponumerowanych od 1 do 5.

  1. <?php
  2.  
  3. @$baza = mysql_connect('localhost', 'root', '') or die ("Nie można się poł?czyć"); mysql_select_db(newsy) or die ("Nie mozna wybrać bazy danych");
  4.  
  5. define('DOMYSLNA_KATEGORIA',2);
  6. $id = intval($_GET['id']);
  7. if($id <= 0) $id = DOMYSLNA_KATEGORIA;
  8.  
  9. $ile_newsow_na_stronie = 20;
  10.  
  11. $strona = intval($_GET['strona']) - 1;
  12.  
  13. list($ilosc) = @mysql_fetch_row(mysql_query("select count(*) from wpisy WHERE kategoria=".$id));
  14.  
  15. if(($strona < 0) || (($s * $ile_newsow_na_stronie) > $ilosc)) $strona = 0;
  16.  
  17. $q = mysql_query("select id, tytul, tresc from wpisy WHERE kategoria=".$id." order by id desc limit ".($strona * $ile_newsow_na_stronie).", $ile_newsow_na_stronie"); echo mysql_error();
  18.  
  19. while(list($id, $tytul, $tresc, $slowa, $nick, $email, $adres, $data) = @mysql_fetch_row($q)) {
  20.  
  21. echo '<h2><b><a href="http://'.$adres.'" title="'.$slowa.'">'.$tytul.'</b></h2></a><br><div class="story"><img src="http://open.thumbshots.org/image.pxf?url=http://'.$adres.'" p class="story"> '.$tresc.'<br><br><b>Dodał:</b> '.$nick.' <b>dnia</b> '.$data.' <br><br><b>Słowa kluczowe:</b> '.$slowa.'<br><br></div>';
  22.  
  23. }
  24.  
  25. $max = intval($ilosc / $ile_newsow_na_stronie);
  26.  
  27. for($i=0;$i<$max;$i++) {
  28.  
  29. if($strona == $i) {
  30.  
  31. echo ($i + 1).' ';
  32.  
  33. }else{
  34.  
  35. echo '<a href="?strona='.($i+1).'">'.($i+1).'</a> ';
  36.  
  37. }
  38.  
  39. }
  40.  
  41. ?>


Proszę o pomoc.
thek
Proszę o poprawienie znacznika phpBB na właściwy, by nikt z moderatorów nie musiał zamknąć tematu a i użytkownikom czytanie kodu nie sprawiało problemu. Dziękuje za uwagę. Pisał dla Państwa Włodzimierz Szaranowicz tongue.gif
raum
Poprawiłem post i umieściłem go w odpowiednich znacznikach phpBB. Aktualnie nadal proszę was o pomoc w rozwiązaniu problemu.
nospor
Cytat
Moje pytanie brzmi dlaczego nie wyświetla mi się na dole przejście do drugiej strony tylko wyświetla się 5 stron ponumerowanych od 1 do 5.
Dziwne pytanie....
Bo na dole masz pętle, która wyswietla ci tyle strona ile wynika z liczby rekordów.
raum
nospor dzięki za info dziś postaram się zmienić to tak by pętla wyświetlała ilość artykułów znajdujących się w danej kategorii a nie tyle stron ile wynika z liczby rekordów.

Mam jeszcze jedno pytanie związane z moim problemem - poniższe rozwiązanie działa mi na localhost a nie działa na serwerze cal.pl. Proszę o pomoc albo chociaż wyjaśnienie gdzie leży błąd.

Listing1 - index.php

  1.  
  2. @$baza = mysql_connect('localhost', 'root', '') or die ("Nie można się poł?czyć");
  3. mysql_select_db(newsy) or die ("Nie mozna wybrać bazy danych");
  4. $wynik = mysql_query ("SELECT * FROM cat");
  5. while ($wynik && $rekord = mysql_fetch_array ($wynik)) {
  6.  
  7. $_GET['cat_id'];
  8. echo "<a href=\"newsy.php?id=".$rekord['cat_id']."\">";
  9. echo $rekord['cat_nazwa']."</a> <br> ";
  10. }
  11. mysql_close($baza);
  12.  


Listing2 - newsy.php

  1. mysql_connect('localhost', 'root', '') or die ("Nie można się poł?czyć");
  2. mysql_select_db(newsy) or die ("Nie mozna wybrać bazy danych");
  3.  
  4. define('DOMYSLNA_KATEGORIA',1);
  5. $id = intval($_GET['id']);
  6. if($id <= 0) $id = DOMYSLNA_KATEGORIA;
  7.  
  8. $_GET['cat_id'];
  9. $ile_newsow_na_stronie = 3;
  10.  
  11. $strona = intval($_GET['strona']) - 1;
  12.  
  13. list($ilosc) = @mysql_fetch_row(mysql_query("select count(*) from wpisy WHERE kategoria=".$id));
  14.  
  15. if(($strona < 0) || (($s * $ile_newsow_na_stronie) > $ilosc)) $strona = 0;
  16.  
  17. $q = mysql_query("select id, tytul, tresc, slowa, nick, email, adres, data, kategoria from wpisy WHERE kategoria=".$id." order by id desc limit ".($strona * $ile_newsow_na_stronie).", $ile_newsow_na_stronie"); echo mysql_error();
  18.  
  19. while(list($id, $tytul, $tresc, $slowa, $nick, $email, $adres, $data) = @mysql_fetch_row($q))
  20.  
  21. {
  22.  
  23. echo '<b><a href="http://'.$adres.'" title="'.$slowa.'">'.$tytul.'</b></a><br> '.$tresc.'<br><br><b>Dodał:</b> '.$nick.' <b>dnia</b> '.$data.' <br><br><b>Słowa kluczowe:</b> '.$slowa.'<br><br></div>';
  24.  
  25. }
  26.  
  27. $max = intval($ilosc / $ile_newsow_na_stronie);
  28.  
  29. for($i=0;$i<$max;$i++) {
  30.  
  31. if($strona == $i) {
  32.  
  33. echo ($i + 1).' ';
  34.  
  35. }else{
  36.  
  37. echo '<a href="?strona='.($i+1).'">'.($i+1).'</a> ';
  38.  
  39. }
  40.  
  41. }


Tak jak pisałem wyżej - stronicowanie działa bez zarzutów na localhost a na innym serwerze niestety sypie się :/. Macie jakieś pomysły? (dodam jeszcze iż register_globals mam ustawione na Off)
nospor
Zastosuj się proszę do podanych tu porad:
Temat: Jak poprawnie zada pytanie
a zobaczysz błędy
raum
Cytat(nospor @ 14.05.2010, 20:06:15 ) *
Zastosuj się proszę do podanych tu porad:
Temat: Jak poprawnie zada pytanie
a zobaczysz błędy


Ok dziękuje za link zabieram się za czytanie.
rafaln
Tutaj znajdziesz moje rozwiązanie na stronicowanie:

Temat: MySQLPHP Stronicowanie danych
adrianozo
A tutaj moje :]
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.