Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] problem z plikiem txt
Forum PHP.pl > Forum > Przedszkole
caelian
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
tehaha
może spróbuj z funkcją http://php.net/manual/en/function.file-get-contents.php
caelian
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?
tehaha
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
caelian
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
tehaha
wydaje mi się, że tą funkcją umieścisz pointer tam gdzie chcesz http://php.net/manual/en/function.fseek.php
caelian
  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. ?>
tehaha
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ć
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.