Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Stronicowanie i switch
Forum PHP.pl > Forum > Przedszkole
tomekm1
Dopiero zaczynam naukę PHP. Piszę skrypt o rejestracji pacjenta i mam problem z wyświetleniem stron używając stronicowania. W pliku index.php mam tak (kawałek kodu):
  1. <!-- Menu -->
  2. <div id="nawigacja">
  3. <?php include("menu.php"); ?>
  4. </div>
  5. <div class="main">
  6. switch ($_GET['id'])
  7. {
  8. case 'start':
  9. include('start.php');
  10. break;
  11. case 'kontrahent':
  12. include('kontrahent.php');
  13. break;
  14. case 'szukaj_pac':
  15. include('szukaj_pac.php');
  16. break;
  17. case 'start':
  18. default:
  19. include('start.php');
  20.  
  21. }
  22.  
  23. <!-- Koniec main -->
  24. <div class="clearer">&nbsp;</div>
  25. </div>
  26.  
  27. <!-- Stopka -->
  28. <div id="footer">
  29. <?php include("stopka.php"); ?>
  30. ?>


W pliku szukaj_pac.php mam wyświetlanie listy pacjentów (później dodam wyszukiwarkę) używając skrypu
stronicowania. W tym pliku wyświetla mi się Ok i klikając na 1,2,3 czy następna i poprzednie pojawiają następuje podział strony uzywając linka jak poniżej:

  1. if($_GET['id']>0){
  2. echo '<a href="szukaj_pac.php?id='.($_GET['id']-1).'">Poprzednie</a> ';
  3. }
  4. for($i = 0;$i<=floor($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE);$i++){
  5. echo '<a href="szukaj_pac.php?id='.($i).'">[ '.($i+1).' ]</a> ';
  6. }
  7. if($_GET['id']<floor($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE)){
  8. //wyświetlamy link do nastepnej strony
  9. echo ' <a href="szukaj_pac.php?id='.($_GET['id']+1).'">następne</a>';
  10.  
  11. }


Ale po kliknięciu na numery stron pojawia się jako nowa strona a ja chcę aby wyświetliła mi się jako podstrona. Jak dopiszę w linku index.php lub ? przed szukaj_pac.php to klikajac na 1,2,3 poprzednie i nastepne nie pojawiaja mi sie listy tylko ta pierwsza strona. Jak to zmienic ?

  1. echo ' <a href="index.php?szukaj_pac.php?id='.($_GET['id']+1).'">następne</a>';
lobopol
Mógłbyś dokładniej opisać problem bo:
Cytat
W tym pliku wyświetla mi się Ok i klikając na 1,2,3 czy następna i poprzednie pojawiają następuje podział strony uzywając linka jak poniżej:


Cytat
Ale po kliknięciu na numery stron pojawia się jako nowa strona a ja chcę aby wyświetliła mi się jako podstrona. Jak dopiszę w linku index.php lub ? przed szukaj_pac.php to klikajac na 1,2,3 poprzednie i nastepne nie pojawiaja mi sie listy tylko ta pierwsza strona. Jak to zmienic ?


Nieco mnie myli/
  1. echo ' <a href="index.php?szukaj_pac.php?id='.($_GET['id']+1).'">następne</a>';

To nie ma prawa dobrze działać zamiast ? łączy się &

Na tyle ile zrozumiałem chcesz aby wszystkie akcje działały na stronie index.php To po pierwsze:
w switchach zamiast $_GET['id'] użyj jakiejś innej zmiennej np. $_GET['strona']

  1. switch ($_GET['strona'])
  2. {
  3. case 'kontrahent':
  4. include('kontrahent.php');
  5. break;
  6. case 'szukaj_pac':
  7. include('szukaj_pac.php');
  8. break;
  9. default:
  10. include('start.php'); //skoro start.php jest wartością defaultową nie musisz sprawdzać czy jest ustawiona
  11. }
  12.  

skoro to ma być w indeksie to adresy powinny być:
  1. if($_GET['id']>0){
  2. echo '<a href="'.$_SERVER['PHP_SELF'].'?strona=szukaj_pac&id='.($_GET['id']-1).'">Poprzednie</a> ';
  3. }
  4. for($i = 0;$i<=floor($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE);$i++){
  5. echo '<a href="'.$_SERVER['PHP_SELF'].'?strona=szukaj_pac&id=$i'.">[ '.($i+1).' ]</a> ';
  6. }
  7. if($_GET['id']<floor($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE)){
  8. //wyświetlamy link do nastepnej strony
  9. echo ' <a href="'.$_SERVER['PHP_SELF'].'?strona=szukaj_pac&id='.($_GET['id']+1).'">następne</a>';
  10.  
  11. }

tomekm1
Faktycznie zapomniałem o innej zmiennej. Pomogło. Tak chodziło o to aby akcje działały w index.php. Mam jeszcze jeden mały problem ze stronicowaniem. Dlaczego mając np. 6 rekordów w bazie i jak podzielę tak aby wyświetlało mi np. po 3 na każdej stronie to pojawia się trzeci link [3] skoro po jego kliknięciu pojawia się pusta strona a powinno byc [1] [2] następna ?
Korzystam z tego kodu stronicowania >> http://phpedia.pl/wiki/Stronicowanie




lobopol
Teraz jak się przyjrzałem to powinieneś używać ceil (zaokrąglanie w górę) zamiast floor i skrypt do wyświetlania paginacji:
  1. if($_GET['porcja']>0){
  2. //wyswietlamy link do poprzedniej strony
  3. echo '<a href="?porcja='.($_GET['porcja']-1).'">Poprzednie</a> ';
  4. }
  5. echo ceil($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE);
  6. for($i = 0;$i<ceil($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE);$i++){
  7. echo '<a href="?porcja='.($i).'">[ '.($i+1).' ]</a> ';
  8. }
  9. //jeśli nie jesteśmy na ostatniej stronie
  10. if($_GET['porcja']+1<ceil($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE)){
  11. //wyświetlamy link do nastepnej strony
  12. echo ' <a href="?porcja='.($_GET['porcja']+1).'">następne</a>';
  13. }

zmodyfikuj sobie pod swoje
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.