Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problemy z odczytem z pliku
masif
post 29.01.2006, 13:34:09
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 29.01.2006
Skąd: Bielsko-Biała

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


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.

Ten post edytował masif 29.01.2006, 17:04:06
Go to the top of the page
+Quote Post
mike
post 29.01.2006, 13:37:21
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


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
Go to the top of the page
+Quote Post
masif
post 29.01.2006, 13:46:38
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 29.01.2006
Skąd: Bielsko-Biała

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


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


Ten post edytował mike_mech 29.01.2006, 13:54:59
Go to the top of the page
+Quote Post
mike
post 29.01.2006, 14:16:18
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


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ć.
Go to the top of the page
+Quote Post
masif
post 29.01.2006, 14:38:04
Post #5





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 29.01.2006
Skąd: Bielsko-Biała

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


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


Ten post edytował crash 29.01.2006, 14:44:20
Go to the top of the page
+Quote Post
mike
post 29.01.2006, 14:46:14
Post #6





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


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 ]
Go to the top of the page
+Quote Post
masif
post 29.01.2006, 16:08:56
Post #7





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 29.01.2006
Skąd: Bielsko-Biała

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


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
Go to the top of the page
+Quote Post
mike
post 29.01.2006, 16:13:32
Post #8





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


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ć)
Go to the top of the page
+Quote Post
crash
post 29.01.2006, 16:16:10
Post #9





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


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


--------------------
Go to the top of the page
+Quote Post
masif
post 29.01.2006, 16:48:24
Post #10





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 29.01.2006
Skąd: Bielsko-Biała

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


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?
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: 14.08.2025 - 05:29