Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Błąd przy stronnicowaniu strony.
Radek79
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 24.08.2007

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

format bazy txt:
08.27.2007`Maciej`Kowalski`aaa@wp.pl`Warszawa`Wodna`8``Polska`Treść, treść`9tyfzh
Go to the top of the page
+Quote Post
kornel-php
post
Post #2





Grupa: Zarejestrowani
Postów: 210
Pomógł: 20
Dołączył: 7.07.2006
Skąd: Krotoszyn

Ostrzeżenie: (0%)
-----


  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...
Go to the top of the page
+Quote Post
Radek79
post
Post #3





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 24.08.2007

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
kornel-php
post
Post #4





Grupa: Zarejestrowani
Postów: 210
Pomógł: 20
Dołączył: 7.07.2006
Skąd: Krotoszyn

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
Radek79
post
Post #5





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 24.08.2007

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
drPayton
post
Post #6





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


  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


Ten post edytował drPayton 27.08.2007, 14:48:14
Go to the top of the page
+Quote Post
Radek79
post
Post #7





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 24.08.2007

Ostrzeżenie: (0%)
-----


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 >
Go to the top of the page
+Quote Post
drPayton
post
Post #8





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


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ś? (IMG:http://forum.php.pl/style_emoticons/default/dry.gif)
Go to the top of the page
+Quote Post
drPayton
post
Post #9





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


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!

Ten post edytował drPayton 28.08.2007, 13:59:31
Go to the top of the page
+Quote Post
Radek79
post
Post #10





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 24.08.2007

Ostrzeżenie: (0%)
-----


(IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Działa poprawnie (IMG:http://forum.php.pl/style_emoticons/default/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 :/

Ten post edytował Radek79 28.08.2007, 13:56:25
Go to the top of the page
+Quote Post
drPayton
post
Post #11





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Spróbuj przez nl2br przepuścić ten tekst. Albo trim'em usuwaj zbędne "białe znaki". A najlepiej i jedno i drugie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował drPayton 28.08.2007, 14:01:52
Go to the top of the page
+Quote Post
Radek79
post
Post #12





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 24.08.2007

Ostrzeżenie: (0%)
-----


Dokładnie:
  1. <?php
  2. trim, nl2br, strip_tags, preg_replace('/s/',' ',$zmienna);
  3. ?>

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



Ten post edytował Radek79 28.08.2007, 14:59:41
Go to the top of the page
+Quote Post
Hazel
post
Post #13





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Hazel 28.08.2007, 20:43:49
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 04:45