Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapis do pliku kilku zmiennych.
Forum PHP.pl > Forum > PHP
renault12
Witam!

Otóż mam pewien problem z zapisem do pliku tekstowego opierający się na coś w stylu licznika.
Mam następujący kod:
  1. <?php
  2. $fp=fopen("daneuzyt.txt", "a"); //otworzenie pliku informacji
  3. $plik=file("licznik.txt");
  4. $liczba=$plik[0];
  5. $działanie= $liczba+1;
  6. $licznik=fopen("licznik.txt", "w+"); //otwarcie pliku licznika
  7. $ip=$_SERVER['REMOTE_ADDR']; //zmienna ip to zdalny IP
  8. $data=date ("G:i:s d-m-y"); //zmienna data to data i godzina
  9. flock($fp, 3);
  10. fwrite($licznik, "input= " .$działanie);
  11. flock($fp, 2);
  12. fwrite($fp, "\n$data $ip"); //zapisanie daty, IP, hosta, przeglądarki
  13. flock($fp, 3);
  14. fclose($fp); //zamknięcie pliku
  15. include ('index.html');
  16. ?>


Moją prośbą jest wskazanie mi co mam zrobić by zapis był poprawny do pliku, otóż przy odswiezeniu strony w pliku txt pojawia sie tylko "input= 1" a liczba powinna rosnąć w wzwyż. Początek kodu "input=" musi tam występować ponieważ jest on mi potrzebny jako zmienna do flasha.

Reasumując dokładnie chodzi mi o to aby w pliku licznik.txt zapisywalo sie "input=" a liczba za "=" rosła przy każdym odwiedzeniu strony.

Proszę o pomoc, dzieki.
emtiej
Cytat
$działanie


W PHP nie używamy polskich liter!!!! BOŻE brońexclamation.gif! Popraw to i pewnie zadziała
renault12
hmm poprawiłem a mimo to liczba dalej stoi w miejscu.
Volume
zrob odczyt lini z pliku daneuzyt.txt przez zczytywanie z tablicy (count), do tego musisz zastosowac zczytanie tego pliku przez funkcje file(): $plik2=file("daneuzyt.txt"); a potem odczyt: $liczba=count($plik2);
  1.  
  2. <?php
  3. $fp=fopen("daneuzyt.txt", "a"); //otworzenie pliku informacji
  4. $plik=file("licznik.txt");
  5. $plik2=file("daneuzyt.txt");
  6. $liczba=count($plik2);
  7. $dzialanie= $liczba+1;
  8. $licznik=fopen("licznik.txt", "w+"); //otwarcie pliku licznika
  9. $ip=$_SERVER['REMOTE_ADDR']; //zmienna ip to zdalny IP
  10. $data=date ("G:i:s d-m-y"); //zmienna data to data i godzina
  11. flock($fp, 3);
  12. fwrite($licznik, "input= " .$dzialanie);
  13. flock($fp, 2);
  14. fwrite($fp, "\n$data $ip"); //zapisanie daty, IP, hosta, przegldarki
  15. flock($fp, 3);
  16. fclose($fp); //zamknicie pliku
  17.  
  18. include('licznik.txt');
  19. include ('index.html');
  20. ?>
  21.  
renault12
Gitara, wszystko śmiga.
Ale mam jeszcze jedno takie lamerskie pytanko:
Jak mogę zrobić by zapisywały się dane na poczatku w zasadzie chodzi mi o sortowanie, czytałem coś o tych funkcjach sortowania lecz nic mi nie wychodzi, jak mógłbyś mnie oswietlic to bylbym wdzieczny.
erix
Cytat
! Popraw to i pewnie zadziała

Najpierw sprawdzaj, potem się bulwersuj. tongue.gif http://pl.php.net/manual/en/language.variables.basics.php

Cytat
Jak mogę zrobić by zapisywały się dane na poczatku

Musisz pobrać całość, dopisać przed zmienną i dopiero potem zapisać. Przy małych danych sprawdzi się to całkiem nieźle, ale na dłuższą metę - lepiej skorzystać z - chociażby - SQLite.
Volume
ja jeszcze od siebie dodam ze jesli masz serwer z PHP5 to zainteresuje sie:
file_put_contents
file_get_contents
Ominiesz w ten sposob flocki uchwyty itd.
A tu masz przyklad jak to wykorzystać na Twoim przykladzie:
  1. <?php
  2. $plik='daneuzyt.txt';
  3. $plik2='licznik.txt';
  4.  
  5. $plik_odczyt=file("daneuzyt.txt");
  6. $liczba=count($plik_odczyt);
  7. $dzialanie=$liczba+1;
  8. file_put_contents ($plik2,'input= '.$dzialanie,LOCK_EX);
  9.  
  10. $zczytany_plik=file_get_contents($plik);
  11. $do_zapisu=date("G:i:s d-m-y").' '.$_SERVER['REMOTE_ADDR']."\n".$zczytany_plik;
  12. file_put_contents ($plik,$do_zapisu,LOCK_EX);
  13. include('licznik.txt');
  14. ?>

Zwróc uwage zwłaszcza na:
  1. $zczytany_plik=file_get_contents($plik);
  2. $do_zapisu=date("G:i:s d-m-y").' '.$_SERVER['REMOTE_ADDR']."\n".$zczytany_plik;
Czyli z czytujesz caly juz zapisany plik po czym dopisujesz do niego na wstepie to co chcesz dodac.
Poza tym również polecam jesli tylko masz mozliwosc zrobić to w MySQLu
renault12
no tak, nie wpadłem na to : PP.
Dzięko

Volume, a pytanie mam jeszcze takie bo nie za bardzo mam jak sprawdzić, chodzi mi o to czy w pliku daneuzyt i licznik.txt bedzie te sortowanie ? Bo własnie chcialbym zeby bylo w obu plikach.

Z góry dzieki
Volume
A o jakie sortowanie Ci chodzi?
Jesli chodzi o tablice - czyli cos co mozna wykorzystać przy funkcji file to jest zestaw funkcji do sortowania (sort).
Jesli chcesz zwrócić tablicę z elementami w porzadku odwrotnym to array_reverse.
renault12
Ok sprawdziłem tamten kod i wszytko działa jak należy.
Tamten kod mi w pełni odpowiada.
Dzięki za wszystko.
TheArt
żeby nie zakładać tematu to tu zapytam, jak po otwarciu pliku wykasować jego zawartość (by zmienna zawsze zapisywała się jako jedyna)
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.