Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Pobranie kilku rekordow do jednej daty
Forum PHP.pl > Forum > Przedszkole
mateusz.it
Witam, mam problem z pobraniem kilku rekordów do jednej daty. Zobrazuj strukturę:

Tabela data:
Kod
id     nazwa                    data ( w formacie  timestamp)
1      jakas nazwa           123456789
2      jakas nazwa dwa    324234234


I teraz chciałbym pobrać to w formacie wylistowanych dat. To znaczy na przykład:
28 kwietnia 2011:
jakas nazwa
jakas nazwa dwa
jakas inna nazwa dodana 28 kwietnia

27 kwietnia 2011:
jakas nazwa dodana 27 kwietnia
jakas nazwa jak wyzej


itd.

Jakieś wskazówki? Może w ogóle przerobić strukturę bazy?

Za wszystkie rady z góry dziękuje!
Ulysess
musisz date z postaci np 28-04-2011 przekształcić w Unixowy uzywajac strtotime a jak chcesz z całego dnia to tak jak napisałem wcześniej + 28-04-2011 23:59:59 zamienic na unixowy i w zapytaniu uzyc between z min i max zakresem czasowym
mateusz.it
Data w bazie już jest w formacie unixowego timestampa. Okej, w zapytaniu dać BETWEEN, to w pętli mam jechać wszystkie dni po kolei? A jak na przykład była miesięczna przerwa w dodawaniu rekordów, to i tak będę musiał jechać zapytanie po zapytaniu, dzień po dniu, trochę mało to optymalne headsetsmiley.png

Na prawdę nie ma jakiegoś innego rozwiązania?
Ulysess
hmm nie wiem czy dobrze rozumiem ale masz np 100 dat w postaci unixowej i z tych 100 dat chcesz wydobyć unikalne dni czyli np 25 kwietnia 28 kweitnia itd questionmark.gif
wydaje mi się że w takim wypadku lepiej trzymać date w postaci date - rok miesiac dzien lub datetime to co wcześniej plus godziny minuty sekundy
mateusz.it
Tak, w bazie mam sto rekordów, z datą dodania i chce je uporządkować według dni. Sęk w tym, że dla jednego dnia, może przypaść kilka rekordów i trzeba je wszystkie wyświetlić.

Format daty zawsze mogę zmienić, to nie problem, gorzej z wymyśleniem sensownego, w miarę optymalnego zapytania smile.gif
Ulysess
to skoro możesz to zmień wink.gif jeżeli potrzebne ci szczegoły godzinowe to użyj datetime jeśli wystarcza same dni to użyj date w zapytaniu robisz wtedy WHERE `date` BETWEEN '2011-04-01' AND '2011-04-28'

następnie uzywasz pętli while i masz wszystkie rekordy pobrane z tego przedziału wink.gif
pamiętaj że format jest rok-miesiąc-dziień / a co do aktualnych to ja bym je pobrał z bazy a następnie $data = date('Y-m-d',$aktualna_data_unix_z_bazy);
i dodajesz $date do nowego pola w bazie z typem "date" wink.gif
mateusz.it
Ulysess, nie rozumiesz mnie, albo to ja kiepsko opisuje problem headsetsmiley.png

Potrzebuje mieć te daty w formacie:

28 kwietnia 2011:
-rekord osmy
-rekord siodmy
-rekord szosty

25kwietnia 2011:
-rekord piaty
-rekord czwarty

01 kwietnia 2011:
-rekord trzeci
-rekord drugi
-rekord pierwszy


Poszukuje jakiegoś w miarę optymalnego zapytania SQL, które najpierw pobierze mi datę, później pobierze rekordy, które dodane były tej daty, następnie pobierze kolejną datę, w której jakiś rekord był dodany, następnie właśnie te rekordy, itd, itd. Nie chce też lecieć w pętli dzień po dniu od 2000 roku, mimo tego, że w przeciągu 11 lat dodane były na przykład tylko cztery rekordy.

Nie chcę rozwiązania, które mi przedstawiasz:
01-28 kwietnia 2011:
-rekord ósmy
-rekord siódmy
-szósty
-piąty
-itd...

Mam nadzieje, że już ktoś zrozumiał i będzie potrafił mnie nakierować na poprawne rozwiązanie smile.gif
Ulysess
hmm chyba rozumiem smile.gif

hmm to może zrób zapytanie z DISTINCT(`date`) w taki sposób pobierzesz unikalne dni następnie przypisuj je w pętli do zmiennej np $data[$numer] = $data_z_powyzszego_zapytania;

następnie
  1.  
  2. $suma = count($data)-1;
  3.  
  4. for($a=0;$a<=$suma;++$a)
  5. {
  6. // tutaj robisz zapytanie pobierajace z danego dnia a w where wstawiasz date = '.$data[$a].'
  7. echo $data[$a];
  8. while($dane = mysql_fetch_assoc($powyzsze_zapytanie))
  9. {
  10. // wysweitlasz dane
  11. }
  12.  
  13. }

możliwe ze cos pomieszałem i ze jest bardziej optymalny sposób ale to na początek powinno zadziałać wink.gif
mateusz.it
Dokładnie, perfect! Jesteś wielki thumbsupsmileyanim.gif
bogusborek
Można jedną datę zapamiętać pod zmienną i używać w ten sposób.
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.