Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Błąd przy stronnicowaniu strony.
Forum PHP.pl > Forum > Przedszkole
Radek79
Próbuję podzielić baza.txt na kolejne podstrony używając:
  1. <?php
  2. $lines = file('baza.txt');
  3. $size = sizeof($lines);
  4.  
  5. echo "Ilość rekordow w bazie $size, obecna strona $strona, ilosc stron ".ceil($size/$naStronie)."<br/>";
  6.  
  7. for($i=$strona * $naStronie; $i<$strona*$naStronie+$naStronie && $i<$size; $i++) {
  8. $var = explode("|",$lines[$i]);
  9. echo $var[0]." -- ".$var[1]."<br/>";
  10. } 
  11.  
  12. if($strona!=0) echo " <a href=?strona=".($strona-1).">poprzednia</a> "; 
  13. for($i=0; $i<ceil($size/$naStronie); $i++) {
  14. if($strona==$i) echo " [".($i+1)."]";
  15. else echo " &lt;a href=?strona=$i&gt;[".($i+1)."]&lt;/a&gt; ";
  16. } 
  17. if($strona&lt;ceil($size/$naStronie)-1) echo " &&lt;a href=?strona=".($strona+1)."&&gt;nastepna&&lt;/a&&gt; "; 
  18.  
  19. ?>


i otrzymuję komunikat
Parse error: parse error, unexpected ';' on line 27 (czyli 17 linia w Kod PHP)
Jednocześnie chciałem zapytać czy jest możliwe stworzenie prostej wyszukiwarki dla plików tekstowych, proszę o linki smile.gif

format bazy txt:
08.27.2007`Maciej`Kowalski`aaa@wp.pl`Warszawa`Wodna`8``Polska`Treść, treść`9tyfzh
kornel-php
  1. <?php
  2. if($strona&lt;ceil($size/$naStronie)-1)
  3. ?>


To mi nie pasuje...

&lt; zamieniamy na symbol < z klawiatury i powinno być ok...
Radek79
Cytat(kornel-php @ 27.08.2007, 10:48:30 ) *
  1. <?php
  2. if($strona&lt;ceil($size/$naStronie)-1)
  3. ?>


To mi nie pasuje...

&lt; zamieniamy na symbol < z klawiatury i powinno być ok...


Warning: Division by zero in on line 15
Ilość rekordow w bazie 15, obecna strona , ilosc stron 0
  1. <?php
  2. echo "Ilość rekordow w bazie $size, obecna strona $strona, ilosc stron ".ceil($size/$naStronie)."<br/>";
  3. ?>


Warning: Division by zero in on line 23
  1. <?php
  2. for($i=0; $i<ceil($size/$naStronie); $i++) {
  3. ?>


Warning: Division by zero in on line 27
&<a href=?strona=1&>nastepna&</a&>
  1. <?php
  2. if($strona<ceil($size/$naStronie)-1) echo " &&lt;a href=?strona=".($strona+1)."&&gt;nastepna&&lt;/a&&gt; ";
  3. ?>
kornel-php
Skrypt komunikuje Ci, że dzielenie prze 0 nie istnieje, więc zmienna $naStronie jest równa 0.
Popatrz co masz poukrywane pod zmiennymi, bo tam masz błąd...
Radek79
Szukam odpowiedzi na pytanie jak zmodyfikować kod aby dane z pliku baza.txt podzielić na stronie w osobnych wierszach a przed każdym wieszem dodawać opis np data, imię itd...
Obecnie wyświetlają się w jednj linii:
08.27.2007`Maciej`Kowalski`aaa@wp.pl`Warszawa`Wodna`8``Polska`Treść, treść

Powinno być:
data: 08.27.2007
imię: Maciej
.
.
.
  1. <?php
  2. $naStronie = 3;
  3.  
  4. if($_GET['strona']) $strona = $_GET['strona'];
  5. else $strona = 0; 
  6.  
  7. $lines = file('baza.txt');
  8. $size = sizeof($lines);
  9.  
  10. echo "Ilość rekordów w bazie $size, obecna strona $strona, ilość stron ".ceil($size/$naStronie)."<br />";
  11.  
  12. for($i=$strona * $naStronie; $i<$strona*$naStronie+$naStronie && $i<$size; $i++) {
  13. $exp = explode("|",$lines[$i]);
  14. echo "<div id=\"headline\">".$exp[0]."</div>"."<br />"; 
  15. echo $exp[1].'<br />';
  16. }
  17. if($strona!=0) echo " <a href=?strona=".($strona-1).">poprzednia</a> "; 
  18. for($i=0; $i<ceil($size/$naStronie); $i++) {
  19. if($strona==$i) echo " [".($i+1)."]";
  20. else echo " <a href=?strona=$i>[".($i+1)."]</a>; ";
  21. } 
  22. if($strona<ceil($size/$naStronie)-1) echo "<a href=?strona=".($strona+1).">nastepna</a>";
  23. ?>
drPayton
  1. <?php
  2. // W oryginale pobrana linijka z pliku
  3. $dane = "08.27.2007`Maciej`Kowalski`aaa@wp.pl`Warszawa`Wodna`8``Polska`Treść, treść";
  4.  
  5. $dataArray = explode("`", $dane);
  6.  
  7. echo "data: {$dataArray[0]}<br />";
  8. echo "imie: {$dataArray[1]}<br />";
  9. echo "nazwisko: {$dataArray[2]}<br />";
  10. ?>


I tak dalej. Oczywiście zamknij to w pętli gdzie odczytujesz plik

Efekt:
Kod
data: 08.27.2007
imie: Maciej
nazwisko: Kowalski
Radek79
Przeglądarka wyrzuca puste dane:
Ilość rekordów: 9, obecna strona 0, ilość stron 1
data: Array
imie:
nazwisko:
data: Array
imie:
.
.
.
  1. <?php
  2. $naStronie = 10;
  3.  
  4. if($_GET['strona']) $strona = $_GET['strona'];
  5. else $strona = 0; 
  6.  
  7. $lines = file('baza.txt');
  8. $size = sizeof($lines);
  9.  
  10. echo "Ilość rekordów: $size, obecna strona $strona, ilość stron ".ceil($size/$naStronie)."<br /><br />";
  11. for($i=$strona * $naStronie; $i<$strona*$naStronie+$naStronie && $i<$size; $i++) {
  12. //$exp = explode("|",$lines[$i]);
  13. //echo $exp[0]."<br />"; 
  14.  
  15. $dataArray = explode("`", $lines);
  16.  
  17. echo "data:  {$dataArray[0]}<br />";
  18. echo "imie: {$dataArray[1]}<br />";
  19. echo "nazwisko: {$dataArray[2]}<br />";
  20.  
  21. }
  22. if($strona!=0) echo " <a href=?strona=".($strona-1).">poprzednia</a> "; 
  23. for($i=0; $i<ceil($size/$naStronie); $i++) {
  24. if($strona==$i) echo " [".($i+1)."]";
  25. else echo " <a href=?strona=$i>[".($i+1)."]</a> ";
  26. } 
  27. if($strona<ceil($size/$naStronie)-1) echo "<a href=?strona=".($strona+1).">nastepna</a>";
  28. var_dump ($lines);
  29. ?>

</br ></br ></br >
  1. <?php
  2. ?>
wywala [1]array(9) { [0]=> string... wszystkie dane z baza.txt sa obecne :/





</br ></br ></br >
drPayton
Cytat(drPayton @ 27.08.2007, 15:46:37 ) *
(...)Oczywiście zamknij to w pętli gdzie odczytujesz plik

A Ty w jakiej pętli to zamknąłeś? dry.gif
drPayton
np tak:plik z danymi
Kod
08.27.2007`Maciej`Kowalski`aaa@wp.pl`Warszawa`Wodna`8``Polska`Treść, treść`9tyfzh08.28.2007`Janko`Walski`bbb@onet.pl`Klewki`Ulicowa`5``Polska`Treść2, treść2`9tyfzh08.29.2007`Inny`InneNazwisko`ccc@interia.pl`Gdańsk`Dworcowa`12/43``Polska`Treść, treść`9tyfzh
Odczyt danych i wyświetlenie ich:
  1. <?php
  2. $dane = file($plik);
  3. foreach($file AS $line) {
  4. $dataArray = explode(&#092;"`\", $line);
  5. echo &#092;"data: {$dataArray[0]}<br />\";
  6. echo &#092;"imie: {$dataArray[1]}<br />\";
  7. echo &#092;"nazwisko: {$dataArray[2]}<br /><br /><br />\";
  8. }
  9. ?>

PS. Na przyszłość jak pytasz o coś na PW, to daj link do tematu...

ADDED:
Pisz na forum, może ktoś inny ma podobny problem i nie będzie wiedział o co chodzi. Wklejam Twoje pytanie:
Cytat(Radek79 )
Zrobiłem podobnie jak w Twoim przykładzie ale znowu strona nie dzieli się prawidłowo powinny być po 2 rekordy na a są wszystkie na obu stronach


Tak jest, bo nie dałem Ci gotowego rozwiązania, tylko pokazałem sposób. "Jadąc" po pliku pętlą foreach, jak sama nazwa tej pętli wskazuje, bierzesz pod uwagę wszystkie elementy (a więc wszystkie linie pliku).W Twoim konkretnym przypadku potrzebna jest pętla for (albo while, ale for'em łatwiej). Tak więc bierzesz swój oryginalny kod, i zmieniasz w pętli for
  1. <?php
  2. (...)
  3. $file = file('baza.txt');
  4. (...)
  5. for($i=$strona * $naStronie; $i<$strona*$naStronie+$naStronie && $i<$size; $i++) {
  6. $dataArray = explode('`',$file[$i]);
  7. echo &#092;"<div id=\"headline\">\";
  8. echo &#092;"Czas: {$dataArray[0]}\";
  9. echo &#092;"id: {$dataArray[1]}\";
  10. echo &#092;"</div>\";
  11. echo &#092;"<div id=\"data\">\";
  12. echo &#092;"Imię: {$dataArray[2]}<br />\";
  13. (...)
  14. }
  15. ?>

Mam nadzieję, że nic nie pokręciłem. Spróbuj i napisz czy ok. Pisz na forum, nie na PW!
Radek79
smile.gif Działa poprawnie smile.gif
Zauważyłem jeden problem jeśli w
  1. <textarea name="uwagi" rows="4" cols="50"></textarea>
wprowadzę pustą linię i zostaje ona tak zapisana w baza.txt to skutkuje rozsypaniem treści (w przeglądarce) na inne linie np: treść przeskakuje do linii czas kolejnej tableki :/
drPayton
Spróbuj przez nl2br przepuścić ten tekst. Albo trim'em usuwaj zbędne "białe znaki". A najlepiej i jedno i drugie winksmiley.jpg
Radek79
Dokładnie:
  1. <?php
  2. trim, nl2br, strip_tags, preg_replace('/s/',' ',$zmienna);
  3. ?>

Dziekuję za cierpliwość Mr. drPayton
smile.gif
Szybkie pytanie czy można usuwać znaczki z kilku zmiennych jednocześnie ?
  1. <?php
  2. $_POST['uwagi']=strip_tags($_POST['uwagi']);
  3. ?>

Hazel
Jeśli są w tablicy, to tak:
  1. <?php
  2. foreach ($tablica as $zmienna)
  3. {
  4. $zmienna = strip_tags($zmienna);
  5. }
  6. ?>


A jeśli nie są w tablicy, to raczej tego nie zapętlisz, chyba że sztucznie zrobisz z nich tablicę albo będziesz stosował zmienne zmiennych, ale to ani szczególnie ciekawe, ani za bardzo wydajne nie jest.
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.