Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]/[mysql] statystyki, problem z wczoraj
Forum PHP.pl > Forum > PHP
Lejto
Mam skrypt statystyk na www opartych o mysql ale mam problem z zliczaniem odwiedzin z wczoraj (mktime()winksmiley.jpg. Wartości pewnie mam złe, zmieniam zmieniam i nic, raz się nie pokaże potem się pokaże ale fałszywe dane...
  1. <?php
  2. $rok = date("Y");
  3. $miech = date("n")+1;
  4. $day = date("d");
  5. $day_d = date("d")-1;
  6. $ostatni = mktime (0,0,0,$miech,0,$rok);
  7. $miesiac =  strftime ("%d", $ostatni);
  8. $month = date("n");
  9. $month2 = mktime(0,0,0,$month,0,$rok);
  10. define ('TIMEOUT', 20);
  11. $online = time()-(60*TIMEOUT);
  12. $wczoraj = time() - mktime(0,0,0,$month,$day_d,$rok);
  13. $m = time()-($month2);
  14. $dzis = time() -  mktime(0,0,0,$miech,$day,$rok);
  15. $online = time()-600;
  16. $ip = $_SERVER['REMOTE_ADDR'];
  17. $czas = time();
  18.  
  19. $zapyt = "INSERT INTO licznik(ip,data,czas,host,przegladarka) VALUES('$ip','$czas','$date','$host','$prze')"; //dodajemy ip + czas
  20. $sql = mysql_query($zapyt);
  21. if(!$sql) { die ('błąd'); }
  22.  
  23.  
  24. $zapyt = "SELECT count(DISTINCT ip)
  25.       FROM licznik WHERE data<$wczoraj"; // tez zmieniałem na > ale nic fałszywe dane podało
  26. $rez = mysql_query($zapyt);
  27. $row = mysql_fetch_array ($rez, MYSQL_ASSOC);
  28. $licznik[3] = $row['count(DISTINCT ip)'];
  29. ?>

i co tu nie tak? wydaje mi się że z tym mktime(); ten dzień chyba jakoś odejmuje
kefirek
Troche przekobinowane ale powinno wyswietlac wynik z wczoraj
  1. <?php
  2. $wczoraj = time() - 60 * 60 * 24;
  3. $data = strftime ('%G-%m-%d' ,$wczoraj);
  4. $wczoraj1 = strtotime($data);
  5. $wczoraj2 = strftime ('%G-%m-%d' ,$wczoraj1);
  6. $wynik = $wczoraj2.' 00:00:00';
  7. $wczoraj2 = strtotime($wynik);
  8.  
  9. $zapyt = "SELECT count(DISTINCT ip)
  10.      FROM licznik WHERE data >= '$wczoraj1' AND data <= '$wczoraj2'";
  11. ?>
Lejto
nie pomogło ;/
wyświetla 0

  1. <?php
  2. $zapyt = "SELECT count(DISTINCT ip)
  3.     FROM licznik WHERE data >= '$wczoraj1' AND data <= '$wczoraj2'";
  4. $rez = mysql_query($zapyt);
  5. $row = mysql_fetch_array ($rez, MYSQL_ASSOC);
  6. $licznik[3] = $row['count(DISTINCT ip)'];
  7. ?>
kefirek
Tak powinno dzialac
  1. <?php
  2. $wczoraj = mysql_result(mysql_query("SELECT COUNT(DISTINCT ip) FROM licznik WHERE DATE(FROM_UNIXTIME(data)) = CURDATE() - INTERVAL 1 DAY"), 0);
  3. echo $wczoraj;
  4. ?>
Lejto
takie skomplikowane zapytania do pobrania danych z wczoraj?
wyświetliło mi liczbę 1236335277 która jest niezgodna z danymi w bazie ;/
kefirek
To zapytanie co podałem musi na 100% działać poprawnie sprawdzałem u siebie i działa na 100%
Po za tym tu nie ma nic skomplikowanego.

masz zapisaną datę w bazie w formacie unixowym wiec używasz funkcji
FROM_UNIXTIME
czyli np FROM_UNIXTIME(1196440219); z daty w formacie unixowym zwróci ci 2007-11-30 10:30:19 czyli w twoim przypadku będzie to
FROM_UNIXTIME(data) do tego użyłem DATE
by wyciągnąć samą datę czyli takie coś DATE(FROM_UNIXTIME(1196440219)); zwróci nam 2007-11-30 potem od aktualnej daty którą zwraca CURDATE() odejmujesz 1 dzień
czyli CURDATE() - INTERVAL 1 DAY zwróci nam 2009-03-07 i sprawdzamy czy daty którą równają sie wczorajszej dacie
WHERE DATE(FROM_UNIXTIME(data)) = CURDATE() - INTERVAL 1 DAY
Wiec to zapytanie musi działać na 100% masz cos u siebie źle.
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.