Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] stronicowanie z kategoriami - blad
Forum PHP.pl > Forum > Przedszkole
mate
Witam!
Mam prosty skrypcik z artykulami, ale z podzialem na kategorie. Ograniczylem ilosc wyswietlanych artow do 25 na strone, ale artow sie zrobilo w niektorych kategoriach tak duzo, ze klikanie caly czas 'dalej' moze sie zrobic nudne i chcialem dodac stronicowanie, zeby byly widocznie numerki na dole. Skorzystalem z FAQ (http://forum.webhelp.pl/faqforum.php?f=1#36) i pomieszalem oba kody, zeby jako tako dzialalo. I juz niby wszystko dziala, jest stronicowanie, jednak zamiast odpowiednia ilosc podstron na kategorie w danej kategorii to wyswietlaja sie wszystkie podstrony z cala iloscia artykulow na kazdej kategorii.
Na poczatku skryptu mam taki kod:
  1. <?php
  2. $lastpage = false;
  3.  
  4.  if ($pagenum == 0) {
  5. $startrow = 0;
  6.  } else {
  7. $startrow = 25 * $pagenum;
  8.  }
  9.  
  10.  if ($numrows < $startrow + 25) {
  11. $endrow = $numrows;
  12. $lastpage = true;
  13.  }
  14.  
  15.  if ($letter) {
  16.  
  17. $sql = "select tipid, title, date, rating from tips where title like '$letter%' and status = 'L' order by title limit $startrow,25";
  18. $pagetitle = "Tips starting in the letter '$letter'";
  19.  
  20.  } else {
  21.  
  22. $sql = "select * from categories where catid = $catid";
  23. $result = mysql_query($sql ,$db);
  24. $row = mysql_fetch_row($result);
  25. $pagetitle = $row[1];
  26.  
  27. $sql = "select tipid, title, date, rating from tips where catid = $catid and status
     = 'L' order by title limit $startrow,25"
    ;
  28.  
  29. }
  30. ?>


A pozniej na dole, w miejscu wyswietlania tych numerow:
  1. <?php
  2. //ile na strone
  3. $ile = 25;
  4. $numrows = mysql_num_rows(mysql_query("select tipid, title, date, rating from tips where title like '$letter%' and status = 'L' order by title"));
  5. if(!$p) $p = 0;
  6. // zabezpieczenie przed nienumerycznymi wartosciami
  7. $p = (int)$p; 
  8. $ile = (int)$ile; 
  9. $query = mysql_query("select tipid, title, date, rating from tips where title like '$letter%' and status = 'L' order by title LIMIT $p,$ile");
  10. echo "Strona: ";
  11. for($i=0;$i<ceil($numrows/$ile);$i++) {
  12. echo '<a href=list.php?pagenum='.($i+1).'&catid='.($catid).'>['.($i+1).']</a> ';
  13. }
  14. ?>

Moze dla 'profesjonalistow' to sie wydae smieszne co zrobilem, ale za dobry w tym nie jestem, a na stronie niby wszystko dziala, jednak tylko to szwankuje co juz pisalem wyzej. Wiem, ze blad jest gdzies w tym dolnym kodzie, jednak nie wiem co zmienic, zeby w kazdej kategori wyswietlalo tyle podstron ile ma byc w danej kategorii, a nie wszystkie podstrony z wszystkimi artykulami.

Pozdrawiam i mam nadzieje, ze ktos pomoze ;]
Saddam92
  1. <?php
  2. $numrows = mysql_num_rows(mysql_query("select tipid, title, date, rating from tips where title like '$letter%' and status = 'L' and catid=$catid order by title"));
  3. ?>
Wydaje mi się że zapominałeś o ograniczeniu wyników do danej kategorii..

Pozdrawiam smile.gif
p.s admini dlaczego parser bbcode w kodzie [php] przed " wstawia \ questionmark.gif
mate
ok teraz dziala, dzieki!
Ale pojawil sie 2 blad..
Do listy podstron jest dodawana zawsze o jedna wiecej niz ich jest faktycznie i tamta jest pusta. Jak to zablokowac?
Pozdro
Saddam92
  1. <?php
  2. for($i=1;$i<ceil($numrows/$ile);$i++) {
  3. echo '<a href=list.php?pagenum='.$i.'&catid='.($catid).'>['.$i.']</a> ';
  4. }
  5. ?>
trochę nie potrzebnie kombinowałeś ..
mate
to jest to!
wielkie dzięki!
pozdro:)
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.