Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Stronicowanie + pliki
Forum PHP.pl > Forum > Przedszkole
Korson
Naprowadzcie mnie jak zrobić stronicowanie na stronie w php, nie chodzi mi o stronicowanie rekordów z bazy ale aby wczytywało tekst z plików.

np. chciałbym mieć plik humor.php, do którego bym dodawał nowe dowcipy, i chciałbym aby php wczytało tekst z pliku i utworzyło stronicowanie

schemat pliku mógłby wyglądać następująco:

*****
Dowcip 1
*****
Dowcip 2

etc.

byłbym wdzięczny za wszelką pomoc :-)
pEbE
Dzielisz plik za pomoca explode:
  1. <?php
  2.  
  3. $row = explode('*****', $tresc_pliku);
  4.  
  5. ?>


Pozniej robisz sobie limit np. 7 dowcipow na strone, oraz wczyttujesz numer strony.
  1. <?php
  2.  
  3. $limit = 7; // 7 dowcipow na strone
  4. $page = isset($_GET['page']) ? $_GET['page'] : 1; // numer strony
  5.  
  6. $ile2 = $limit * $page; // maximum
  7.  
  8. // minimum  warunek zwieksz o 1
  9. for($ile1 = $ile2 - $limit; $ile1<=$ile2; $ile1++) {
  10.  echo $row[$ile1];
  11. }
  12.  
  13. ?>


Pamietaj aby sprawdzac stosunek ilosci dowcipow do numeru strony
  1. <?php
  2.  
  3. if(count($row) < $ile2) {
  4. die ('Nie ma takiej strony');
  5. }
  6.  
  7. ?>


Ale nad ostatnim kawałkiem kodu bedziesz musial troszke pomyśleć smile.gif


Skrypt pisany "z palca" smile.gif
Korson
to co napisałeś ma być w jednym pliku czy w kilku?? i co oznacza $tresc_pliku bo niesety nie wiem :-( i co ma się znaleść w ostatniej cześci skryptu

dzięki za pomoc smile.gif
huntercs
musisz się troche wyśilić i pomyśleć rolleyes.gif
zapisywać muszisz tak:
  1. <?php
  2. file_put_contents('dowcipy.txt', $dowcip."*****");
  3. ?>

wtedy strukturę pliku będziesz miał następnująca:
dowcip1*****dowcip2*****dowcip3*****.....
i teraz otwierasz plik:
  1. <?php
  2. $wszystkie_dowcipy=file_get_contents('dowcipy.txt');
  3. //explodujesz sobie wszystkie dowcipy
  4. $dowcipy=explode('*****', $wszystkie_dowcipy);
  5. //teraz w tablicy masz wszystkie dowcipy po kolei:
  6. echo "<pre>";
  7. print_r($dowcipy);
  8. echo "</pre>";
  9. //i dalej już stronnicowanie
  10. ?>
Korson
Mam coś takiego:
  1. <?php
  2. $wszystkie_dowcipy=file_get_contents('dane.txt');
  3. $dowcipy=explode('*****', $wszystkie_dowcipy);
  4. echo "$dowcipy[1]";
  5. ?>

wyświetla mi to pierszy dowcip, ale co mam zrobić abym miał drógą stronę i na niej wyświetlił się rekord drógi, a na trzeciej stronie 3 rekord :?:
Master Miko
Cytat(Korson @ 2006-03-26 15:40:50)
Mam coś takiego:
  1. <?php
  2. $wszystkie_dowcipy=file_get_contents('dane.txt');
  3. $dowcipy=explode('*****', $wszystkie_dowcipy);
  4. echo "$dowcipy[1]";
  5. ?>

wyświetla mi to pierszy dowcip, ale co mam zrobić abym miał drógą stronę i na niej wyświetlił się rekord drógi, a na trzeciej stronie 3 rekord :?:

Musisz zrobić coś takiego


  1. <?php
  2.  
  3. $page = isset($_GET['page']) ? $_GET['page'] : 1;  // numer strony
  4.  
  5. $wszystkie_dowcipy=file_get_contents('dane.txt');
  6. $dowcipy=explode('*****', $wszystkie_dowcipy);
  7. echo "$dowcipy[$page]";
  8. echo '<br><a href="nazwategopliku.php?page=' . $page + 1 . '">Następna strona</a>'; // tu zmień nazwe pliku php, w któym jest kod...
  9.  
  10.  
  11. ?>


Ale to nie ma ograniczenia... więc sam musisz je zrboić

Pisane z palca.
Korson
Zawartość pliku index.php
  1. <?php
  2. $page = isset($_GET['page']) ? $_GET['page'] : 1; //Strona
  3. $wszystkie_dane=file_get_contents('dane.tpl'); //Nazwa pliku z danymi
  4. $dane=explode('*****', $wszystkie_dane); // w jaki sposób ma rodzielać plik na kilka części; w tym przypadku to "*****"
  5. $all = count($dane); // liczy ile jest stron z zanymi
  6. echo "$dane[$page]"; // Wyświetla dane na stronia
  7. $npage = $page+; // Następna strona
  8. $ppage = $page-; // Poprzednia strona
  9. $max = $all-; // Ilość stron (nie wiem dla czego ale zawsze musze odejmować 2 aby uzyskać realną ilość st
    ron)
  10. //
  11. // ZABEZPIECZENIA:
  12. //
  13. if ($page <= 0 || $page > $max){ // Jeżeli strona jest mniejsza od zera lub większa od maximum to 
  14. echo "Nie ma takiej strony!"; // wyświetla to
  15. }
  16. if ($max > 1){ // jezeli jest więcej niż jedna strona to 
  17. if ($page == 1) { // sprawdz czy jest równa 1
  18. echo "<a href='index.php?page=$npage'>Następna strona</a>"; // i wyświetl następną strone
  19. }else { // inaczej 
  20. if ($page == $max){ // sprawdź czy jest równa max
  21. echo "<a href='index.php?page=$ppage'>Poprzednia strona</a>"; // i wyświetl poprzednią strone
  22. } else { // jeszcze raz inaczej :-) 
  23. echo "<a href='index.php?page=$ppage'>Poprzednia strona</a>"; // wyświetl na jednej stronie 
  24. echo "<a href='index.php?page=$npage'>Następna strona</a>"; // link do przodu i do tylu ;-) 
  25. }
  26. } // i zamykamy wszystkie instrukcje ;-) 
  27. }
  28. ?>


W pliku dane.txt zawartość powinna być następująca:
  1. <?php
  2.  
  3.  
  4. ***** /// zaczynamy rekord od 5 gwiazdek ;-)
  5. tresc ... /// tutaj jest 1 rekord
  6. ***** /// kończymy rekord 5 gwiazdami 
  7. bla bla ... /// tutaj jest 2 rekord
  8. ***** 
  9. etc.
  10.  
  11.  
  12. ?>


Dzięki za pomoć :-) bez Waz bym tego raczej nie wymyślił i pasuje się chyba pochwalić rezultatami dla reszty takich łebków jak ja ;] smile.gif
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.