Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Odczyt z pliku, odczyt z pliku
bolek1
post 24.07.2009, 12:00:52
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 14.07.2009

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


Witam,
napotkałem problem dotyczący odczytu poszczególnej linii z pliku tekstowego. Postanowiłem użyć do tego funkcji file, która każdy element potraktuje jako osobny wiersz z pliku.

plik.txt
  1. 5 //linia pierwsza
  2. 7 //linia druga
  3. 9 //linia trzecia
  4. 1 //linia czwarta


odczyt.php
  1. <?$plik=file("plik.txt");
  2. print_r($plik);
  3. $plik[2]=4;
  4. fwrite ($plik[2]);
  5. fclose($plik);
  6. ?>


W tym kodzie u góry wywala mi błędy:
Wrong parameter count for fwrite() in ...
Warning: fclose(): supplied argument is not a valid stream resource in ...

Chodzi mi o to by ten kod odczytywał trzecią linię i jej wartość zamieniał na np.4.
Go to the top of the page
+Quote Post
Spawnm
post 24.07.2009, 12:02:53
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




aby użyć fwrite musisz wcześniej dać fopen.
użyj file_get_contents" title="Zobacz w manualu PHP" target="_manual

ew. całość zrób pod fopen
Go to the top of the page
+Quote Post
bolek1
post 24.07.2009, 12:11:09
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 14.07.2009

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


  1. <?
  2. $plik=file("plik.txt");
  3. print_r($plik);
  4. $plik[5]=3;
  5. fopen("plik.txt",'r+');
  6. fwrite ($plik[5]);
  7. fclose($plik);
  8. ?>


Nadal zwraca te same błędy ...
Co poprawić ?
Go to the top of the page
+Quote Post
Fifi209
post 24.07.2009, 12:12:59
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Poczytaj jakie parametry przyjmuje fwrite.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Spawnm
post 24.07.2009, 12:13:08
Post #5





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




a zajrzyj do dokumentacji fclose" title="Zobacz w manualu PHP" target="_manual fwrite" title="Zobacz w manualu PHP" target="_manual
Go to the top of the page
+Quote Post
bolek1
post 24.07.2009, 12:25:58
Post #6





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 14.07.2009

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


  1. <?
  2. $plik=file("plik.txt");
  3. print_r($plik);
  4. $tab[5]=3;
  5. fopen("plik.txt",'r+');
  6. fwrite ($plik,$tab[5]);
  7. fclose($plik);
  8. ?>


Błędy:Warning: fwrite(): supplied argument is not a valid stream resource in
Warning: fclose(): supplied argument is not a valid stream resource in

Co jeszcze poprawić ?

Ten post edytował bolek1 24.07.2009, 12:26:40
Go to the top of the page
+Quote Post
Fifi209
post 24.07.2009, 12:27:37
Post #7





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Wynik fopen musisz przypisać do zmiennej i tą zmienną w fclose wrzucić... czytaj dokumentację


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
bolek1
post 24.07.2009, 12:40:24
Post #8





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 14.07.2009

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


  1. <?$plik=file("plik.txt");
  2. print_r($plik);
  3. $tab[3]=8;
  4. $zmiana=fopen("plik.txt",'r+');
  5. fwrite ($zmiana,$tab[3]);
  6. fclose($zmiana);
  7. ?>


Teraz nie wywala już błędów, ale niestety nie zmienia wartości indeksu 3.

W czy tkwi błąd ?
Go to the top of the page
+Quote Post
Spawnm
post 24.07.2009, 12:44:30
Post #9





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




zastanów się nad sensem tego kodu:
  1. <?php
  2. $plik=file("plik.txt");
  3. print_r($plik);
  4. $tab[3]=8;
  5. ?>
Go to the top of the page
+Quote Post
bolek1
post 24.07.2009, 12:53:14
Post #10





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 14.07.2009

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


  1. <?php
  2. $plik=file("plik.txt"); //wczytuje do tablicy
  3. print_r($plik); //wyswietla zawartosc tablicy
  4. $tab[3]=8; //  indeksowi 3 przypisuje wartosc 8
  5. ?>


To moja interpretacja. Co jest źle ?winksmiley.jpg
Go to the top of the page
+Quote Post
hedrazer
post 24.07.2009, 13:05:00
Post #11





Grupa: Zarejestrowani
Postów: 15
Pomógł: 1
Dołączył: 27.03.2009
Skąd: Pułtusk

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


zle jest to, ze zmieniasz zawartość 4 indeksu tablicy $tab, która jest PUSTA
tak w skrócie.

EDIT:
  1. <?php
  2. $_filename = "./plik.txt";
  3.  
  4. // odczytujemy zawartosc pliku
  5. $handle = fopen($_filename, "r");
  6. $data = fread($handle, filesize($_filename));
  7. fclose($handle);
  8.  
  9. $_array = split("\n", $data); // ladujemy zawartosc do tablicy (dzielimy wg. znaku nowej linii)
  10. $_count = count($_array)-1;
  11.  
  12. // zmieniamy zawartość 3 linii (przy zalozeniu ze numerujemy od 0)
  13. $nr_linii = 3; // liczona od 0 (takze w tym momencie zmienimy 4 linię)
  14. $wartosc  = 123;
  15.  
  16. if($nr_linii <= $_count) { // jezeli nr linii jest mniejszy równy liczbie wszystkich linii w pliku
  17.    // wykonujemy zmianę wartości
  18.    $_array[$nr_linii] = $wartosc;
  19.  
  20. // zapisujemy wynik naszego dzialania...
  21.    $handle = fopen($_filename, "w");
  22.    for($i=0; $i < $_count; $i++) {
  23.        fwrite($handle, $_array[$i]."\n");
  24.    }
  25.    fclose($handle);
  26. }
  27. ?>


napisane na szybko, nalezy dodać tu jeszcze chmod'y i powinno działać ok...

Ten post edytował hedrazer 24.07.2009, 13:18:29
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: 8.07.2025 - 18:18