Autor Zpráva
Akacko
Profil *
chtěl bych si na web udělat anketu. mam i představu jak by měla vypadat (možna někdo bude řikat, že timto dělam reklamu, ale nějak ukazat musim). Měla by vypadat podobně jako zde. Ta s těma radio buttonama.

Problem je v tom, že nemůžu přijit na systém ukládání do databaze. Viděl jsem, že někdo ukladal hodnoty takto: hodnota1;hodnota2;hodnota3; atd, ale vůbec nevim jak. Prosim tedy o radu jak na to popř ukazku.
WertriK
Profil
Osobně bych to řešil dvěma tabulkama [ankety_otazky & ankety_odpovedi].

ankety_otazky
- id [int]
- otazka [varchar]
- hlasovalo [text] // [volitelna] sem bych si ukladal verejné IP pro kontrolu

ankety_odpovedi
- id [int]
- id_otazky [int]
- odpoved [varchar]
- odpovedelo [int]
Akacko
Profil *
hmm, dvě tabulky...to jsem ještě nezkoušel, rano je moudřejši večera, udělam to tedy rano. Ale navrhy můžete davat dále :)
ji_ri_k
Profil
Čau,
To co ti tady navrhuje Wertrik není úplně správně navržené. Tabulky by měli být tři - kvůli normalizaci.
první bych pojmenoval např.: ANKETA - a měla by sloupečky:

id_ankety int ( 3 ),
otazka varchar (200).

druhá tabulka by byla na možné odpovědi ke každé anketě - zde by si ke každé anetě přiřadil odpovědi, které by si vybíral a přiřazoval k první tabulce pomocí cizího klíče id_ankety. Název např. ODPOVEDI
měla by tedy tyto sloupečky:

id_odpovedi int ( 5 ),
id_ankety int ( 3 ),
odpoved varchar ( 200 ),
pismeno_odpovedi varchar (1). // není nutné, lze přiřadit třeba skriptem, ale já osobně bych tento sloupec použil

a třetí tabulka, která by sloužila pro ukládání hlasů a ip atd. Název zase např. HLASOVANI a měla by tuto strukturu:

id_hlasu int ( 5 ),
id_ankety int ( 3 ),
odpoved varchar ( 1 ),
ip_adresa varchar (64), //z důvodů ukládání celé IP adresy i proxy serverama
prohlizec varchar(200).

Takto navržená struktura je i správná z hlediska normalizace. A měla by spolehlivě fungovat. Vypisování hlasů navíc obstaráš funkcema databázových systémů, které jsou na to stavěné. Samozřejmě můžeš přidat nebo ubrat některé sloupečky, ale například ip_adresa a prohlížeč + třeba cookies a budeš mít docela solidně zajištěno hlasování z jednoho PC.

S pozdravem Jirka
Akacko
Profil *
to snad bude lepši, do těch dvou tabulek jsem se krapet zamotal :)
Akacko
Profil *
ještě mam takovy dotaz na Jirku: Proč tam mam přiřazovat pismeno odpovědi? Proč třeba ne čislo (čiselných kombinaci je vic, než kombinaci pismenek)
ji_ri_k
Profil
čau, to písmeno odpovědi tam samozřejmě dávat nemusíš. můžeš tam dát třeba číslo, nebo to do tabulky nedávat vůbec, ale zahrnout to do php skriptu. To byl jen můj nápad. Připadá mi že to líp vypadá když máš na výběr "a", "b" atd - ikdyž to ten dotyčný ani nemusí vidět
Toto téma je uzamčeno. Odpověď nelze zaslat.