Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z zaprojektowaniem bazy danych[MySQL][rozwiązany]
Forum PHP.pl > Forum > Bazy danych
miccom
Witam wszystkich.

Mam problem z zaprojektowaniem bazy danych. W czym tkwi problem?

Otóż chcę dodać do bazy rekordy, które dany użytkownik zaznaczy jako checkbox(choć niekoniecznie) w formularzu. Będzie ich 365 (lub więcej) z podziałem na ROK, MIESIĄC, DZIEŃ.
przykład.
"USER A" zaznacza w formularzu odpowiednie daty (jako checkbox) np. 15 kwietnia 2008, 16 kwietnia 2008 i 20 czerwca 2009. I ja te dane chcę dodać do bazy- aby "USER B" który szuka kogoś przypisanego do "15 Kwietnia 2008" otrzymał odpowiedź "USER A". Zapytania SQL nie potrzebuję, tylko rozplanowanie bazy. NIE wiem jak ją zaplanować, a biorę pod uwagę ze z trzy lata będzie potrzebne- więc to jest ok 1000 rekordów!
Bardzo proszę o pomoc za którą z góry dziękuję.
Pozdrawiam. miccom
suchy1
a nie lepiej zrobic rozwijana liste, uzytkownik pobiera dzien, osobno, miesiac,rok. Nastepnie te 3 dane sa zapisywane do bazy danych
-----
co do samej bazy to moze to byc date(),varchar(20) spokojnie wystarczy, poszukaj na googlach jak pobierac dane z rozwijanych formularzy.

exmaple:
  1. <form action="...">
  2. <select name="nazwa">
  3. <option>Tu wpisz pierwszą możliwość</option>
  4. <option>Tu wpisz drugą możliwość</option>
  5. (...)
  6. </select>
  7. </form>
miccom
Chyba sie nie rozumiemy.
Nie mam problemu z dodawaniem danych do bazy. Jak je dodać wiem. Ale czy wyobrażasz sobie że user z listy rozwijanej dodaje 300 rekordów??
To nie jest 1 rekord. Tylko cały rok do dodania. Myślałem o checkbox, można wtedy zrobić aby kliknąć cały miesiąc jako (zaznacz wszystkie) a potem "odklikać" te co są zajęte. I tak cały rok. Proszę o podpowiedź co do rodzaju i nazw tabel w bazie danych. A jak ktoś skrobnie zapytanie SQL dodające 300 rekordów w jednej chwili- to już będę uradowany jak nigdy. Pozdrawiam. miccom
chlebik
Cytat(miccom @ 11.01.2008, 23:06:33 ) *
Chyba sie nie rozumiemy.
Nie mam problemu z dodawaniem danych do bazy. Jak je dodać wiem. Ale czy wyobrażasz sobie że user z listy rozwijanej dodaje 300 rekordów??
To nie jest 1 rekord. Tylko cały rok do dodania. Myślałem o checkbox, można wtedy zrobić aby kliknąć cały miesiąc jako (zaznacz wszystkie) a potem "odklikać" te co są zajęte. I tak cały rok. Proszę o podpowiedź co do rodzaju i nazw tabel w bazie danych. A jak ktoś skrobnie zapytanie SQL dodające 300 rekordów w jednej chwili- to już będę uradowany jak nigdy. Pozdrawiam. miccom



Tak sobie mysle na szybko - czy nie bylo calkiem madrze zrobic to tak:

1. W HTMLu robisz wlasnie te checkboxy i dodajesz sobie buttona. Kazde nacisniecie buttona dodaje kolejna date (wynikajaca z obecnych ustawien checkboxow) do jakiegos ukrytego w formularzu lancucha.

2. Kolejne daty oddziela sie jakims znakiem np. srednikiem

3. Jak pojedziesz po calym roku to przesylasz ten formularz (submitujac) do PHP w naglowku POST (zmiesci sie spokojnie)

4.W PHP zmienna $_POST (lancuch) zamieniasz na tablice (explode)

5. 2 mozliwosci:
a. zapisujesz w pliku tekstowym (jeden rzad - jedna data) po czym wrzucasz taki plik do bazy danych za 1 podejsciem (pamietam tylko, ze taka mozliwosc jest, nigdy z niej nie korzystalem)

b. przechodzisz w petli przez wszystkie elementy tablicy i zapisujesz sie w bazie (kwestia, czy MySQL wytrzyma 365 insertow na raz)




Pzdr.
Mam nadzieje, ze pomoglem, Chlebik
24xls
Dużego doświadczenia w projektowaniu baz danych nie mam, ale na moje oko masz tutaj klasyczną relację wiele [uzytkowników] do wielu [dni].

Musisz użyć trzeciej tabeli opisującej powiązania. Poszukaj w google: relacje wiele do wielu, junction table, tabela krzyżowa.
miccom
Dziękuję za odpowiedzi. Przydały się. Temat nieaktualny.
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.