Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problemy z odczytem z pliku
Forum PHP.pl > Forum > Przedszkole
masif
Witam wszystkich.
Mam takie pytanie.
Otóż formularz penosi mi zmienne

Kod
$_POST['email']
$_POST['dane']



Poczym zapisuje je do pliku i odczytuje w pętli

  1. <?php
  2. $open_odczyt = fopen('pliki/poczekalnia.txt', "r");
  3. while(!feof($open_odczyt))
  4. {
  5.    echo 'Email: ' . fgets($open_odczyt);
  6.    echo '<BR>';
  7.    echo 'Dane: ' . fgets($open_odczyt);
  8.    echo '<BR>';
  9. }
  10. ?>

I wyrzuca mi na stronę zapis:

Kod
Email: adres@email.pl
Dane: Dane jakieś tam
Email:
Dane:


i jak widzicie wyrzuca mi też puste pola EMAIL i DANE.
Czemu? blink.gif



P.s To mój pierwszy post tutaj na forum. Witam wszystkich.
mike
1. Pokaż jak zapisujesz do pliku.
2. Bycie nowym nie zwalnia z obowiązku znajomości Regulaminu a wręcz przeciwnie. Popraw posta powyżej stosując się do zaleceń zawartych w Regulaminu (mówię o bbCode dla źródła php oraz zbędnych kolorkach)

P.S.
Witam smile.gif
masif
Sorry za kolory ale myślałem że będzie bardziej czytelnie oddzielając poszczególne bloki innym kolorem.

Taki zapisuje do pliku:

  1. <?php
  2. if( $_POST['email'] == '' and $_POST['dane'] == '' )
  3. {
  4. echo 'Musisz wypełnić wszystkie pola';
  5. }
  6. else
  7. {
  8. $open_zapis = fopen('pliki/poczekalnia.txt', "w");
  9. fwrite($open_zapis, $_POST['email'] . "\n");
  10. fwrite($open_zapis, $_POST['dane']. "\n");
  11. }
  12. ?>



---edit---
Wybacz wtargnięcie, ale o taki bbCode mi chodziło.
~mike_mech
mike
Zwróć uwagę ile masz linii w pliku po takim zapisie:

1. email"\n"
2. dane"\n"
3. (pusto)

Trzcia linia pojawia się dlatego że na końcu drugiej dajesz enter i to dlatgo pętla, która go czyta przeskakuje o jeden raz za dużo i pjawiaja się puste wpisy.

Możesz podczas odczytu użyć funkcji trim() i po filtrowaniu tą funkcją każdej linni sprawdzać czy jest ona różna od '' (ciąg pusty). Jeśli tak to dopiero ją (linię) wyswietlić.
masif
A mogę zrobić tak że cofnę 1 pozycję do tyłu znak końca pliku?


P.s Jak sie robi by zamiast napisu CODE był napis Kod php ?

-- edit:
Masz od tego tag [php] [ /php]

~crash
mike
Cytat(masif @ 2006-01-29 14:38:04)
A mogę zrobić tak że cofnę 1 pozycję do tyłu znak końca pliku?

Teoretycznie jest taka mozliwość, jak chcesz to możesz się pobawić z funkcjami do obsługi plików.
Ale dużo prościej jest: albo nie stawiać ostatniego entera, albo pomijać puste linie podczas wyświetlania.

P.S.
Do wstawiania kodu php używaj tagu [ php ] zamiast [ code ]
masif
Hmm a jak by to zrobić by nie wstawiać ENTERa?
Przecież jakoś muszę potwierdzić formularz? blink.gif

No i nie bardzo wiem gdzie wstawić tą funkcję trim() by nie pisała mi pustych znaków?
Przy odczycie ale gdzie?

  1. <?php
  2. $open_odczyt = fopen('pliki/poczekalnia.txt', "r");
  3. while(!feof($open_odczyt))
  4. {
  5.  echo 'Email: ' . fgets($open_odczyt);
  6.  echo '<BR>';
  7.  echo 'Dane: ' . fgets($open_odczyt);
  8.  echo '<BR>';
  9. }
  10. ?>


smile.gif
mike
Chodzi o enter który zapisany jest do pliku: czyli znak \n (to jest enter)

Możesz dać tak:
  1. <?php
  2. $open_odczyt = fopen('pliki/poczekalnia.txt', "r");
  3. while(!feof($open_odczyt))
  4. {
  5. $strEmail = trim( fgets($open_odczyt) );
  6. if( $strEmail != '' )
  7. {
  8. echo 'Email: ' . $strEmail . '<br />';
  9. }
  10.  
  11. $strDane = trim( fgets($open_odczyt) );
  12. if( $strDane != '' )
  13. {
  14. echo 'Dane: ' . $strDane . '<br />';
  15. }
  16. }
  17. ?>


(pisałem "z palca" i nie testowałem ale powinno działać)
crash
Cytat(masif @ 2006-01-29 16:08:56)
Hmm a jak by to zrobić by nie wstawiać ENTERa?
Przecież jakoś muszę potwierdzić formularz? blink.gif

To dwie całkiem różne rzeczy...

Odczytuj tak:
  1. <?php
  2. while( !feof( $open_odczyt ) )
  3. {
  4.  $line = trim( fgets( $open_odczyt ) );
  5.  
  6.  if( $line != '' )
  7.  {
  8. echo 'Email: ' . $line . '<br/>Dane: ' . fgets( $open_odczyt ) . '<br/>';
  9.  }
  10. }
  11. ?>

Oczywiście są o wiele lepsze sposoby zapisu takich danych do pliku. Poszukaj sobie na forum, pełno tego.

---edit---
Zgubiłeś średnik, pozwoliłem sobie dopisać, aby uniknąć niejasności.
~mike_mech
masif
Dzięki! działa to co napisaliście!


Cytat(crash @ 2006-01-29 15:16:10)
Oczywiście są o wiele lepsze sposoby zapisu takich danych do pliku. Poszukaj sobie na forum, pełno tego.


Hmm może powiem poprostu oco mi chodzi.
Uczę się php i jestem na etapie PLIKÓW.
Chce zrobić taki prymitywny katalog linków.

No i chce zrobić tak że ktoś pisze
adres strony,
swój email
i opis strony

To wszystko co on zapisze, zapisuje mi sie do pliku poczekalnia.txt
i potem [na innej stronie]
następuje odczyt z pliku.

Myślicie że np. lepiej by było użyć funkcji
file(); [do zapisu]
foreach(); [ do odczytu]


hm?
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.