Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyświetlanie newsów.
Forum PHP.pl > Forum > PHP
moto0095
Witam. Nie wiedziałem jak zatytułować ten temat. Ale mam takie pyranie:
Mam sobie skrypt newsów oparty na plikach *.txt i komentarze wyświetlają się każdy w tabeli.
Jak zrobić (najlepiej w php) aby na stronie wyświetlało się na 15 newsów ,a jak będzie 20 to żeby "zrobiła" się strona nr.2 (np: news.php?page=1) questionmark.gifquestionmark.gif
MateuszS
Poczytaj o stronnicowaniu, mnóstwo tematów na tym forum było na ten temat.
PiotrekM
było setki razy...
http://lmgtfy.com/?q=stronicowanie+php
moto0095
Zaraz zobaczę

Tylko że większość tych skryptów jest na MySQL
tehaha
a dlaczego nie chcesz używać mysql?
moto0095
Po prostu nie czuję takie potrzeby a po za tym nie dodaję jakiejś strasznej ilości newsów i pliki w zupełności mi wystarczają smile.gif.

Właściwie to wszystkie są na bazę MySQL.
Wie ktoś jak zrobić paginację dla pliku txt w którym dane zapisują mi się tak:

  1. data dodania wpisu|nick|treść
  2. data dodania wpisu|nick|treść
  3. data dodania wpisu|nick|treść
  4. data dodania wpisu|nick|treść
  5. data dodania wpisu|nick|treść
  6. data dodania wpisu|nick|treść
  7. data dodania wpisu|nick|treść
  8. data dodania wpisu|nick|treść
  9. (...)


questionmark.gifquestionmark.gif

Albo inaczej.
Jeżeli mam skrypt :

  1. <?php
  2. $file = file("baza.txt");
  3.  
  4. $end = 10; // ilosc rekordow
  5.  
  6. foreach($file as $value) {
  7. ++$i;
  8. if($i <= $end) {
  9. $exp = explode("`",$value);
  10. echo $exp[0]."<br />".$exp[1]."<hr />";
  11. }
  12. }
  13.  
  14. ?>


który wyświetla 10 ostatnich rekordów to czy da się go przerobić aby wyświetlał po 10 na każdej stronie questionmark.gifquestionmark.gifquestionmark.gif
mortus
Kompleksowa obsługa stronicowania danych wyciągniętych z pliku:
  1. <?php
  2. ini_set('display_errors', 1);
  3.  
  4. if(isset($_GET['page'])) {
  5. $page = $_GET['page'];
  6. if($page <= 0) {
  7. echo 'Invalid page number!<br />Jump to page: ';
  8. $invalidPageNumber = true;
  9. }
  10. } else {
  11. $page = 1;
  12. }
  13. $perPage = 10;
  14. $start = ($page - 1) * $perPage;
  15. $end = $page * $perPage;
  16.  
  17. if(!file_exists('filename.ext')) {
  18. echo 'File not exists!<br />';
  19. } else {
  20. $source = file('filename.ext');
  21. $numberOfLines = count($source);
  22. if($numberOfLines == 0) {
  23. echo 'There is no data!<br />';
  24. } else {
  25. $numberOfPages = ceil($numberOfLines / $perPage);
  26. if($page > $numberOfPages) {
  27. echo 'Invalid page number!<br />Jump to page: ';
  28. $invalidPageNumber = true;
  29. }
  30. if(!isset($invalidPageNumber)) {
  31. for($i = $start; $i < $end && $i < $numberOfLines; $i++) {
  32. // tutaj odpowiednio przetwarzamy dane
  33. echo $source[$i] . '<br />';
  34. }
  35. }
  36. for($i = 1; $i <= $numberOfPages; $i++) {
  37. echo ' <a href="?page=' . $i . '">' . $i . '</a> ';
  38. }
  39. }
  40. }
moto0095
Bardzo, bardzo ci dziękuję mortus.

Ja wiem że temat już zamknięty, ale mam taki problem ten skrypt co podał mortus wyświetla dane które się zapisują tak:
jeden
jeden
jeden

no i oczywiście nie chcę nic zmieniać tylko jak podpiąć do tego ten skrypt :
  1. // wczytanie zawartości pliku do tablicy
  2. $file = file("dane.tpl");
  3. // przechodzimy przez tablicę za pomocą pętli foreach
  4. foreach($file as $value) {
  5. // rozbijamy poszczególne linie na części
  6. $exp = explode("|",$value);
  7. // wyświetlamy rozbity tekst
  8. echo $exp[0].",".$exp[1].",".$exp[1].":)";
  9. }


tak aby czytał dane zapisane tak:
jeden|dwa|trzy
jeden|dwa|trzy
jeden|dwa|trzy
jeden|dwa|trzy


i wyświetlał je np: jeden, dwa, trzy smile.gif
questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif

questionmark.gifquestionmark.gifquestionmark.gif

questionmark.gif
mortus
A co jest napisane w linii 33? Zastępujesz po prostu linię 34 takim kodem:
  1. $exp = explode("|", $source[i]);
  2. echo $exp[0] . ", " . $exp[1] . ", " . $exp[1] . ":)<br />";
A w linii 18 zamiast filename.ext wpisujesz swoją nazwę pliku, czyli dane.tpl. Próbowałeś w ogóle coś kombinować?
moto0095
Tak, długo kombinowałem, ale nic nie wykombinowałem ,ale wielkie dzięki 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.