Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: formularz w bazie
Forum PHP.pl > Forum > Bazy danych > MySQL
Thuunder
Witam,
Chciałbym zapisywać pytania i odpowiedzi z formularza w bazie. Odpowiedzi mogą być różne np. z pola textarea, inputów, checkboxów.
W jaki sposób trzymać te dane w jednej tabeli, żeby np. nie trzymać pola w bazie, które będzie zbędnie zabierało dużo miejsca w bazie przez co baza będzie się bardzo rozrastać?
jak to zrobić optymalnie?

pozdrawiam
webdice
Stwórz sobie dodatkową kolumnę w której będziesz wpisywał jaki jest typ elementu formularza.
Thuunder
ok, to wiem, ale chodzi mi bardziej o to jak zapisywać w bazie w jednej tabeli większe treści typu jakiś opis, wartości liczbowe, itp.? jaki typ pola ?
chodzi mi o to, żeby się dowiedzieć jak to zrobić poprawnie. Czy może zrobić rozbicie np. na wartość liczbową i wartość tekstową ... ?
chodzi o to,że raz będzie większy tekst(np.jakiś opis) jako rekord a raz mniejszy(np. jakaś wartość liczbowa np. kwota) ...
zebupl
Witam,

Pola w bazie powinny odpowiadać Twoim polom w formularzu. To jakie typu ustawisz dla atrybutów zależy wyłącznie od Ciebie. Jeśli przewidujesz, że odpowiedz będzie długa to dajesz 'text' jeśli to jest pole input to zazwyczaj jest to varchar(250) jak number to number. Większej filozofii tutaj nie widzę.

Pozdrawiam
munky
AxZx
Cytat(zebupl @ 8.10.2008, 11:39:16 ) *
Witam,

Pola w bazie powinny odpowiadać Twoim polom w formularzu. To jakie typu ustawisz dla atrybutów zależy wyłącznie od Ciebie. Jeśli przewidujesz, że odpowiedz będzie długa to dajesz 'text' jeśli to jest pole input to zazwyczaj jest to varchar(250) jak number to number. Większej filozofii tutaj nie widzę.

Pozdrawiam
munky


a czy nie ma czasem wiekszej filofi kiedy to pytania i odpowiedzi beda zapisywane w bazie, a pytania beda np typu select?
chyba trzeba wtedy dodatkowa tabele dla opcji dla select, radio, checbox.
no i pytanie czy osobna tabela na odpowiedzi wieksze niz 255 znakow, osobna dla liczb i osobna na tekst do 255 znakow?

podczas tworzenia pytania i odpowiedzi wybiera sie jaki rodzaj odpowiedzi i jaka glugosc. jezeli select mozliwosc dodawania poszczegolnych opcji do selecta.
z 2 tabel robi sie wtedy 8 smile.gif
zebupl
Witam,

Cytat
a czy nie ma czasem wiekszej filofi kiedy to pytania i odpowiedzi beda zapisywane w bazie, a pytania beda np typu select?
chyba trzeba wtedy dodatkowa tabele dla opcji dla select, radio, checbox.


AxZx nie rozumiem co chcesz mi powiedzieć sad.gif smile.gif

Cytat
no i pytanie czy osobna tabela na odpowiedzi wieksze niz 255 znakow, osobna dla liczb i osobna na tekst do 255 znakow?


Nie wiem dlaczego piszesz osobna tabela ? Nie miałem też na myśli tworzenia n atrybutów do n pytań. Chodziło mi raczej o coś takiego (ans_id, ans_varchar, ans_text, ans_number, answ_boolen)

Cytat
podczas tworzenia pytania i odpowiedzi wybiera sie jaki rodzaj odpowiedzi i jaka glugosc. jezeli select mozliwosc dodawania poszczegolnych opcji do selecta.


nie rozumiem co chcesz mi przekazać sad.gif kurcze może wczesna pora winksmiley.jpg

Cytat
W jaki sposób trzymać te dane w jednej tabeli, żeby np. nie trzymać pola w bazie, które będzie zbędnie zabierało dużo miejsca w bazie przez co baza będzie się bardzo rozrastać?


Thuunder to czy będziesz trzymał wartość number w varce to nie ma znaczenia jeśli chodzi o wielkość. Chodzi tutaj o szybkość wykonywania operacji.

pozdrawiam
munky
Thuunder
Wydaje mi się, że ma znaczenie dlatego, że liczby powinny być trzymane jako typ liczbowy.
Planuję zrobić z grubsza tabele pytania(id_pytania,rodzaj odpowiedzi jako id z tabeli słownikowej, pytanie), rodzaj_odpowiedzi(input, textarea,select itp.), i właśnie zastanawiam się w jakiej tabeli to zrobić,żeby to było optymalne i przy większej ilości danych działało jak należy oraz było zgodne ze sztuką tworzenia baz danych winksmiley.jpg
zebupl
Thuunder zgadze się, że varki nie trzyma się w number i w drugą stronę smile.gif bo i po co.

Co do rozwiązania, ja bym zrobił to tak:

Zakładam, że każde pytanie ma n odpowiedzi. Każda typ ma przyporządkowane n odpowiedzi

Relacje: 1:n (Question:Answers), 1:n (Answer_Types:Answers)

1. Tabela z pytaniami Questions (question_id, question_title, question_descritption, ...)
2. Tabela z odpowiedziami Answers (answer_id, answer_question_id, answer_answer_type_id)
3. Tabela z typami odpowidzi i samymi odpowiedziami Answer_Types (answer_type_id, answer_type_text, answer_type_number)

W tabeli questions przechowujesz pytanie jego opis. W tabeli Answers przechowujesz id pytania i id opowiedzi w postaci klucza do typu. Answer_Types przechowuje konkretne pytanie. Można to przenieść do Answers ale jest zasada, że encja nie powinna mieć więcej niż 16 atrybutów. Zresztą mieszanie psuje elastyczność.

Nie wiem czy o to chodziło winksmiley.jpg

Pozdrawiam
munky
AxZx
dalej będę drążył temat bo chyba zapominasz o tym, że tworząc nowe pytanie mogę dać możliwość odpowiadania tylko w taki sposób, że wybieram odpowiedź z listy rozwijanej lub zaznaczam checbox lub radio.
zebupl
Witam,

AxZx, i... ? Nie za bardzo widzę co chcesz mi przekazać, możesz to rozwinąć swoją myśl ?

Pozdrawiam
munky
AxZx
ze zapomniales napis o tabelach z wartosciami do selectow, radio i checkboxow.
zebupl
AxZx rozumiem ale to żaden problem.

Mam dwie tabele, żeby było dynamicznie to w jednej trzymam pytania (pytania = wartości pytań), coś na wzór słowników (id, number, text) a w drugiej tabeli mogę trzymać typy obiektów HTML w formi-e. Robię relację n:m czyli każdy obiekt HTML może mieć m pytań a każde pytanie może być przydzielone do n obiektów HTML

Pozdrawiam
munky
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.