Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Wizyty na stronie
Forum PHP.pl > Forum > Przedszkole
mrk9109
Witam potrzebuje porady jak to zrobić statystyki odwiedzin otóż napisałem coś takiego :

  1. $ip = $_SERVER['REMOTE_ADDR'];
  2.  
  3. $zapytanie="SELECT ip FROM wizyty WHERE ip='".$ip."' ";
  4. $wynik = mysqli_query($polaczenie,$zapytanie);
  5. $sprawdz_ip = mysqli_num_rows($wynik);
  6.  
  7. if ($sprawdz_ip == 0)
  8. {
  9. $zapytanie="UPDATE wizyty SET ip='".$ip."', dzis= dzis+1 ";
  10. $start = mysqli_query($polaczenie,$zapytanie);
  11. }


i śmiga ale mam 2 pytania otóż mam kolumnę dziś i wczoraj jak zrobić aby wyniki z dziś dodawał do wczoraj po upływie 24h i czyścił bazę z ip ? narazie zrobiłem UPDATE ale myślalem o INSERT by dodawal każde ip . Chyba że ktoś ma inne prostsze rozwiązanie ?
markuz
Może użyć Google Analytics? smile.gif

Kolumna dziś i wczoraj nie brzmi dobrze. Zacznij od zmiany struktury bazy.
mrk9109
już wykombinowałem przerobiłem to na date smile.gif i planuje odczytywac na dzis wszystkie z dana data a na wczoraj date-1 dobrze kombinuje ?

tylko możesz mi podpowiedzieć jak zrobić czasowe ip ? by dodawał je na 24h tylko
markuz
A dlaczego nie Google Analytics? Albo jakiś inny system do liczenia statystyk?

Sprawdzasz czy dane IP istnieje w ostatnich 24h, jak nie to dodajesz jak istnieje to nie dodajesz.
mrk9109
coś pomyliłem z warunkiem bo nie wykonuje UPDATE tylko caly czas INSERT :< a co do odp nie google bo chce zrobic ladnie Odwiedzilo nas dzis ...

  1. <?php
  2.  
  3. $ip = $_SERVER['REMOTE_ADDR'];
  4. $dataW = date("d.m.Y");
  5.  
  6. $zapytanie="SELECT ip FROM wizyty WHERE ip='".$ip."' ";
  7. $wynik = mysqli_query($polaczenie,$zapytanie);
  8. $sprawdz_ip = mysqli_num_rows($wynik);
  9.  
  10. $zapytanie2="SELECT data FROM wizyty WHERE data='".$data."' ";
  11. $wynik2 = mysqli_query($polaczenie,$zapytanie);
  12. $sprawdz_data = mysqli_num_rows($wynik2);
  13.  
  14. if ($dataW == $sprawdz_data && $sprawdz_ip == 0)
  15. {
  16. $zapytanie="UPDATE wizyty SET ip='".$ip."', wizyty= wizyty+1 WHERE data = '".$data."'";
  17. $start = mysqli_query($polaczenie,$zapytanie);
  18. }
  19. else
  20. {
  21. $zapytanie = "INSERT INTO `wizyty` (`data`, `wizyty`, `ip`)
  22. VALUES ('".$dataW."',
  23. '1',
  24. '".$ip."'
  25. );";
  26. $start = mysqli_query($polaczenie,$zapytanie);
  27. }
  28.  
  29.  
  30. ?>
  31.  
markuz
$sprawdz_data to ilość rekordów, $dataW to obecna data - jak to może być kiedykolwiek równe? smile.gif
mrk9109
Wszystko działa ale mam inny problem i potrzebuje porady otóż nadpisuje mi każdy raz IP tzn jeżeli wejde na strone jest moje IP i liczy wizytę jeżeli znów wejdzie ktoś inny zapisuje jego IP i po ponownym moim wejściu znów mnie liczy i wtedy nadpisuje moje ip . Jak to rozwiązać ?
nospor
WHERE data = '".$data."'";
no skoro dla kretyrium dla wpisu bierzesz tylko date to dosc logiczne ze wszystko inne nadpisuje...
mrk9109
Wiem już to poprawiłem zczaiłem się ale mam inny problem co edytowałem i napisałem wyżej z tym IP jakaś sugestia ? jak to zabezpieczyć ?
nospor
Nie wiem o jakim "napisalem wyzej" mowisz. Bo ja nic nowego nie widze
mrk9109
edytowałem post za nim zobaczyłem twoją odp .

"mam inny problem i potrzebuje porady otóż nadpisuje mi każdy raz IP tzn jeżeli wejde na strone jest moje IP i liczy wizytę jeżeli znów wejdzie ktoś inny zapisuje jego IP i po ponownym moim wejściu znów mnie liczy i wtedy nadpisuje moje ip . Jak to rozwiązać ? "
nospor
No to przeciez moj post do tego wlasnie sie odnosil....
mrk9109
To jak to sformułować wziąć pod uwagę datę żeby wiedzieć który jest dzień i co id , ip ? nie mam pojęcia 1 raz bawię się statystykami jadę powolutku z każdym działem jak wiesz tongue.gif
nospor
1) Ciezko dodac AND IP do tego warunku?
2) Zmien kod na INSERT...ON DUPLICATE KEY i zaloz klucz na IP i date. Zaoszczedzisz sobie pieprzenia w dwa tysiace zapytan przed wlozeniem rekordu do bazy.
mrk9109
kurde tak ?

  1. zapytanie = mysqli_query($polaczenie,"UPDATE wizyty SET ip='".$ip."', wizyty= wizyty+1 WHERE data = '".$dataW."' AND ip ='".$ip."'");


to wtedy nie dodaje new
nospor
A co ma dodawac nowe jak to jest zapytanie UPDATE....
mrk9109
nie dziala i nie rozumie tego ON DUPLICATE KEY 1x mam z tym doczynienia

  1. $zapytanie = mysqli_query($polaczenie,"INSERT INTO `wizyty` (`ip`, `wizyty`) VALUES ( '".$ip."', wizyty+1 ) WHERE data = '".$dataW."' AND ip ='".$ip."'");
nospor
Polecenie INSERT nie posiada warunku.

Zeby cos zrozumiec trzeba moze by wpierw zajrzec do manuala do danej funkcji? Po kodzie co wstawiles teraz widze ze nie zajrzales tylko strzelasz. W manuala masz pelno przykladow.
mrk9109
juz wklejam caly kod jak wyglada

  1. <?php
  2.  
  3. $ip = $_SERVER['REMOTE_ADDR'];
  4. $dataW = date("d.m.Y");
  5. $sprawdz_data = 0;
  6.  
  7. $zapytanie="SELECT ip FROM wizyty WHERE ip='".$ip."' ";
  8. $wynik = mysqli_query($polaczenie,$zapytanie);
  9. $sprawdz_ip = mysqli_num_rows($wynik);
  10.  
  11. $zapytanie2 = mysqli_query($polaczenie,"SELECT `data` FROM `wizyty` ORDER BY `data` DESC LIMIT 0,1");
  12. while($dbW = $zapytanie2 -> fetch_assoc() ) {
  13. $sprawdz_data=$dbW['data'];
  14. }
  15. if ($dataW == $sprawdz_data && $sprawdz_ip == 0)
  16. {
  17. $zapytanie = mysqli_query($polaczenie,"INSERT INTO `wizyty` (`ip`, `wizyty`) VALUES ( '".$ip."', wizyty+1 ) WHERE data = '".$dataW."' AND ip ='".$ip."'");
  18. }
  19. elseif ($dataW > $sprawdz_data )
  20. {
  21. $zapytanie = "INSERT INTO `wizyty` (`data`, `wizyty`, `ip`)
  22. VALUES ('".$dataW."',
  23. '1',
  24. '".$ip."'
  25. );";
  26. $start = mysqli_query($polaczenie,$zapytanie);
  27. }
  28.  
  29. ?>
  30.  
nospor
Nie prosilem o caly kod... Napisalem co masz zle i napisalem bys zajrzal do manuala. Zamiast tego wklejasz mi caly kod. Jak to ma sie do tego ze nadal nie poprawiles tego o co prosilem i nadal nie zajrzales do manuaal jak prosilem?
mrk9109
nie wiem czy dobrze szukam w manualu ... ale kombinuje nad czyms takim


przeczytalem duzo w manualu zrobilem efekt niżej ale nie wykonuje zapytania why ?

http://wklej.org/id/3370706/

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SET ip='127.0.0.1', wizyty= wizyty+1 WHERE data = '19.02.2018 AND ip='127.0.0.1'' at line 3
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.