Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] problem z plikiem txt
caelian
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 25.05.2010

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


Zgodnie z rada znajomych z tego forum troszke poczytalem o funkcjach itd i pomoglo mi to troche, jednak teraz w 'fazie Cwiczen" napotkalem sie na problem:

co chce zrobic:
mam plik txt - nowosci. txt do tego pliku chce recznie dopisywac nowosci.
Nastepnie w ramce z kodem php ma byc wywietlana:

linia 1 pliku txt(data najnowsza) - (np: 1 VI 2010)
linia 2 - pusta
linia 3 pierwsza linia textu po dacie 1 VI 2010
linia 4 tu ma sie pojawic link "czytaj wiecej". zawartosc linku wyswietlana ma byc w iframe o nadanej nazwie
linia 5 data poprzednia 28 V 2010
linia 6 - pusta
linia 7 - pierwsza linia textu poprzedniej daty czyli 28 V 2010
i linia 8 - tu ma sie pojawic link "czytaj wiecej". zawartosc linku wyswietlana ma byc w iframe o nadanej nazwie.

moj obecny kod wyglada tak:

  1. <?php
  2. $otwarcie = fopen("nowosci.txt", "r+"); // otwarcie pliku do odczytu i zapisu
  3. $wyswietl = fgets($otwarcie); // pobiera 1 linie textu z pliku nowosci.txt
  4. echo ("$wyswietl"); // wyswietla 1 linie textu pobrana z pliku nowosci.txt
  5. $dodaj = '<a href="nowosci.txt" target="iframe">czytaj wiecej</a>'; // zmienna definiujaca text/ kod html jakima zostac dodany po odczytaniu lini textu.
  6. $dodany = fwrite ($otwarcie, "$dodaj"); // zapisuje text ze zmiennej $dodaj do pliku nowosci.txt po odczytanej lini.
  7. //include ('nowosci.txt'); // wyswietlenie pliku.
  8.  
  9. echo ("$wyswietl");
  10.  
  11. ?>

co do zczytywania 1 lini nie ma problemu zadnego i dziala jak nalezy jednakze fwrite mi nadpisuje moj plik txt zamiast dodac link pomiedzy linie w pliku - i tu potrzebuje pomocy oraz prostej informacji jak za pomoca fgets zczytywac kolejne linie a nie tylko i wylacznie 1 linie pliku txt
Go to the top of the page
+Quote Post
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


może spróbuj z funkcją http://php.net/manual/en/function.file-get-contents.php
Go to the top of the page
+Quote Post
caelian
post
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 25.05.2010

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


no tak aczkolwiekz funkcja podana przez ciebie mam ograniczona ilosc znakow do odczytaniaa z fgets czyta mi cala linie chyba ze jest sposob by uzyc fgets wewnatrz tej funkcji pozatym jak uzyc fwrite by dodawal pusta linie i nie nadpisywal pliku?
Go to the top of the page
+Quote Post
tehaha
post
Post #4





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


dlaczego ograniczona? Parametr maxlen domyślnie jest ustawiony na odczyt aż do końca pliku.

// źle odebrałem w czym leży Twój problem, tu masz przykład znaleziony w sieci, który dokonuje zapisu na końcu pliku:
  1. <?php
  2. $File = "YourFile.txt";
  3. $Handle = fopen($File, 'a');
  4. $Data = "Jane Doe\n";
  5. fwrite($Handle, $Data);
  6. $Data = "Bilbo Jones\n";
  7. fwrite($Handle, $Data);
  8. print "Data Added";
  9. fclose($Handle);
  10. ?>


musisz w fopen() ustawić mode na 'a' wtedy dane zostaną dopisane do pliku

Ten post edytował tehaha 28.05.2010, 18:52:20
Go to the top of the page
+Quote Post
caelian
post
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 25.05.2010

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


ok jest juz lepiej po zmianie na a ale jak zrobi c np:

zawartosc pliku txt:

linia 1
linia 2
linia 3

uzywam fwrite()
i mam

linia 1
text dopisany za pomoca fwrite
linia 2
linia 3
Go to the top of the page
+Quote Post
tehaha
post
Post #6





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


wydaje mi się, że tą funkcją umieścisz pointer tam gdzie chcesz http://php.net/manual/en/function.fseek.php
Go to the top of the page
+Quote Post
caelian
post
Post #7





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 25.05.2010

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


  1. SEEK_SET //Set position equal to offset bytes.

czy tym ustawie wskaznik na koniec lini?

pozatym teraz ten kod nic nie wyswietla jak zmienilem r+ na a

  1. <?php
  2. $otwarcie = fopen("nowosci.txt", "a"); // otwarcie pliku do odczytu i zapisu
  3. $wyswietl = fgets($otwarcie); // pobiera 1 linie textu z pliku nowosci.txt
  4. echo ("$wyswietl"); // wyswietla 1 linie textu pobrana z pliku nowosci.txt
  5. $dodaj = '<a href="nowosci.txt" target="iframe">czytaj wiecej</a>'; // zmienna definiujaca text/ kod html jakima zostac dodany po odczytaniu lini textu.
  6. $dodany = fwrite ($otwarcie, "$dodaj"); // zapisuje text ze zmiennej $dodaj do pliku nowosci.txt po odczytanej lini.
  7. //include ('nowosci.txt'); // wyswietlenie pliku.
  8.  
  9. echo ("$wyswietl");
  10.  
  11. ?>


Ten post edytował caelian 28.05.2010, 19:17:40
Go to the top of the page
+Quote Post
tehaha
post
Post #8





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


to pewnie trzeba do odczytu użyć fopen z modem do odczytu r+, i drugi raz fopen z modem do zapisu na końcu 'a', co do tej funkcji http://php.net/manual/en/function.fseek.php, to drugi parametr czyli offset, odpowiada za to gdzie należy przesunąć pointer, aczkolwiek dokładnie Ci nie powiem bo nigdy nie używałem tej funkcji, musisz pokombinować
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 Aktualny czas: 20.08.2025 - 04:39