Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Dzielenie stron
Forum PHP.pl > Forum > PHP
openwater
Witam, posiadam skrypt do dzielenia wyników na podstrony, ale podstron jest tak dużo, że numerków jest zbyt dużo, i chciłbym zrobić coś takiego, aby prezentowany podział był w postaci:

1, 2, 3 ... 76, 77, 78 - dla strony pierwszej
1, 2, 3 ... 5, 6, 7 ... 76, 77, 78 - dla dowolnej strony (tutaj "6"
1, 2, 3 ... 76, 77, 78 - dla ostatniej.

w przykładzie ostatnai strona to "78"

Oto skrypt:

  1. <?
  2. // Porcjowanie
  3. echo '<center>'; 
  4. $por_obl = mysql_num_rows(mysql_query("SELECT kat_id FROM katalogi"));
  5. $por_obl = $por_obl/$porcjowanie;
  6. $ile = ceil($por_obl);
  7.  
  8. if ($strona!=0) print ("<a href="admin.php?strona=" . ($strona-$porcjowanie) . "" class="porcjowanie" title="Poprzednie"><b>&laquo; Poprzednie </b></a>&nbsp");
  9.  
  10. for ($i=1;$i<=$ile;$i++)
  11. {
  12.  print ("<a href="admin.php?strona=" . ($i*$porcjowanie-$porcjowanie) . "" class="porcjowanie" title="" . ($i*$porcjowanie-($porcjowanie-1)) . "-" . ($i*$porcjowanie) ."">");
  13.  
  14. if ($strona==($i*$porcjowanie-$porcjowanie))
  15.  {
  16.  print ("<b><big>" . $i . "</big></b></a>&nbsp"); $akt=$i; } else { print ("" . $i . "</a>&nbsp");
  17.  }
  18.  }
  19.  
  20. if ($akt<$ile) print ("&nbsp<a href="admin.php?strona=" . ($strona+$porcjowanie) . "" class="porcjowanie" title="Następne"><span class=text><b>Następne &raquo;</b></span></a>");
  21.  
  22. echo '</center>'; 
  23. // Koniec
  24. ?>


Wie ktoś jak to przerobić?
JOHNY
  1. <?php
  2. if(!$od){ 
  3. $od = 0;
  4. }
  5. $na_stronie = 5; 
  6.  
  7. $query = "SELECT ..... LIMIT $od, $na_stronie";
  8. $wynik = mysql_query($query);
  9. list($ile)=mysql_fetch_row(mysql_db_query($dbname, "SELECT count(kat_id) FROM katalogi"));
  10.  
  11. $lacznie=$ile;
  12.  
  13. $link = "admin.php";
  14. $wstecz = "&laquo;";
  15. $dalej = "&raquo;";
  16. $rozdzielacz = "";
  17.  
  18. while($row = mysql_fetch_array($wynik)) {
  19. .............................
  20. }
  21. function nawigacja($od, $na_stronie, $lacznie, $link, $wstecz, $dalej, $rozdzielacz) 
  22. { 
  23. $nawigacja=""; 
  24.  
  25. if($od>0) $nawigacja.="<a href="$link?od=". ($od-$na_stronie) ."">$wstecz</a>$rozdzielacz"; 
  26. $stron=ceil($lacznie/$na_stronie); 
  27. if($stron>1) 
  28. { 
  29. for($strona=0; $strona<$stron; $strona++) 
  30. { 
  31. if($strona<|| $strona>=$stron-|| ($strona>=($od/$na_stronie)-&& $strona<=($od/$na_stronie)+1)) 
  32. { 
  33. if($strona==($od/$na_stronie)) $nawigacja.=" ". ($strona+1) ." "; 
  34. else $nawigacja.=" <a href="$link?od=". ($strona*$na_stronie) ."">". ($strona+1) ."</a> "; 
  35. } 
  36. else $nawigacja.="+"; 
  37.  
  38. }
  39. $nawigacja=ereg_replace("[+]+", "...", $nawigacja); 
  40. } 
  41. if($lacznie>$od+$na_stronie) $nawigacja.="$rozdzielacz<a href="$link?od=". ($od+$na_stronie) ."">$dalej</a>"; 
  42.  
  43. return $nawigacja; 
  44. } 
  45.  
  46. $nawigacja=nawigacja($od, $na_stronie, $lacznie, $link, $wstecz, $dalej, $rozdzielacz); 
  47. echo "<div class=pagination><span class="tekst">$nawigacja</span></div><br><br>"; 
  48. }
  49. ?>


Chyba tak jak dobrze pamietam

Większego gotowca już się chyba nie da dać
Fistach
dla strony pierwszej:

kazesz wyswietlic 3 pierwsze
...
wyswietlasz 3 ostatnie

dla strony wiekszej od trzy i mniejszej od liczbyStron - 3: w miejsce ... musisz wstawic aby wyswietlil aktualny numer strony, poprzedni i nastepny.

ot i cala filozofia:) zmien ten skrypt na takie cos i nie ma problemu.

ja jednak bym dodal w srodku zamiast w tym przykladzie 5,6,7 to dalbym pole select aby moc wybrac numer konkretnej strony lub chyba najlepiej pole input gdzie podasz nr strony do ktorej chcesz przejsc. Bo jezeli bedziesz na 5 a bedziesz chcial wejsc an 15 to bedziesz musial 10 razy kliknac.
openwater
JOHNY: Dzięki, działa jak należy.
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.