Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Księga / Dzilenie wyników na strony
Forum PHP.pl > Forum > PHP
Piniata
Próbowałem znaleźć rozwiązanie na forum ale nie znalazłem, może źle szukałem może nie w każdym bądź razie wszystko co znalazłem nie wiele mi dawało dlatego napisze jak sytuacja wygląda u mnie.

Zrobiłem Księge Gości, która zapisuje do pliku nick, date, komentarz i adres www podany przez urzytkownika, wyniki sa wyswielane od najmlodszego jednak do szczęscia brakuje mi tylko aby wyniki dzieliły się na strony np. 20 wpisów na strone.

W taki sposób zapisywane są dane do pliku:
  1. <?php
  2. $noweDane = "<TABLE id='ksiega'><TR><TD ALIGN=LEFT id='nick'>$nick</TD></TR><TR><TD ALIGN=LEFT><p id='www2'><a href='$www' target='blank'>$www</a></TD></TR><TR><TD ALIGN=LEFT><p id='data'>$data</p></TD></TR><TR><TD ALIGN=LEFT>$wpis</TD></TR></TABLE><BR>n";
  3. ?>


Narazie taki sposób są wyświetlane dane na stronie (bez dzielenia na strony):
  1. <?php
  2. $ks=fopen('wpisy.txt', 'r');
  3. $dlugoscc=filesize('wpisy.txt');
  4. $calyplikk=fread($ks, $dlugoscc);
  5. print ($calyplikk);
  6. fclose($ks);
  7. ?>


Myślałem, że bedzie trzebać zliczać z pliku wszystkie "\n" i po 20 tworzyć nową strone albo zrobic skrypt ktory pokazywac bedzie wpisy od 1 do 20 i bedzie łatwy do zminienia by móc też wyświetlić od 20 do 40 ale nie mam bladego pojęcia jak to zrobić bo moje php leży i kwiczy. Jeśli ktoś mi pomoże będe wdzięczny. Żadnego mysql!!
Darti
Pisane z palca, mogą być błędy ale zasadę chyba wychwycisz...
  1. <?php
  2. $max_na_stronie = 20;
  3. if(isset($_GET['strona']) && is_numeric($_GET['strona'])){
  4. $strona = $_GET['strona'];
  5. } else {
  6. $strona = 1;
  7. }
  8.  
  9. $wpisy = file('wpisy.txt');
  10.  
  11. for($i=$strona*$max_na_stronie - $max_na_stronie;$i < $max_na_stronie; $i++){
  12. if(isset($wpisy[$i])){
  13. echo $wpisy[$i];
  14. }
  15. }
  16.  
  17. if($strona > 1){
  18. echo '<a href="?strona='. $strona-1 .'"> Poprzednia strona </a>';
  19. }
  20. if(count($wpisy) > $strona*$max_na_stronie){
  21. echo '<a href="?strona='. $strona+1 .'"> Następna strona </a>';
  22. }
  23. ?>
Athlan
http://framework.vgroup.pl/expose-fab64ed3...d6f795c4bad.htm

Pisalem kiedys... proste w uzyciu
Piniata
Wielkie dzięki Darti dzielenie działa super ale odnośniki się nie robią do następnych stron. Pod 20-stym wpisem pokazuje się:

1"> Następna strona

I nie jest to odnośnikiem... pokombinuje ale mozesz titaj napisać rozwiązanie w razie gdyby ktoś też miał taki problem jak ja. Jeszcze raz wielkie dzięki.

--------EDYCJA---------
Więc poprawiłe to w te sposób:
zamieniłem:
  1. <?php
  2. if($strona > 1){
  3. echo '<a href="?strona='. $strona-1 .'"> Poprzednia strona </a>';
  4. }
  5. if(count($wpisy) > $strona*$max_na_stronie){
  6. echo '<a href="?strona='. $strona+1 .'"> Następna strona </a>';
  7. ?>


Na:
  1. <?php
  2. if($strona > 1){
  3. echo ("<a href=?strona=");
  4. echo ($strona-1);
  5. echo ("> Poprzednia strona </a>");
  6. }
  7. if(count($wpisy) > $strona*$max_na_stronie){
  8. echo ("<a href=?strona=");
  9. echo ($strona+1);
  10. echo ("> Następna strona </a>");
  11. ?>


i odnośniki działają ale na kolejnych stronach nie ma wpisów ale gdy wróce odnosnikiem na poprzednia strona to wpisy od 1 do 20 są... co mam zrobić?
Darti
ahhh linijka 11, zapomniałem przemnożyć górnej granicy iteracji, powinno być tak:
  1. <?php
  2. for($i=$strona*$max_na_stronie - $max_na_stronie;$i < $strona * $max_na_stronie; $i++){
  3. ?>
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.