Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Pobieranie rekordów z danego dnia
Ulysess
post 5.04.2011, 17:27:10
Post #1





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

Ostrzeżenie: (0%)
-----


dzień dobry , zbieram dane z pewnej strony i chciałbym podzielić to aby wchodząc w profil użytkownika Kowalski był spis w których dniach brał udział w czymś tam.

logi wyglądają w nastepujacej postaci:
imie / data w postaci "2011-03-26 13:50:02"

oczywiście mam wielu użytkowników i wiele logów z danego dnia dla każdego z nich (ale nie dla każdego) stąd moje pytanie , jak zrobić aby wypisało wszystkie dni z których sa logi dla danego użytkownika questionmark.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
wiiir
post 5.04.2011, 17:34:40
Post #2





Grupa: Zarejestrowani
Postów: 260
Pomógł: 34
Dołączył: 22.02.2010

Ostrzeżenie: (0%)
-----


znajdzie sie kilka sposobow zalezy jak wyglada twoja baza z tymi logami ( bo trzymasz to rozumiem na tabelach) jakie dane zapisujesz itd

1. count i having
2. exists
3. zwykly join (w przypadku 2 tabel)
Go to the top of the page
+Quote Post
Ulysess
post 5.04.2011, 20:37:16
Post #3





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

Ostrzeżenie: (0%)
-----


ale jak miał by wyglądać warunek WHERE który pobrał by wszystkie rekordy (data w takiej postaci jak w 1 poscie napisałem) np z dnia 2011-03-26 questionmark.gif jedyne co mi przychodzi to wstawienie daty w LIKE ale to nie w taki sposób prawidłowo się robi prawda ?
Go to the top of the page
+Quote Post
lukaskolista
post 5.04.2011, 20:42:48
Post #4





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

Ostrzeżenie: (0%)
-----


Cytat
ale to nie w taki sposób prawidłowo się robi prawda ?
Prawda smile.gif

  1. SELECT ... FROM ... WHERE date <= '2011-04-05'
Zakladam ze pole w ktorym trzymasz date jest typu datetime
Go to the top of the page
+Quote Post
wiiir
post 6.04.2011, 07:00:05
Post #5





Grupa: Zarejestrowani
Postów: 260
Pomógł: 34
Dołączył: 22.02.2010

Ostrzeżenie: (0%)
-----


jezeli masz wszystko w 1 tabeli to zorb sobie proste zaptanie

  1. SELECT * FROM twoja_tabela WHERE DATA = str_to_date('1900-01-01') AND iduzytkownika = 1
Go to the top of the page
+Quote Post
Ulysess
post 7.04.2011, 21:39:03
Post #6





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

Ostrzeżenie: (0%)
-----


hmm mam jeszcze problem z dwoma rzeczami

1 przechodzę w profil użytkownika i tutaj pojawia się slect w którym wybieram miesiąc aby przejrzeć dokładne logi tego gracz -> jak pobrać dla danego usera z jakich miesięcy jego logi pochodzą questionmark.gif

2) w jaki sposób zrobić tak aby pobrać dni z których są logi dla danego gracza questionmark.gif
Go to the top of the page
+Quote Post
ToAr
post 7.04.2011, 21:47:50
Post #7





Grupa: Zarejestrowani
Postów: 49
Pomógł: 18
Dołączył: 7.04.2011
Skąd: Toruń

Ostrzeżenie: (0%)
-----


jeżeli chcesz pobrać logi z przedziału czasowego w zapytaniu powinieneś użyć BETWEEN

  1. SELECT ... FROM ... WHERE date BETWEEN '2011-04-01' AND '2011-04-30'


tak pobraliśmy logi z kwietnia
Go to the top of the page
+Quote Post
Ulysess
post 8.04.2011, 08:19:28
Post #8





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

Ostrzeżenie: (0%)
-----


hmm ale Twoje rozwiązanie spowoduje pobranie wszystkich logów z kwietnia.. a mi chodzi o to żeby wpierw pobrać tylko 1 log z każdego dnia miesiąca dla danego konta , następnie wyświetlić wszystkie te dni i wejść w szczegołowe logi tego usera z tego dnia co wybraliśny.
Mógł bym zrobić na zasadzie że sprawdzam ile aktualny miesiąc ma dni , następnie wykonuje pętle for tyle razy ile ma ten miesiąc dni a w zapytaniu sprawdzam czy akurat dla tego dnia i tego usera jest log jesli tak to wyświetla date z linkiem do szczegołowych logów jeśli nie ma to po prostu samą date albo nawet nic ALE to rozwiązanie działa tylko na dany miesiąc a ja chce wpierw w formularzy z typem SELECT wyświetlić miesiące w których są logi tego usera
Go to the top of the page
+Quote Post
ToAr
post 8.04.2011, 08:55:48
Post #9





Grupa: Zarejestrowani
Postów: 49
Pomógł: 18
Dołączył: 7.04.2011
Skąd: Toruń

Ostrzeżenie: (0%)
-----


no to pogrupuj wyniki

  1. SELECT ... FROM ... GROUP BY YEAR(date), MONTH(date), DAY(date)


Ten post edytował ToAr 8.04.2011, 09:01:00
Go to the top of the page
+Quote Post
Ulysess
post 10.04.2011, 09:18:36
Post #10





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

Ostrzeżenie: (0%)
-----


posiadam 2 tabele.
1 lista userów
2 logi userów

chciałbym wyświetlić wszystkich userów a obok dane z tabli logów ale ostatnie dla tego usera.
zapytanie wygląda następująco
  1.  
  2. $wykonano_zapytanie['dane_postaci'] = mysql_query("SELECT a.`level`,a.`experience`,b.`status`,b.`name` FROM `rank_exp` a JOIN `exp_list_of_players` b ON a.`id_char` = b.`id` WHERE b.`server` = '".mysql_real_escape_string($world)."' ORDER BY a.`level` DESC LIMIT ".($strona).','.$wns) or die(mysql_error());


problem w tym że wyświetla tego samego usera tyle razy ile logów jest dla tego uzytkownika.

:/..

Ten post edytował Ulysess 10.04.2011, 10:13:44
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 04:43