Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z kodem
Forum PHP.pl > Forum > PHP
djgarsi
Witam. Od pewnego czasu nie moge się uporać z kodem stronicowania.sad.gif

Oto i mój kod:
  1. <?
  2.  
  3.  
  4.  
  5. if($strona>1)
  6.  
  7. echo "<a href=".$link."_".($strona-1).".html><img src=\"images/left.gif\" border=\"0\" ></a>"; else echo "<img src=\"images/left.gif\" border=\"0\" >";
  8.  
  9.  
  10.  
  11. echo '</td><td>';
  12.  
  13. if($podstron<=10)
  14. {
  15. for ($s=1; $s<=$podstron; $s++){
  16. if ($s==$strona) echo "$s";
  17. else echo "<a href=".$link."_".$s.".html> $s </a>";}
  18. }
  19. //jeżeli podstron więcej niż 10
  20. elseif($podstron>10)
  21. {
  22. if($strona>=6 && $strona<=$podstron-5){
  23. $wr=$strona-4;
  24. $wz=$strona+5;
  25. for ($s=$wr; $s<=$wz; $s++){
  26. if ($s==$strona) echo "$s";
  27. else echo "<a href=".$link."_".$s.".html> $s </a>";
  28. }
  29. }
  30. else if($strona>=$podstron-5){
  31. for ($s=$podstron-9; $s<=$podstron; $s++){
  32. if ($s==$strona) echo "$s";
  33. else echo "<a href=".$link."_".$s.".html> $s </a>";
  34. }
  35. }
  36. else{
  37. for ($s=1; $s<=10; $s++){
  38. if ($s==$strona) echo "$s";
  39. else echo "<a href=".$link."_".$s.".html> $s </a>";}
  40. }
  41. } echo '</td><td width="" align="center">';
  42.  
  43. if($strona<$podstron) echo"<a href=".$link."_".($strona+1).".html><img src=\"images/right.gif\" border=\"0\" ></a>"; else echo"<img src=\"images/right.gif\" border=\"0\" >";
  44.  
  45.  
  46.  
  47.  
  48. ?>


Czy mógłby ktoś zerknąć i sprawdzić czy jest on poprawny??
vokiel
Każdy, albo prawie każdy ma tu problem z kodem, nadaj jakiś sensowny tytuł.

Poprawny w jakim sensie? Co chcesz żeby sprawdzić? Coś nie działa?
djgarsi
Tak. Nie działa.sad.gif Gdy chcę przejść już do 2,3, itd strony wywala że nie ma takiej strony.sad.gif
R4D3K
Po pierwsze jeśli już coś takiego piszesz to wklej cały kod. Nie widzę skąd bierzesz zmienne $strona,podstron i nie widzę wógle gdzie te dane pobierasz.... Jak możesz staraj się stosować cięcia w kodzie. I nawiasy klamrowe zamykające czy też otwierające blok instrukcji if,else,for staraj się dawać w nowej linie np.
  1. if ($x==5) {
  2. // cos tam, wciecie min 2 spacje
  3. }
  4. else {
  5. // wciecia 2 spacje
  6. }

Nie przyjemniej taki kod się analizuje ? Ludzie którzy chcą Ci pomóc nie dostaną oczopląsu, lub też nie zamkną za szybko tego tematu.
Zagadnie paginacji było tutaj 1000 razy opisywane jak i na innych stronach znajdziesz 1000 przykładów takich skryptów.
Przyglądając się na twój pokręcony kod wypatrzyłem że masz nieużywany blok instrukcji if/else:
  1. if($podstron<=10) {
  2. // cos tam..
  3. }
  4. elseif($podstron>10) {
  5. // cos tam
  6. }
  7. else {
  8. for ($s=1; $s<=10; $s++){
  9. if ($s==$strona) echo "$s";
  10. else echo "<a href=".$link."_".$s.".html> $s </a>";
  11. }
  12. }

Jak widzisz sprawdzasz czy ilość podstron jest mniejsza niż 10 i później większa niż 10, także 3 blok else nigdy ci nie zadziała.
PS. dodałem wcięcia i proponuje żebyś i ty to zrobił ze swoim kodem wtedy Ci pomogę. Naprawdę jeśli bęziesz tworzył jakiś duży serwis pisząc tak niechlujnie kod zgubisz się w tym gąszczu bo nawet nie będziesz wiedział w którym miejscu przypadkiem nie domknąłeś nawiasów.
djgarsi
Więc tak. To jest fragment pliku index:
  1. $link="index_,";
  2.  
  3. $zapytanie = "SELECT * FROM news ORDER by id DESC";
  4.  
  5. if(!$strona){
  6. $nr=$_GET["strona"];
  7. if($nr==0)
  8. {
  9. $nr=1;
  10. }
  11.  
  12. $strona=$nr;
  13. }
  14.  
  15.  
  16. $ile=10;
  17.  
  18. $start=($strona-1)*$ile;
  19.  
  20. $wykonaj = mysql_query($zapytanie) or Die("Nie działa zapytanie". $zapytanie);
  21. $ile_rek = mysql_num_rows($wykonaj);
  22.  
  23. $podstron = ceil($ile_rek/$ile);
  24.  
  25. $zapytanie.= " LIMIT $start,$ile";
  26.  
  27. $final = mysql_query($zapytanie) or Die ("Nie działa zapytanie końcowe");
  28. $i=0;
  29.  
  30.  
  31.  
  32. while($row=mysql_fetch_array($final))
  33. {
  34.  
  35. $news = get_template('news_min.tpl');
  36. $news = str_replace("{id}", $row['id'], $news);
  37. $news = str_replace("{tytul}", $row['tytul'], $news);
  38. $news = str_replace("{tytul_n}", namen($row['tytul']), $news);
  39. $news = str_replace("{tresc}", substr($row['tresc'], 0, 99250) , $news);
  40. $news = str_replace("{user}", $row['dodal'], $news);
  41. $news = str_replace("{data}", $row['data'], $news);
  42. echo $news;
  43.  
  44. }
  45.  
  46. include('podzial.php');


Stąd pobiera te dane o które pytałeś. Dalej. Plik odpowiedzialny za stronicowanie wygląda następująco (już po usunięciu tego 3 else):
  1. <?
  2.  
  3.  
  4. if($strona>1)
  5.  
  6. echo "<a href=$link.'_'.($strona-1).'.html><img src=\'images/left.gif\' border=\'0\' ></a>"; else echo "<img src=\'images/left.gif\' border=\'0\' >";
  7.  
  8.  
  9. echo '</td><td>';
  10.  
  11. if($podstron<=10)
  12. {
  13. for ($s=1; $s<=$podstron; $s++){
  14. if ($s==$strona) echo "$s";
  15. else echo "<a href=".$link."_".$s.".html> $s </a>";}
  16. }
  17. //jeżeli podstron więcej niż 10
  18. elseif($podstron>10)
  19. {
  20. if($strona>=6 && $strona<=$podstron-5){
  21. $wr=$strona-4;
  22. $wz=$strona+5;
  23. for ($s=$wr; $s<=$wz; $s++){
  24. if ($s==$strona) echo "$s";
  25. else echo "<a href=".$link."_".$s.".html> $s </a>";
  26. }
  27. }
  28. else if($strona>=$podstron-5){
  29. for ($s=$podstron-9; $s<=$podstron; $s++){
  30. if ($s==$strona) echo "$s";
  31. else echo "<a href=".$link."_".$s.".html> $s </a>";
  32. }
  33. }
  34. } echo '</td><td width="" align="center">';
  35.  
  36. if($strona<$podstron) echo"<a href=$link.'_'.($strona+1).'.html><img src=\'images/right.gif\' border=\'0\' ></a>"; else echo"<img src=\'images/right.gif\' border=\'0\' >";
  37.  
  38.  
  39.  
  40.  
  41. ?>
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.