Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z kodem
djgarsi
post
Post #1





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


Witam. Od pewnego czasu nie moge się uporać z kodem stronicowania.(IMG:style_emoticons/default/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??
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


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?
Go to the top of the page
+Quote Post
djgarsi
post
Post #3





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


Tak. Nie działa.(IMG:style_emoticons/default/sad.gif) Gdy chcę przejść już do 2,3, itd strony wywala że nie ma takiej strony.(IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
R4D3K
post
Post #4





Grupa: Zarejestrowani
Postów: 144
Pomógł: 12
Dołączył: 16.03.2007

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


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.

Ten post edytował R4D3K 1.12.2009, 11:43:34
Go to the top of the page
+Quote Post
djgarsi
post
Post #5





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


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


Ten post edytował djgarsi 1.12.2009, 20:13:08
Go to the top of the page
+Quote Post

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: 23.08.2025 - 12:47