Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zapis do pliku w określonym miejscu
Forum PHP.pl > Forum > Przedszkole
Blade7
Witam
Mam taki oto skrypt:
  1. <?php
  2. $tresc = $_POST['nazwa1'];
  3. $fp = fopen("plik.txt", "r+");
  4. fseek($fp, 281);
  5. fwrite($fp, $tresc);
  6. fclose($fp);
  7. ?>

Za jego pomocą chcę w określonym miejscu (po 281 znaku) dopisać $tresc (pobraną wcześniej z formularza).
Problem jest taki, że gdy zapisuje do pliku wyraz np. 5-znakowy to zapisuje się w pliku jednocześnie usuwając 5 znaków, które znajdowały się w tym miejscu wcześniej. Jak to wyeliminować?
Barcelona
r+ --> Otwarcie pliku do odczytu i zapisu, poczynając od początku pliki.
a --> Otwarcie pliku do dodania zawartości.

Strona 84 Vademecum profesionalisty smile.gif
Blade7
Zmienia atrybutu na "a" ustawia wewnętrzny wskaźnik pliku na końcu treści, a ja chcę dopisać nową treść mniej więcej w środku.

EDIT
Pomoże mi ktoś?
nospor
Nie da sie. Taki urok plików.
To co chcesz zrobić możesz zrobić np. poprzez ponowne zapisanie od nowa pliku.
Odczytujesz plik do znaku jaki chcesz do zmiennej, dopisujesz swoje znaki, doczytujesz dalszą tresc pliku, a następnie zawartosc zmiennej wpisujesz na nowo jako całość do pliku.
Crozin
Musisz odczytać całą treść pliku od 281 bajtu (fseek działa na bajtach, nie znakach) do jakiejś pomocniczej zmiennej, następnie wrzucić treść z formularza, a na koniec ponownie wrzucić treść odczytaną w pierwszym kroku.

Jeżeli miałby występować problemy z pamięcią (ilość danych do odczytania w pierwszym kroku byłaby zbyt duża) musiałbyś całość robić w pętli, w porcjach (najprawdopodobniej w wielkości równej co najmniej wielkości danych odebranych z formularza).
Blade7
@nospor
Gdzieś czytałem o tym sposobie, ale nie wiem jak to zrobić. Mógłbyś mi wytłumaczyć?
@Crozin
Stosowanie pętli nie będzie mi chyba potrzebne, ilość danych w pliku, do którego chcę dopisać treść jest niewielka.
Crozin
Cytat
Gdzieś czytałem o tym sposobie, ale nie wiem jak to zrobić. Mógłbyś mi wytłumaczyć?
Zarówno ja, jak i @nospor opisaliśmy dokładnie to samo - czego nie rozumiesz z tych opisów?
Blade7
Chodzi mi o kod w php, jak to zapisać?
Crozin
http://tinyurl.com/ntx28m
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.