![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 24.04.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie wszystkich,
na wstępie nadmienię iż dopiero raczkuję w php i mysql. Tworząc jakiś tam wydumany przez siebie projekt napotkałem na następujący problem: Posiadam kod, który wypełnia mi tablicę danymi. Tablica składa się z 3 pól: id, dane oraz sprawdz. Po wypełnieniu wygląda tak: 1. 2013_04_24/17:02:11 ok 2. a 3. b 4. c 5. 2013_04_24/17:02:45 ok 6. a 7. b 8. c 9. d 10. 2013_04_24/17:02:46 ok 11. a 12. b 13. c 14. d 15. e Kulumna 1. to id, kolumna druga to dane(a,b,c bądź data) kolumna trzecia to "ok", które występuje tylko przy dacie. Pytanie brzmi, w jaki sposób mogę wyświetlić dane od rekordu zaczynającego się określoną datą - np. 2013_04_24/17:02:45 - czyli rekordy od 5.- 9. nie znając poszczególnych id? Dokładniej rzecz ujmując, chciałbym kliknąc na stronce jedną z dat która mi się wyświetli i uzyskać wszytskie dane które są zamieszczone pomiędzy nią, a tą następną. Z góry bardzo dziękuję za zainteresowanie i zaangażowanie. Pozdrawiam Ten post edytował Ekoday 24.04.2013, 16:53:03 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 282 Pomógł: 89 Dołączył: 12.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
To jest do zrobienia, ale prawdę powiedziawszy nie powinieneś dostać odpowiedzi, bo widząc taką strukturę danych to nóż się otwiera w kieszeni.
Raczkujesz, więc nie utrwalaj sobie złych nawyków. Jeśli przykładowo skasujesz jakąś datę to co z pozostałymi danymi? Mają przejść na poprzednią? Czy znowu masz szukać następnej i kasować również wszystko aż do niej? Prawidłowo powinno wyglądać to tak, że masz dwie tabele, w jednej trzymasz dane z datami i tymi 'ok' a w drugiej odpowiadające im 'a','b' i tak dalej. Przykładowo tabela `pytania` (to tylko domysł co te dane mają modelować) mogłaby mieć kolumny id, czas, sprawdz, natomiast tabela `odpowiedzi` id, id_pytania, dane. Czyli klasyczna relacja jeden do wielu, gdzie id_pytania w tabeli odpowiedzi jest zewnętrznym kluczem do id w tabeli pytania. Wówczas wystarczyłoby:
Swoją drogą te daty (i czasy) powinny być typu DATETIME, mysql udostępnia tłum funkcji i operatorów do działań na datach nie po to żeby zapełnić czymś manual i nie świecił pustkami. Zwykłe odjęcie jakiegoś odstępu czasu by odpowiedzieć na proste pytanie które rekordy powstały w ciągu ostatniego miesiąca to w przypadku pola DATETIME: czas - INTERVAL 1 MONTH, a na stringu wymaga to konwersji i wielu obliczeń, pamiętania o jakichś bzdurach typu rok przestępny itp, ewentualnie korzystania z funkcji zewnętrznego języka. I po co, skoro mysql robi to bezbłędnie i szybko? Oczywiście jeśli w tym samym polu trzymasz jakieś 'a' to naturalnie ustawienie DATETIME nie jest możliwe, ale po rozdzieleniu można przynajmniej zrobić to prawidłowo. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 31.07.2025 - 07:56 |