Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zapis do pliku przez otwartego przez fopen
Forum PHP.pl > Forum > Przedszkole
axwell
Mam pewnien plik dane.txt i otwieram go za pomocą fopen z parametrem "r+". W manualu php pisze "umieszcza wskaźnik na początku pliku". Niestety gdy mam jedne dane w pliku i próbuje zapisać nowe to stare się kasuję. Do pliku zapisywane są tylko nowe dane. Ktoś może wie czemu tak jest?
piotrooo89
bo musisz użyć
  1. <?php
  2. $fp=fopen('dane.txt', 'w');
  3. fwrite($fp, '1');
  4. fwrite($fp, '23');
  5. fwrite($fp, 'sdsd');
  6. fclose($fp);
  7. ?>


i tak umieszcza wskaźnik na końcu a żeby było na początku w+
axwell
Niestety nadal to samo, stare dane kasują się. Dodam że chodzi mi o to, aby moje dane dopisały się PRZED tymi, które już istnieje
piotrooo89
pokaż kod bez tego się nic nie zrobi...
axwell
  1. <?php
  2. $dane="||$nazwa_prog||$nazwa_pliku||$opis_pliku||$helplink||$testowany\n";
  3. $file="file/$dzial$rozsz";
  4. $fp=fopen("$file", "w+");
  5. fwrite($fp, $dane);
  6. fclose($fp);
  7. ?>
l0ud
Nie da się dopisać w ten sposób do początku pliku. Musisz pobrać całą jego zawartość i skleić ciągi.

  1. <?php
  2. file_put_contents('dane.txt',file_get_contents('dane.txt')."$nazwa_prog||$nazwa_pliku||$opis_pliku||$helplink||$testowany||");
  3. ?>


[edit] W ten sposób można dopisywać do końca pliku, jak to pokazał piotrooo89 niżej
piotrooo89
ja zrobiłem coś takiego i na bank dopisuje (sprawdziłem)

  1. <?php
  2. $dane='||$nazwa_prog||$nazwa_pliku||$opis_pliku||$helplink||$testowany';
  3. $fp=fopen('dane.txt', 'a');
  4. fwrite($fp, $dane);
  5. fclose($fp);
  6. ?>


teraz tylko pozmieniasz sobie tam gdzie masz zmienne żeby nie robiło go jako całego ciągu i będziesz miał.
axwell
piotrooo89 wiem, tak normalnie to mi też chodzi ale próbowałem właśnie zrobić żeby tekst dodawał się przed obecny. Możesz podać przykład jak to zrobić?
conel
Jeżeli ma się dodawać PRZED obecną zawartość pliku, to możesz zrobić tak:

  1. <?php
  2. $dane = 'jakis tekst'; // tekst do zapisania
  3. $plik = 'plik.txt';
  4.  
  5. $str = file_get_contents($plik);
  6. $dane .= $str;
  7. file_put_contents($plik, $dane);
  8. ?>
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.