Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z fopen()
slepy
post
Post #1





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 27.02.2003

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


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
Go to the top of the page
+Quote Post
DeyV
post
Post #2





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




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+


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
slepy
post
Post #3





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 27.02.2003

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


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
Go to the top of the page
+Quote Post
DeyV
post
Post #4





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




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()


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
slepy
post
Post #5





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 27.02.2003

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


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





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




niewątpliwie, ale jak być przeczytał do końca mojego posta, to wiedziałbyś, czym to się skończy. Dane zostaną NADPISANE, jasne?


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
KaMeLeOn
post
Post #7





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


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()...


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
mazy
post
Post #8





Grupa: Zarejestrowani
Postów: 69
Pomógł: 4
Dołączył: 12.03.2003
Skąd: Suwałki

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


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
Go to the top of the page
+Quote Post
Puciek
post
Post #9


TAO programowania


Grupa: Zarejestrowani
Postów: 340
Pomógł: 3
Dołączył: 25.03.2003
Skąd: ze słoika

Ostrzeżenie: (30%)
XX---


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]


--------------------

http://puciek.wordpress.com prywatnie o świecie
Go to the top of the page
+Quote Post
KaMeLeOn
post
Post #10





Grupa: Zarejestrowani
Postów: 680
Pomógł: 0
Dołączył: 1.10.2002
Skąd: Wrocław

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


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...


--------------------
"Czerp z innych, ale nie kopiuj ich. Bądź sobą." Michel Quoist
Go to the top of the page
+Quote Post
Puciek
post
Post #11


TAO programowania


Grupa: Zarejestrowani
Postów: 340
Pomógł: 3
Dołączył: 25.03.2003
Skąd: ze słoika

Ostrzeżenie: (30%)
XX---


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


--------------------

http://puciek.wordpress.com prywatnie o świecie
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 17:06