Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]jak u mnie wstawić pagerowanie (stronnicowanie)
Forum PHP.pl > Forum > Przedszkole
tofik1778983
Witam
Słuchajcie jak zrobić stronicowanie wyświetlania wyników ale tak by podmieniało wyświetlaną zawartość tylko w konkretnym div'ie questionmark.gif
Skrypt wyświetla mi zawartość plików z danego katalogu (w pliczkach sa jakieśtam info)

pokaze czesc kodu która wyświetla:

  1. $ile_plikow=0;
  2. $tablica_z_plikami = array();
  3. $dir=opendir($folder);
  4. while($file = readdir($dir)){
  5. if ($file === '.' || $file === '..') continue;
  6. $tablica_z_plikami[] = $file; //przypisujemy do kolejnego elementu tablicy nazwę pliku
  7. $ile_plikow++; //liczymy ile pliczków jest
  8. }
  9. closedir($dir);
  10. sort($tablica_z_plikami); //sortujemy tablice
  11.  
  12. echo ' </td></tr><tr><td align=center><b> wpisów: '. $ile_plikow . '</b><br><br></td></tr><tr><td align=left>'; // drukowanie liczby wpisow;
  13.  
  14. //wyswietlanie
  15. for($i=0;$i<$ile_plikow;$i++)
  16. {
  17. $wpisana_nazwa_pliku=explode(".", $tablica_z_plikami[$i]); // odcinam sama nazwe bez daty i rozszerzenia
  18.  
  19. //echo $wpisana_nazwa_pliku[0] .'<br>'; sama nazwa bez daty i rozszerzenia
  20. //echo $tablica_z_plikami[$i].'<br>'; cala nazwa pliku
  21.  
  22. $plikc=fopen($folder.'/'.$tablica_z_plikami[$i], r);
  23. $czytaj=fgets($plikc);
  24. $text=explode("|:|:|", $czytaj);
  25.  
  26. echo '. <span class=st1><a href="'. $text[1] .'" target="blank">'. $wpisana_nazwa_pliku[0] .'</span></a> <br>';
  27. if($text[2]==''){ echo '';}
  28. else{
  29. echo '<span class="st4">Opis: '. $text[2].'</span><br>';
  30. }
  31. echo '<span class="st2">dodał/a:<b><span class="st3"> '.$text[0] .'</span> </b> '. $text[3] .'</span><br>';
  32.  
  33. }

nie zwracajcie uwagi na komentarze czy to co w nich jest pisze czasem żeby sam sie potem nie pogubić ;]

Zdaje się ze trzeba będzie przerobić wyświetlanie.. albo dać to co ma być wyświetlane wszystko do tablicy (jeden plik jeden element)
potem określić ile ma być wyświetlane na stronie np. $ile_na_stronie=10; i w pętli wyświetlić na raz tyle ile ma być wpisów widocznych na strone.. ale nie wiem jak skonstruować linki do sterowania przewijaniem stron aby podmieniał mi tylko same wyświetlane wpisy

Tu mam działające rozwiązanie z jakiejś strony co kiedyś pisałem, ale to polegało na zamianie całej strony.
Tylko w tym przypadku zmienia sie link z np: http://adres/index.php?id=jakasstrona na http://adres/index.php?id=11 (11 dlatego ze wyświetlało od 11 wpisu)
Ale ja chciałbym zamieniać zawartość diva a nie całość najlepiej bez ruszania adresu strony
  1. print("<P><B><font color=#000000>inne strony księgi<BR>");
  2.  
  3. $ile=floor($i/10); //obliczenie ilości stron ksiegi
  4. $ctpage=floor($st/10)+1; //numer strony biezacej
  5. for ($z=0;$z<=$ile;$z++) {
  6. $y=$z+1; //numery stron są od 1 a nie od 0
  7. if ($y==$ctpage) {print ("<FONT color=#000000> $y ");} //piszemy numer biezacej strony nie jako hiperlink
  8. else {print ("<A HREF=\"index.php?st=".$z."1\"> $y </A>");} //numery innych stron to hiperlinki
  9. }
mortus
Jeśli nie chcesz "ruszać" adresu strony, to jedynym rozwiązaniem jest JavaScript + AJAX (osobiście polecam gotowy framework jQuery). Przykładowy plik show_files.php:
  1. <!-- doctype -->
  2. <html>
  3. <head>
  4. ...
  5. <script type="text/javascript" src="sciezka/do/jquery-1.4.2.js"></script>
  6. <script type="text/javascript">
  7. // ten skrypt wykonuje się po kliknięciu linku do danej strony
  8. // linki będą wyświetlane w taki sposób
  9. // <div id="pages">
  10. // <a href="nazwa_pliku.php?page=1">1</a>
  11. // <a href="nazwa_pliku.php?page=2">2</a>
  12. // <a href="nazwa_pliku.php?page=3" class="active">3</a>
  13. // ...
  14. // <a href="nazwa_pliku.php?page=n">n</a>
  15. // </div>
  16. $("#pages a").live("click", function() {
  17. // jeżeli link odpowiada stronie, na której jesteśmy to nie rób nic
  18. if($(this).hasClass("active")) return false;
  19. var adres = $(this).attr("href");
  20. var pageQuery = adres.split("?");
  21. var page = pageQuery.replace("page=", "");
  22. $.ajax({
  23. type: "GET",
  24. url: "files.php",
  25. data: "page=" + page,
  26. succes: function(dane) {
  27. $("#pliki").html(dane);
  28. }
  29. });
  30. return false;
  31. });
  32. </script>
  33. </head>
  34. <body>
  35. ...
  36. <!-- tutaj wyświetlamy informacje o plikach -->
  37. <div id="pliki">
  38. <?php
  39. // przy pierwszym wejściu na stronę wyświetlone zostaną pliki ze strony 1
  40. // oczywiście sprawę załatwi sam skrypt php
  41. // skrypt php wyświetli również odpowiednio spreparowane linki do stronicowania
  42. include 'files.php';
  43. ?>
  44. </div>
  45. ...
  46. </body>
  47. </html>
No i plik files.php, który wyświetla nam pliki
  1. <?php
  2. $ile_plikow=0;
  3. $tablica_z_plikami = array();
  4. $dir=opendir($folder);
  5. while(false !== ($file = readdir($dir))) {
  6. if($file != '.' && $file != '..') {
  7. $tablica_z_plikami[] = $file;
  8. $ile_plikow++;
  9. }
  10. }
  11. closedir($dir);
  12. sort($tablica_z_plikami);
  13.  
  14. // liczba plików na stronie
  15. $plikow_na_strone = 5;
  16. //pobieramy numer strony, jeżeli został podany, jeżeli nie to domyślnie jesteśmy na stronie 1
  17. $strona = (isset($_GET['page']) && $_GET['page'] != '' && is_numeric($_GET['page'])) ? (int) $_GET['page'] : 1;
  18. // obliczamy index początkowy tablicy
  19. $start = ($strona - 1) * $plikow_na_strone;
  20. // obliczamy index końcowy tablicy
  21. $koniec = $strona * $plikow_na_strone;
  22.  
  23. // wyświetlanie
  24. echo '<div id="szczegoly_plikow">';
  25. for($i = $start; $i < $koniec; $i++) {
  26. $wpisana_nazwa_pliku=explode(".", $tablica_z_plikami[$i]); //odcinam sama nazwę bez daty i rozszerzenia
  27. // echo $wpisana_nazwa_pliku[0] .'<br>'; // sama nazwa bez daty i rozszerzenia
  28. // echo $tablica_z_plikami[$i].'<br>'; // cała nazwa pliku
  29. $plikc = fopen($folder . '/' . $tablica_z_plikami[$i], r);
  30. $czytaj=fgets($plikc);
  31. $text = explode("|:|:|", $czytaj);
  32. echo '<a href="'. $text[1] .'" target="blank"><span class="st1">'. $wpisana_nazwa_pliku[0] .'</span></a><br>';
  33. if($text[2] == '') {
  34. echo '';
  35. } else {
  36. echo '<span class="st4">Opis: '. $text[2].'</span><br>';
  37. }
  38. echo '<span class="st2">dodał/a: <span class="st3"><b>'.$text[0] .'</b></span> '. $text[3] .'</span><br>';
  39. }
  40. echo '</div>';
  41.  
  42. // obliczamy liczbę stron
  43. $liczba_stron = ceil($ile_plikow / $plikow_na_strone);
  44.  
  45. // wyświetlamy stronicowanie
  46. echo '<div id="pages">';
  47. for($j = 1; $j <= $liczba_stron; $j++) {
  48. $adres = '<a href="nazwa_pliku.php?page=' . $j . '"';
  49. if($strona == $j) $adres .= ' class="active"';
  50. $adres .= '>' . $j . '</a>';
  51. echo $adres;
  52. }
  53. echo '</div>';
  54. ?>
Oczywiście, jeżeli wywołujemy przeglądanie plików w inny sposób (np. index.php?action=pliki) to trzeba odpowiednio spreparować linki, a kod z pierwszego listingu umieścić lub zaincludować w odpowiednim miejscu. Tak przygotowane stronicowanie działa (powinno w każdym bądź razie) również wtedy, gdy użytkownik wyłączy wykonywanie skryptów JS w przeglądarce. Z tym, że adres strony jest oczywiście rozszerzany o wywołanie strony (&page=x).
Ważne: Jeżeli nie korzystałeś nigdy z języka JavaScript i AJAX-a, i nie znasz jego możliwości, to poczytaj trochę. Dobra rzecz i na pewno się przydaje.
tofik1778983
Ok dzieki wielkie przetestuje niebawem narazie jestem poza domem.
Ostatnio wydrukowalem sobie "ruby on rails" Lenza chyba tego się zaczne powoli uczyć.
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.