Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z fopen()
Forum PHP.pl > Forum > PHP
slepy
Hej
Z tego co wiem tryb +r powinnien Otwiera plik do odczytu i zapisu z czego zapis mialby nastepowac na gorze pliku.
Moj skrypt wyglada tak:

$file=fopen("news.txt", "r+");
fputs($file, "$trescn");


Kod
$file=fopen("news.txt", "r+");

fputs($file, "$trescn");


Faktycznie zostaje otwarty plik i tresc zostaje dopisana za pierwszym razem
Ale gdybym chial dodac newsa 2 raz to stara tresc zostaje zastapiona nowa...
Niewiem dlacego tak sie dzieje... Bardzo prosze o pomoc.
Wczesniej rozmawialem z pewna osoba to powiedziala mi ze php ma problemy z dopisywaniem na poczatku.
Z gory dziekuje
DeyV
Cytat
Fopen
tryb może być dowolny z poniższych:


'r' - Otwórz tylko do odczytu; ustawia wskaźnik pliku na początku pliku.

'r+' - Otwórz do odczytu i zapisu; ustawia wskaźnik pliku na początku pliku.

'w' - Otwórz tylko do zapisu; ustawia wskaźnik pliku na początku pliku i obcina plik (zeruje) do 0 długości. Jeśli plik nie istnieje to próbuje go utworzyć.

'w+' - Otwórz do odczytu i zapisu; ustawia wskaźnik pliku na początku pliku i obcina plik (zeruje) do 0 długości. Jeśli plik nie istnieje to próbuje go utworzyć.

'a' - Otwórz tylko do zapisu; ustawia wskaźnik pliku na końcu pliku. Jeśli plik nie istnieje to próbuje go utworzyć.

'a+' - Otwórz do odczytu i zapisu; ustawia wskaźnik pliku na końcu pliku. Jeśli plik nie istnieje to próbuje go utworzyć.


Notatka: Parametr tryb może zawierać literę 'b'. To jest użyteczne tylko na systemach, które rozróżniają pliki pomiędzy binarne i tekstowe (np. Windows. To jest bezużyteczne na Unixach) Jeśli nie potrzebne zostanie zignorowane.


polecam akapit a+
slepy
ehh sad.gif
a+ ustawia wskaznik na koncu pliku...
A ja musze miec na poczatku...
Widzial ktos newsy zaczynajac od dolu w gore czytac questionmark.gif
DeyV
A czy pliki są z gumy, ze sie będą w każdą stroną rozciągać?
Jak chcesz by kolejny news nadpisał się na poprzedni to wszystko ok, ale jeśli chcesz mieć wszystkie ... to polecam array_reverse()
slepy
Niewiem czy sa z gumy...
Ale pacz:
Cytat
'r+' - Otwórz do odczytu i zapisu; ustawia wskaźnik pliku na początku pliku.

Czyli powinno na pocatku dopisywac...
DeyV
niewątpliwie, ale jak być przeczytał do końca mojego posta, to wiedziałbyś, czym to się skończy. Dane zostaną NADPISANE, jasne?
KaMeLeOn
Cytat
Czyli powinno na pocatku dopisywac...

No i dopisuje się na początku, ale nie przesuwa istniejącej już zawartości...
To w twoim interesie jest to tak zorganizować, żeby Ci pasowało...
Zawsze możesz pobrać istniejące newsy do zmiennej dopisać na początku to co chcesz i nadpisać całą zawartość pliku...
Osobiście stosowałbym metodę podaną przez DeyV, czyli dopisywanie na końcu, a potem odwrócenie przez funkcję array_reverse()...
mazy
miły Kolego smile.gif a nawet bardzo miły dopisz na końcu a pętle wyświetlająca także zacznij od końca.

ps. po co tyle zamieszania aaevil.gif
Puciek
Jednym z prostszych sposobów jest stworzenie pliku temp.dat do którego najpierw skopiujemy aktualne newsy. Potwem czyścimy główn plik (newsy.dat), wklejamy nowego newsa. Doklejamy poprzednie newsy z pliku temp.dat za pomocą a. Proste prawda ? Kod dla przykładu:<P>
[php:1:db390383b8]
<?php

copy("newsy.dat", "temp.dat");

file=fopen("newsy.dat", "w");
fwrite=($file, $tresc_newsa);
fclose($file);

file=fopen("temp.dat", "r");
$newsy_stare=fred($file, $tresc_newsa);
fclose($file);

file=fopen("newsy.dat", "a");
fwrite=($file, $newsy_stare);
fclose($file);

?>[/php:1:db390383b8]
KaMeLeOn
Cytat
Jednym z prostszych sposobów jest stworzenie pliku temp.dat do którego najpierw skopiujemy aktualne newsy.

Po co, skoro operacje w pamięci są szybsze...
Puciek
Cytat
Po co, skoro operacje w pamięci są szybsze...


Ja nie napisałem że jest to najszybszy sposób, napisałem tylko że najprostszy
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.