Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Návrh tabulek na dotazníky (PHP+MySQL)

Nějak v tom tápu, tak jdu na rozumy. Občas dělám na jednom webu dotazník, kde je třeba 30 otázek. Odpovědi se pak posílají na e-mail. já bych si to chtěl nějak ukládat do databáze MySQL a u dotaznáíků, na nšž už se neodpovídá to "tahat", jak to dopadlo.
Nemohu však vymyslet jakou by měly mít tabulky strukturu, vždy se u něčeho zarazím. Napadá mne nějak takto:

první (d_dotazniky)
id|nazev_dotazniku

druhá (d_otazky)
id|nazev_dotazniku|otazka|

třetí (d_odpovedi)
id (otazky)|odpoved

To je také nějaké komplikované...
Jak byste to udělali vy?

Předmět Autor Datum
dotazniky - id - nazev otazky - id - dotaznik (odkaz na id v tabulce dotazniky) - otazka odpovedi…
foltyn 12.05.2007 16:08
foltyn
- dotaznik (odkaz na id v tabulce dotazniky) Ha to je možná ten šroubek, co mi chybí a furt to nedrž…
Kráťa 12.05.2007 16:18
Kráťa
Ja bych to udělal takto: dotaznik - id (id dotazniku nesmi byt primarni klic!!!) - id_otazky (odkaz…
MaSo 12.05.2007 16:29
MaSo
Z tohoto systému by asi časem i šlo, sestavovat dotazaníky, jelikož ty otázky se často opakují (třeb…
Kráťa 12.05.2007 17:20
Kráťa
Neviem si predstaviť, ako by to fungovalo. Keby mal jeden dotazník 1 otázku s 2 možnými odpoveďami,…
los 12.05.2007 19:56
los
Do databázy potrebuješ uložiť údaje o ankete (=dotazník), pričom každá anketa pozostáva z niekoľkých…
los 12.05.2007 20:22
los
Jooo počet hlasů mi tam celou dobu chybí. Odpovědi sdružovat nepotřebuji. U některých otázek se sice…
Kráťa 12.05.2007 21:28
Kráťa
Tak potom si poriadne pozri foltynov návrh a do poslednej tabuľky pridaj ešte stĺpec pre počet hlaso…
los 12.05.2007 21:37
los
Tak další pokus dotazniky id | nazev_dotazniku otazky id | id_dotazniku | otazka odpovedi id | id_… poslední
Kráťa 12.05.2007 21:56
Kráťa

Ja bych to udělal takto:

dotaznik
- id (id dotazniku nesmi byt primarni klic!!!)
- id_otazky (odkaz na id v tabulce otazky)
- id_odpovedi (odkaz na id v tabulce odpovedi)
- nazev

otazky
- id_otazky
- zneni

odpovedi
- id_odpovedi
- odpoved

Takhle z tabulky dotaznik přesně vyčteš jak se ve kterém dotazníku odpovídalo na kterou otázku...

Z tohoto systému by asi časem i šlo, sestavovat dotazaníky, jelikož ty otázky se často opakují (třeba na věk).čehož bych chtěl třeba tak po roce, až se tabulky zaplní docílit. Nejdříve bych je tam však asi ukládal "růčo".
Pro představu to sem raději napíšu.
Ve formuláři. s názvem "doprava v MHD":
...
3) věk (inputy radio s name=vek)
do 20 let
21 - 30 let
31 - 40 let
41 - 50 let
51 - 60 let
více, než 60 let

tabulky:
d_dotaznik
id_dotazniku - 1
id_otazky - 6 (v dotazníku je sice třetí, ale v tabulce šestá)
id_odpovedi - 2 (31-40)
nazev_dotazniku - doprava v MHD

d_otazky
id_otazky - 6
zneni_otazky - věk

d_odpovedi
id_odpovedi - 2
zneni_odpovedi - 31-40

Si asi budu muset vyrobit cvičně kousek, jelikož až "jízdou" poznám, že mi něco skřípe. :-/

Neviem si predstaviť, ako by to fungovalo. Keby mal jeden dotazník 1 otázku s 2 možnými odpoveďami, tak by sa názov dotazníka musel vyplniť dvakrát? Čo potom pri dotazníku s desiatimi otázkami, kde na každú otázku by boli 3 možné odpovede... Možno som nepochopil, čo vlastne reprezentuje odpoveď - či je to skutočne nejaká konkrétna odpoveď jedného respondenta alebo to je jedna z možných odpovedí na nejakú otázku, ale v ani jednom prípade si to neviem predstaviť.

Do databázy potrebuješ uložiť údaje o ankete (=dotazník), pričom každá anketa pozostáva z niekoľkých otázok. Každá otázka má niekoľko možností, ako odpovedať. To sú zatiaľ tri tabuľky - anketa, otázka, možnosť. A nakoniec si potrebuješ zapamätať, ako respondenti vlastne hlasovali.

Ak nepotrebuješ vedieť, ako vyplnil anketu jeden človek (čiže nepotrebuješ z ankety zistiť, že napr. človek, ktorý si pri prvej otázke vybral prvú možnosť, si vybral pri druhej otázke tretiu možnosť), tak by som použil návrh od foltyna (plus v tabuľke možných odpovedí by pribudol stĺpec pre počet hlasov za danú možnosť). Inak budeš potrebovať ďalšiu tabuľku, ktorá bude združovať konkrétne odpovede každého respondenta.

Predpokladal som, že pre každú otázku existujú možnosti, z ktorých si respondent vyberá, t.j. nemôže v dotazníku odpovedať nejakým textom. Ak by mohol, tak by to bolo o málo zložitejšie.

Takže najprv si musíš zodpovedať na tieto otázky:
- Potrebuješ združovať odpovede respondentov?
- Môžu respondenti odpovedať na niektoré otázky slovne?

Návrh tabuliek bude trochu odlišný, ak budeš chcieť mať možnosť znovupoužiť zadanie jednej otázky vo viacerých anketách. Otázkou je, či by sa táto možnosť pri tvorbe ankiet naozaj využila.

Jooo počet hlasů mi tam celou dobu chybí. Odpovědi sdružovat nepotřebuji. U některých otázek se sice dopisuje, ale to už na jakousi statistiku, kterou bych chtěl zobrazovat nebude mít vliv, nemusí to tam být. Je tam například: Které televize sledujete a u toho základní stanice. Většinou jsou to inputy radio, ale občse i checkboxy. :-( Tam, kde se dopisuje bývá např. radio s volbou jiné a textbox které jiné. V těch statistikách mi stačí ono "jiné".

Takže:
dotaznik
id_dotazniku | nazev_dotazniku

otazky
id_otazky | zneni_otazky

odpovedi
id_otazky | a | b | c | d

v těch a, b, c, d počty hlasů u jednotlivých možností. Ale tím se mi zase vytratily texty odpovědí buuu.

Zpět do poradny Odpovědět na původní otázku Nahoru