Zapis danych do pliku tekstowego jest to jedna z prostrzych, a zarazem jedna z ważniejszych rzeczy jaką powinien opanować początkujący adept php.
PRZYKŁAD |
<?php
// zmienna $dane, która będzie zapisana // może także pochodzić z formularza np. $dane = $_POST['dane']; $dane = "tekst do wprowadzenia\n";
// przypisanie zmniennej $file nazwy pliku $file = "baza.txt";
// uchwyt pliku, otwarcie do dopisania $fp = fopen($file, "a");
// blokada pliku do zapisu flock($fp, 2);
// zapisanie danych do pliku fwrite($fp, $dane);
// odblokowanie pliku flock($fp, 3);
// zamknięcie pliku fclose($fp); ?>
|
Często są pytania jak zrobić aby dane dopisane do pliku byly na początku a nie na końcu?
Poniżej przykład takiego skryptu.
PRZYKŁAD |
<?php
// zmienna $dane, która będzie zapisana // może także pochodzić z formularza np. $dane = $_POST['dane']; $dane="$jakas_zmienna\n";
// przypisanie zmniennej $file nazwy pliku $file="baza.txt";
// uchwyt pliku, otwarcie do odczytu i dopisania $fp=fopen("$file", "r+");
// dodanie do zmiennej dane poprzedniej zawartości pliku $dane=$dane.fread($fp, filesize($file));
// ustawienie kursora na początku pliku rewind($fp);
// blokada pliku do zapisu flock($fp, 2);
// zapisanie danych do pliku fwrite($fp, $dane);
// odblokowanie pliku flock($fp, 3);
// zamknięcie pliku fclose($fp); ?> |
Od wersji 4.3.2 obsługiwany jest jeszcze jeden tryb otwarcia pliku do zapisu x. Tryb ten daje nam możliwość dopisywania do pliku na jego poczatku. Czyli jeżeli wersja PHP na naszym serwerze jest większa lub równa 4.3.2 to możemy stosować poniższy kod zamiast powyższego.
PRZYKŁAD |
<?php
// zmienna $dane, która będzie zapisana // może także pochodzić z formularza np. $dane = $_POST['dane']; $dane = "tekst do wprowadzenia\n";
// przypisanie zmniennej $file nazwy pliku $file = "baza.txt";
// uchwyt pliku, otwarcie do dopisania na początku pliku $fp = fopen($file, "x");
// blokada pliku do zapisu flock($fp, 2);
// zapisanie danych do pliku fwrite($fp, $dane);
// odblokowanie pliku flock($fp, 3);
// zamknięcie pliku fclose($fp); ?> |