![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 28.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
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! |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 695 Pomógł: 65 Dołączył: 27.07.2009 Skąd: Y Ostrzeżenie: (0%) ![]() ![]() |
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
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 28.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
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
![]() Na prawdę nie ma jakiegoś innego rozwiązania? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 695 Pomógł: 65 Dołączył: 27.07.2009 Skąd: Y Ostrzeżenie: (0%) ![]() ![]() |
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
![]() 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 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 28.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 695 Pomógł: 65 Dołączył: 27.07.2009 Skąd: Y Ostrzeżenie: (0%) ![]() ![]() |
to skoro możesz to zmień
![]() następnie uzywasz pętli while i masz wszystkie rekordy pobrane z tego przedziału ![]() 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" ![]() |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 28.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
Ulysess, nie rozumiesz mnie, albo to ja kiepsko opisuje problem
![]() 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 ![]() Ten post edytował mateusz.it 28.04.2011, 20:55:48 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 695 Pomógł: 65 Dołączył: 27.07.2009 Skąd: Y Ostrzeżenie: (0%) ![]() ![]() |
hmm chyba rozumiem
![]() 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
możliwe ze cos pomieszałem i ze jest bardziej optymalny sposób ale to na początek powinno zadziałać ![]() |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 28.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
Dokładnie, perfect! Jesteś wielki
![]() |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 1 Dołączył: 6.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Można jedną datę zapamiętać pod zmienną i używać w ten sposób.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 17:59 |