Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wpisy do pliku - jak zrobic odstepy
Forum PHP.pl > Forum > Przedszkole
Ksiaze
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. ?>
Mariusz_Sz
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+
Ksiaze
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.
Pilsener
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.
DiH
Jeżeli posiadasz hosta z PHP5, to aż prosi się o użycie:
file_put_contents i file_get_contents
Ksiaze
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.
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.