![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 0 Dołączył: 13.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
witam,
to znow ja z moimi skomplikowanymi zapytaniami ![]() mam tabele: | ip | godz | data | a zalozenia sa takie ze moze byc wiele wpisow z jednego ip (to takie jakby statystyki)... a teraz potrzebuje rozroznic wizyty od zwyklych klikniec, czyli zakladam ze kazde ip ma 60 minut na to zeby stracic aktywnosc (jak nastapi klikniecie z tego samego ip po 60 minutach - zalicza kolejna wizyte). no i teraz - jak zapytac baze danych o wszystkie wpisy z danego ip ktore sa "nie starsze niz godzine temu"? problemem jest to ze zmienia nam sie punkt odniesienia, bo to musi byc godzina od ostatniego klikniecia... czyli od ostatniego wpisu... pamietajac o tym ze moze nastapic kolejne klikniecie z tego ip (wiec nie mozna sie ograniczyc do daty...) poza tym: czy zapisywanie daty i czasu w oddzielnych kolumnach nie powoduje jakiegos problemu? czy on wie ze np. jak cofam go o 60 min o godzinie 0:10 to ze zmieni mu sie data? jak sobie poradzic ze zliczaniem takich wizyt - ktore beda zahaczac o rozne daty? pozdrawiam serdecznie, rml. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 195 Pomógł: 0 Dołączył: 13.04.2004 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
ja bym zrobił tak - zapisz datę/godzinę w formacie UNIX time stamp [Liczba sekund jakie upłynęła od 1 Stycznia 1970r] (jest to funkcja time() w php, nie pamiętam jaka w mysqlu
![]()
Wchodzisz na stronę pobierasz i masz pobrany rekord, w którym data jest starsza o godzinę od aktualnej dla danego IP. Ten post edytował L_Devil 18.06.2005, 09:02:21 -------------------- Językiem którym najlepiej operują wszyscy programiści są przekleństwa.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 0 Dołączył: 13.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
ha!
![]() ![]() chodzi mi o to zeby nie uzywac php - ale zrobic to zapytaniem mysql, a poza tym Ty wyszukujesz rekordy starsze o godzine od aktualnej godziny, a nie od ostatniego wpisu z danego ip... dlatego napisalem ze to skomplikowane zapytanie ![]() czekam na uwagi ![]() pzdr, rml. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 169 Pomógł: 1 Dołączył: 16.04.2004 Skąd: z domu Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem oco ci chodzi? L_Devil Podał ci dobre rozwiązanie problemu a ty nażekasz. Może chodzi o to, że to nie ma być skrypt tylko samo zapytanko do mysql ale to można napisać a nie nażekasz...
Problem jest prosty tylko jakbyś tłumaczył lepiej to na pewno uzyskałbyś odrazu odpowiedź a ty snujesz opowiadania nie potrzebne zamiast przedstawić rzeczowo problem! No więc zapytanie SQL powinno wyglądać tak:
Żeby nie było wątpliwości przetłumaczę na "ludzki" ![]()
Pozdrawiam w wierze że skapniesz się że 'adresip' musisz zamienić na cyferki oddzielone kropkami które tworzą adres ip np 127.0.0.1 dzięki czemu nie wytkniesz mi jakiegoś straszliwego błędu:D Pozdrowienia ![]() Ten post edytował gilbo 18.06.2005, 12:50:04 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 127 Pomógł: 0 Dołączył: 13.05.2003 Ostrzeżenie: (0%) ![]() ![]() |
![]() Nie można dublować tematów. Na MySQL'u i tutaj wpisujesz to samo... Masz dwa takie same rozwiązania i jeszcze go nie rozumiesz? TOTAL PS.http://forum.php.pl/index.php?act=ST&f=51&...ndpost&p=181454 -------------------- Jeśli wiesz jak coś zrobić zrób to, jeśli nie wiesz... ryzykuj :o)
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
@L_Devil po co w php zwracac timestampa jak to samo osagniesz w SQLu.
W tym 2 poscie podalem Ci jak bym to rozwiazal 2 proste zapytania i 1 warunek. -------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 0 Dołączył: 13.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
@gilbo - Ty chyba nie czytales mojego posta, prawda? przeciez napisalem "chodzi mi o to zeby nie uzywac php - ale zrobic to zapytaniem mysql", tak? tak napisalem? to prosze czytaj. dziekuje. poza tym jestes malo zabawny.
@reszta - wydaje mi sie, ze nadal sie nie rozumiemy - wpisow z danego ip jest wiele i trzeba znalezc nie "wszystkie ktore byly godzine temu i krocej", ale "grupy wpisow ktore sa od siebie oddzielone minimum odstepem 60 minut", haraszo? w ten sposob chce rozdzielac wizyty od odslon... @songoQ - Twoje drugie rozwiazanie nie jest dobre, gdyz w tej samej tabeli trzymam rowniez informacje o zadanych url'ach zeby wiedziec ktore strony sa odwiedzane a ktore nie itd... wiec musze miec na kazda odslone jeden rekord... pzdr, rml. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Cytat @songoQ - Twoje drugie rozwiazanie nie jest dobre, gdyz w tej samej tabeli trzymam rowniez informacje o zadanych url'ach zeby wiedziec ktore strony sa odwiedzane a ktore nie itd... wiec musze miec na kazda odslone jeden rekord... Nie podalem tutaj gotowego rozwiazania tylko pomysl jak to rozwiazac. Co za problem zamiast update wykorzystywac INSERT, do SELECTA dodac wiecej warunkow, lub troszeczke zmodyfikowac. -------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 0 Dołączył: 13.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
@songoQ -
![]() ![]() ![]() teraz chodzi mi o to zapytanie do bazy danych, aby wyjac te zapisane dane, bez wprowadzania specjalnych pol w stylu "id" itd... tylko po godzinie rozpoznawac ![]() |
|
|
![]()
Post
#10
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Cytat teraz chodzi mi o to zapytanie do bazy danych, aby wyjac te zapisane dane, bez wprowadzania specjalnych pol w stylu "id" itd... tylko po godzinie rozpoznawac Widze ze nie rozumiesz idee uzywania identyfikatorow. Napisz dokladnie jaki select chcesz uzyskac to CI napisze. -------------------- |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 0 Dołączył: 13.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
rozumiem! nawet ja w tej chwili stosuje! ale chcialem zmniejszyc ilosc kolumn w tabeli dzieki wykorzystaniu zapytania mysql opartego o czas.
teraz moja tabela w przyblizeniu wyglada tak: |typ|ip|data|godz|id| pole typ przybiera 4 wartosci VIS, HIT, VRB i HRB. VIS - wizyta - czyli wyswietlenie strony przez IP z ktorego nie bylo wyswietlenia przez minumum godzine wstecz... HIT - wyswietlenie strony kiedy znalazl w bazie jakikolwiek wpis z godziny wstecz VRB i HRB to analogiczne rzeczy jak wyzej, tylko ze wtedy gdy rozpoznal poprzez user_agent ze to robot a nie user... ip, data, godz - jasne. id - jest to generowany unikanly numer - generowany jest w trakcie wpisu VIS, a potem kazdy HIT bierze go z VIS... (w tej chwili juz wiem ze to zle, dlatego, ze czasem wizyty botow trwaja dluzej niz godzine, i wtedy nie wpisuje nic, bo VRB byl dawniej niz 60 minut temu - czyli musi brac z HRB, ale to nie wazne ![]() i teraz chodzi mi o to, zeby wyszukac wszystkie wpisy w bazie z jednej wizyty sugerujac sie tylko czasem a nie typem i id... czyli znalezc wizyty ktore byly z jednego ip i wszystkie wpisy z tego ip byly od siebie oddalone o nie wiecej niz 60 minut... czyli zeby znalazl grupy rekordow wpisane do bazy z roznica wieksza niz 60 minut... to trudno opisac ![]() ![]() wiec jak juz pisze tak dlugiego posta - to napisze jeszcze dluzszego aby wyjasnic wszystkie watpliwosci. mamy rekordy: 127.0.0.1 | data dzis | 10:00:00 127.0.0.1 | data dzis | 10:01:00 127.0.0.1 | data dzis | 10:10:00 127.0.0.1 | data dzis | 10:50:00 127.0.0.1 | data dzis | 12:00:00 127.0.0.1 | data dzis | 12:10:00 127.0.0.1 | data dzis | 10:30:00 127.0.0.1 | data dzis | 19:00:00 chcialbym zeby zapytanie wyjelo z takiej bazy 3 "wizyty" pierwsza zaczynajaca sie o 10:00:00, druga o 12:00:00 i trzecia o 19:00:00... teraz jasniej sie zrobilo? ![]() ![]() no i poza tym jeszcze dochodzi problem zmiany daty - jak go rozwiazac? jesli jedna wizyta trwa od 23:30:00 do 0:20:00 to zmieniaja sie daty i skrypt mi sie gubi (nawet teraz przy ID)... pozdrawiam, rml. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 02:45 |