Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Porcjonowanie danych z pliku, problem z podwojnym porcjonowaniem
tommy
post 24.10.2005, 20:25:07
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.08.2005

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


Witam, pewnie rozwiazanie jest banalnie proste ale powiem szczerze ze szukalem rozwiazan w internecie i przyladowe tutoriale nie znajdowaly zastosowania w moim problemie...
mam baze danych w pliku gdzie dane zapisane sa w takiej postaci: tytul||tresc||data|#|. Ze wzgledu na to ze tresc moze byc dosc dluga funkcja file() ktora czyta plik linijka po linijce nie pasowala do mojego skryptu. Postanowilem wiec zrobic podwojne filtrowanie danych odczytanych z pliku. Najpierw za pomoca explode wczytuje do tablicy dane poprzedzielane |#| a nastepnie chce jeszcze raz przefiltrowac wynik zeby pozbyc sie || i wyswietlic na stronie 5 pierwszych wpisow. Napisalem taki prosciutki skrypt ale... nic nie wyswietla dlatego prosze o pomoc. Zapewne rozwiazanie jest banalnie proste...

  1. <?php
  2. $fp=fopen("plik.txt", "r");
  3. $contents=fread($fp, filesize("plik.txt"));
  4. $exp1=explode('|#|', $contents);
  5. foreach($exp1 as $val)
  6. {
  7. $exp2=explode('||', $val);
  8. }
  9. for($i=0;$i<4;$i++)
  10. {
  11. echo $exp2[$i].'<br>';
  12. }
  13. ?>


PS zaznaczam ze nie potrzebuje robic linkow generowanych przez php do wczesniejszych wpisow, samo odczytanie 5 pierwszych zupelnie wystarczy.
Dziekuje za pomoc i Pozdrawiam


~mike_mech


--------------------
What we see and what we seem are but a dream, a dream within a dream.
Go to the top of the page
+Quote Post
strife
post 24.10.2005, 22:32:15
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


  1. <?php
  2.  
  3. $exp2=explode('||', $val);
  4. }
  5. for($i=0;$i<4;$i++)
  6. {
  7. echo $exp2[$i].'<br>';
  8. }
  9.  
  10. ?>


Co ma Ci czytać skoro $exp2 nie jest tablicą?


--------------------
Go to the top of the page
+Quote Post
tommy
post 24.10.2005, 23:48:24
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.08.2005

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


OK ale w takim razie $exp1 tez nie jest tablica? Zrozumialem ze musze zrobic podwojne rozbicie calosci zawartej w pliku, najpierw zeby w tablicy otrzymac ciagi poprzedzielane|#| a nastepnie je porozdzielac pzrez wyluskanie z pomiedzy ||... i zarowno $exp! i $exp2 myslalem, ze sa tablicami...
Moze sie myle niewazne. Jaki jest jednak sposob na rozwiazanie problemu ktory przedstawilem?
Pozdrawiam!


--------------------
What we see and what we seem are but a dream, a dream within a dream.
Go to the top of the page
+Quote Post
dr_bonzo
post 25.10.2005, 00:18:30
Post #4





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


  1. <?php
  2.  
  3. $dane = array();
  4. $dane[] = array(
  5. 'tytul' => 'Poznajemy serialize()',
  6. 'tresc' => 'zajrzyj do manuala',
  7. 'data' => 'dzisiaj'
  8. );
  9. // itd.
  10.  
  11. // zapis do pliku (zapisujesz wszystkie artykuly/newsy/czy co to jest)
  12. file_put_contents( $filename, serialize( $dane ) ); // lub fopen() + fwrite() jak masz php4
  13.  
  14. // odczyt
  15. $inneDane = unserialize( file_getcontents( $filename ) );
  16. $pierwszePiec = array_slice( $inneDane, 0, 5 );
  17. ?>

Wada: zeby odczytac 5 wpisow musisz wczytac caly plik
Zalety: prosto, szybko (nie meczysz sie z explode) i bezpiecznie (nie martwisz sie o escapowanie danych-- a co jak ktos wpisalby do tresci "|#"?)


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 07:50