Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z zaprojektowaniem bazy danych[MySQL][rozwiązany]
miccom
post
Post #1





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


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

Ten post edytował miccom 19.02.2008, 14:33:15
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
suchy1
post
Post #2





Grupa: Zarejestrowani
Postów: 246
Pomógł: 8
Dołączył: 2.04.2006
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


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>


Ten post edytował suchy1 11.01.2008, 15:47:23
Go to the top of the page
+Quote Post
miccom
post
Post #3





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
chlebik
post
Post #4





Grupa: Zarejestrowani
Postów: 113
Pomógł: 5
Dołączył: 12.09.2006
Skąd: Pruszków/Warszawa

Ostrzeżenie: (0%)
-----


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

Ten post edytował chlebik 18.01.2008, 21:25:44
Go to the top of the page
+Quote Post
24xls
post
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 12.02.2008

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
miccom
post
Post #6





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Dziękuję za odpowiedzi. Przydały się. Temat nieaktualny.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 13:25