Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Pobieranie rekordów z danego dnia
Forum PHP.pl > Forum > Przedszkole
Ulysess
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
wiiir
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)
Ulysess
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 ?
lukaskolista
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
wiiir
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
Ulysess
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
ToAr
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
Ulysess
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
ToAr
no to pogrupuj wyniki

  1. SELECT ... FROM ... GROUP BY YEAR(date), MONTH(date), DAY(date)
Ulysess
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.

:/..
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.