Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wpisy do pliku - jak zrobic odstepy
Ksiaze
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 25.02.2010

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


Szukalem rozwiazania jak umiescic wpisy do pliku w kolejnosci "od gory do dolu". Znalazlem taki kod. Niestety nie oddziela od siebie wpisow, laczy je z poprzednim wpisem. Probowalem roznych sztuczek, ale nie potrafie sobie poradzic. je


Oto kod:

  1. <?php
  2.  
  3. // zmienna $dane, która będzie zapisana
  4. // może także pochodzić z formularza np. $dane = $_POST['dane'];
  5. $dane="$jakas_zmienna\n";
  6.  
  7. // przypisanie zmniennej $file nazwy pliku
  8. $file="baza.txt";
  9.  
  10. // uchwyt pliku, otwarcie do odczytu i dopisania
  11. $fp=fopen("$file", "r+");
  12.  
  13. // dodanie do zmiennej dane poprzedniej zawartości pliku
  14. $dane=$dane.fread($fp, filesize($file));
  15.  
  16. // ustawienie kursora na początku pliku
  17. rewind($fp);
  18.  
  19. // blokada pliku do zapisu
  20. flock($fp, 2);
  21.  
  22. // zapisanie danych do pliku
  23. fwrite($fp, $dane);
  24.  
  25. // odblokowanie pliku
  26. flock($fp, 3);
  27.  
  28. // zamknięcie pliku
  29. fclose($fp);
  30. ?>


Ten post edytował Ksiaze 26.02.2010, 22:22:54
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Mariusz_Sz
post
Post #2





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 11.02.2010

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


Problem leży w :
CODE
$fp=fopen("$file", "r+");

zamiast r+.

r - Tylko do odczytu
r+ - Do odczytu i zapisu
w - Tylko do zapisu. Tworzy nowy plik lub kasuje stary jeśli istnieje
w+ - Do odczytu i zapisu.Tworzy nowy plik lub kasuje stary jeśli istnieje
a - Tylko do zapisu. Nie kasuje istniejącego pliku lecz dopisuje na jego końcu
a+ - Do odczytu i zapisu. Nie kasuje istniejącego pliku lecz dopisuje na jego końcu

Czyli użyj a- lub a+
Go to the top of the page
+Quote Post
Ksiaze
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 25.02.2010

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


Kolega chyba tez poczatkujacy.

1.
a - Tylko do zapisu. Nie kasuje istniejącego pliku lecz dopisuje na jego końcu
a+ - Do odczytu i zapisu. Nie kasuje istniejącego pliku lecz dopisuje na jego końcu

Jak sam zauwazyles dopisuje na koncu.

2.
Kiedys to zastosowalem, nie dopisuje nic.

Jeszcze taka mala uwaga.
Pierwotny kod mial "ab", ale to mi dopisywalo wlasnie na koniec. Szukalem wiec rozwiazania, aby dodawal na koniec. Znalazlem powyzszy kod. Owszem dodaje, ale nie robi odstepow miedzy wpisami. Moze to byc prozaica sprawa, tylko nie wiem gdzie i jak umiescic </br>

Rozwiazalem problem. Przeanalizowalem pewien kod od kolegi, ktory 3 lata temu przeslal mi go. Wtedy to byla dla mnie czarna magia, teraz tez jest, ale sa juz jakies przeswity zrozumieniu tego.
Dodalem po prostu komende fputs($fp, "") i to zadzialalo.

Rozwiazalem problem. Przeanalizowalem pewien kod od kolegi, ktory 3 lata temu przeslal mi go. Wtedy to byla dla mnie czarna magia, teraz tez jest, ale sa juz jakies przeswity zrozumieniu tego.
Dodalem po prostu komende fputs($fp, "") i to zadzialalo.

Po 30 minutach

No i bingo !

Rozwiazalem problem. Przeanalizowalem pewien kod od kolegi, ktory 3 lata temu przeslal mi go. Wtedy to byla dla mnie czarna magia, teraz tez jest, ale sa juz jakies przeswity zrozumieniu tego.
Dodalem po prostu komende fputs($fp, "") i to zadzialalo.

Ten post edytował Ksiaze 26.02.2010, 22:45:52
Go to the top of the page
+Quote Post
Pilsener
post
Post #4





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Cytat
jak umiescic wpisy do pliku w kolejnosci "od gory do dolu"
- po co tak? To nielogiczne, nowe dane są zawsze dopisywane na końcu pliku - rozumiem odczytywać od końca, ale zapisywać? Nie da się tego wygodnie zrobić, bo trzeba albo wczytać cały plik do pamięci, co jest mało wydajne i nie będzie działać przy dużych plikach, albo odczytać plik linia po linii i dopisać go do zmiennej, która ma być na początku pliku.
Go to the top of the page
+Quote Post
DiH
post
Post #5





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

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


Jeżeli posiadasz hosta z PHP5, to aż prosi się o użycie:
file_put_contents i file_get_contents
Go to the top of the page
+Quote Post
Ksiaze
post
Post #6





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 25.02.2010

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


Cytat(Pilsener @ 26.02.2010, 23:55:41 ) *
- po co tak? To nielogiczne, nowe dane są zawsze dopisywane na końcu pliku - rozumiem odczytywać od końca, ale zapisywać? Nie da się tego wygodnie zrobić, bo trzeba albo wczytać cały plik do pamięci, co jest mało wydajne i nie będzie działać przy dużych plikach, albo odczytać plik linia po linii i dopisać go do zmiennej, która ma być na początku pliku.

Zgadza sie, wszystko musi ladowac. Ale dlugo szukalem i wszedzie powtarzaja wlasnie to rozwiazanie. A musi byc na poczatku, taki wymog ktos stawia. Pozdrawiam.

Cytat(DiH @ 1.03.2010, 02:52:43 ) *
Jeżeli posiadasz hosta z PHP5, to aż prosi się o użycie:
file_put_contents i file_get_contents

No tak, o tym wlasnie napisalem wyzej. tongue.gif

Cytat(DiH @ 1.03.2010, 02:52:43 ) *
Jeżeli posiadasz hosta z PHP5, to aż prosi się o użycie:
file_put_contents i file_get_contents

No tak, o tym wlasnie napisalem wyzej.

No tak, o tym wlasnie napisalem wyzej.

No tak, o tym wlasnie napisalem wyzej.
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 - 12:33