Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Zapis do pliku w określonym miejscu
Blade7
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 4.04.2012

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


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ć?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Barcelona
post
Post #2





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

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


r+ --> Otwarcie pliku do odczytu i zapisu, poczynając od początku pliki.
a --> Otwarcie pliku do dodania zawartości.

Strona 84 Vademecum profesionalisty (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Blade7
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 4.04.2012

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


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ś?

Ten post edytował Blade7 5.04.2012, 13:31:56
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post
Crozin
post
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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).
Go to the top of the page
+Quote Post
Blade7
post
Post #6





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 4.04.2012

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


@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.
Go to the top of the page
+Quote Post
Crozin
post
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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?
Go to the top of the page
+Quote Post
Blade7
post
Post #8





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 4.04.2012

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


Chodzi mi o kod w php, jak to zapisać?
Go to the top of the page
+Quote Post
Crozin
post
Post #9





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


http://tinyurl.com/ntx28m
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 20:37