Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql]Jak zrobić żeby licznik resetował się o 12 w nocy każdego dnia?
Forum PHP.pl > Forum > Przedszkole
bobo168
Mam problem chce zrobić licznik odwiedzin na stronie który bedzię pokazywał ile było dziś łącznie wizyt (jedno ip jest raz zliczane!). Mam praktycznie już wszystko gotowe tylko teraz nie wiem jak zrobić żeby licznik na początku każdego dnia się resetował (czyt. usuwał rekordy z tabel mysql).
Mam taki o to sobie kod:
  1. <?php
  2. //łączenie z MySQL
  3. if (!mysql_connect('localhost', 'root', '')) 
  4. {
  5. exit('Błąd:');
  6. }
  7. //wybieranie bazy
  8. if (!mysql_select_db('ijdb')) 
  9. {
  10. exit('Błąd');
  11. }
  12. //Dodajemy do tabel
  13. //Dane
  14. $ip=$_SERVER['REMOTE_ADDR'];
  15. mysql_query("INSERT IGNORE INTO ip SET ip ='$ip'")
  16. or die('Blad: '+mysql_error());
  17. $czas=date("H,i,s,m,d,Y");
  18. mysql_query("INSERT INTO czas SET czas='$czas'")
  19. or die('Blad: '+mysql_error());
  20.  
  21. echo '<p> Statystyki:</p>';
  22. $result = mysql_query('SELECT COUNT(*) FROM ip');
  23. $row=mysql_fetch_array($result);
  24. $ile=mysql_num_rows($result);
  25. echo "Dzisiaj: ". $ile;
  26. ?>

I teraz moje pytanie brzmi jak zrobić żeby na początku każdego dnia (najlepiej o godzinie 0:00:00 badz 23:59:59) usuwaly sie rekordy tabeli ip (czyt. resetował się licznik)? Z góry THX!
UWAGA: NIE życze sobie aby mój skrypt był używany w własnych celach!
nospor
Szukaj na forum pod haslem CRON

Cytat
UWAGA: NIE życze sobie aby mój skrypt był używany w własnych celach!
Luzik winksmiley.jpg
alex19
Poprostu ustaw na poczatku tego skryptu usuwanie rekordow starszych niz poprzedni dzien.
Czyli jak dzis jest 1 to skasuj wszystkie z 31 i po sprawie. Kasowanie nie bedzie sie coprawda odbywalo o 00.00 ale jak tylko ktos wejdzie na strone.
bobo168
Alex twój pomysł jest ok. Ale gorzej bedzie z wykonaniem bo jak skrypt sprawdzi jaki był wczoraj dzień?
alex19
Bardzo prosto smile.gif
Dzis - 24h musi dac wczoraj tongue.gif
  1. <?php
  2. $wczoraj = timie() - (24*60*60); //teraz - 24h*60m*60s
  3. $wczoraj_dzien = date("d",$wczoraj); //numer dnia
  4. ?>
nospor
Ten pomysl na chwile obecna ma jedną wade:
skrypt bedziel walil zapytanie usuwajace przy kazdym requescie. Nie wazne, że nic nie bedzie mial do usuniecia, tak czy sia bedzie walil zapytanie
alex19
Mozna by cos pokombinowac jeszcze z zapisywaniem gdzies czy dane sie juz skasowamy czy tez nie, ale na to nie mam zadnego pomyslu jak to rozwiazac.
bobo168
Czyli ten pomysł odpada?
alex19
Wg mnie nie odpada smile.gif
Poprostu ma taka mala wade ze za kazdym wywolaniem skryptu bedzie probowal kasowac stare dane, a co za tym idzie bedzie wiele razy(tyle ile bedzie wejsc w ciagu dnia -1) wykonywalo niepotrzebne zapytanie.
bobo168
A czy to ma jakieś konsekfencje?
alex19
Nie ma innych. Bogiem jednak w tych sprawach nie jestem i sobie glowy nie dam za to obciac.
bobo168
OK a czy jest takie zapytanie w mysql które przenosi rekordy tabeli do innej tabeli?
alex19
Hmmm... a po co ci to?

Domyslam sie ze chcesz zrobic licznik ktory nie tylko bedzie pokazywal odwiedziny dzis, ale i wszytkie odwiedziny.
To wszystko mozna zapisywac do jednej tabeli i wybierac tylko te rekordy ktore nas interesuja czyli np z dzisiejszego dnia, z wczoraj, z calego tygodnia, z miesiaca, wszystko itp itd.
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.