Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] problem z fwrite()
Forum PHP.pl > Forum > Przedszkole
spidi
Witam.

Mam coś takiego w pliku wyslij.php:
CODE

$data = $_POST['data'];
$temat = $_POST['temat'];
$pole = $_POST['pole'];
$nick = $_POST['nick'];

$nick = HTMLSpecialChars($nick);
$temat = HTMLSpecialChars($temat);
$pole = HTMLSpecialChars($pole);

$wynik = $data . '|||' . $temat . '|||' . $pole . '|||' . $nick;
$plik ="news.txt";
$fp = fopen($plik, "r+");
fwrite ($fp, $wynik);
fclose($fp);



Zapisuje on do pliku txt 4 dane.
przy fopen() wstawiłem "r+" żeby ustawiał kursor przy otwieraniu na początku pliku.
Daje na początek ale całą pierwszą linijkę mi kasuje i zastępuje...

Jak to zrobić, żeby nie nadpisywało pierwszej linijki??

Chcę tego używać do dodawania news'ów, żeby każdy kolejny news był wyżej... Bo jak dam $fp = fopen($plik, "a"); to mi daje kolejnego newsa niżej...

Pozdrawiam smile.gif
Wykrywacz
Przeczytaj co dokładnie robi "r+"

aby dokonać zapisu tak jak sobie to obmyśliłeś,
ja zrobił bym to tak że wczytał bym sobie przez file najpierw jego zawartość po czym dodając interesującą cię linijkę nadpisał bym istniejący plik.

Zastanów się czy nie prościej było by ci użyć bazy danych...
nevt
  1. <?php
  2. $data = $_POST['data'];
  3. $temat = HTMLSpecialChars($_POST['temat']);
  4. $pole = HTMLSpecialChars($_POST['pole']);
  5. $nick = HTMLSpecialChars($_POST['nick']);
  6.  
  7. $plik ="news.txt";
  8. $fp = fopen($plik, "r+b");
  9. $wynik = "$data|||$temat|||$pole|||$nick\n".fread($fp, filesize($plik));
  10. rewind($fp);
  11. fwrite ($fp, $wynik);
  12. fclose($fp);
  13. ?>


PS. Przenoszę do Przedszkola.
EDIT. drobna korekta.
gox
Jesli kazdy kolejny news ma byc wyzej, to niestety musisz flipowac tablice..
gox
albo tak j.w ;p
Gość
Tylko ze kiedy wielkosc pliku przekroczy memory_limit, program przestanie dzialac, chyba ze zastosujesz taki kod:


  1. <?php
  2. $data = $_POST['data'];
  3. $temat = HTMLSpecialChars($_POST['temat']);
  4. $pole = HTMLSpecialChars($_POST['pole']);
  5. $nick = HTMLSpecialChars($_POST['nick']);
  6.  
  7. $plik ="news.txt";
  8.  
  9. $tmp_fname = sha1(uniqid(mt_rand(), true));
  10. $fpb = fopen($tmp_fname, 'w');
  11. $fp = fopen($plik, 'r');
  12. fwrite($fpb, "$data|||$temat||| $pole|||$nick\n");
  13. while( ! feof($fp))
  14.    fwrite($fpb, fread($fp, 1024));
  15. fclose($fp);
  16. fclose($fpb);
  17. unlink($plik);
  18. rename($tmp_fname, $plik);
  19.  
  20. ?>
spidi
Dzięki nevt smile.gif Pomogło.
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.