mboost-dp1
Mysql opbygning til poll
- Forside
- ⟨
- Forum
- ⟨
- Programmering
Hej
Jeg skal lave en poll i php med mysql, men kan ikke helt hitte ud af, hvordan den skal bygges op i mysql.
Poll'en skal minde lidt den der er her på newz, med ny poll hver uge og skal kunne administreres fra selve hjemmesiden af en admin.
Skal man lave en tabel til hver poll, eller skal der være en tabel med rows til hver uge oder was?
Jeg skal lave en poll i php med mysql, men kan ikke helt hitte ud af, hvordan den skal bygges op i mysql.
Poll'en skal minde lidt den der er her på newz, med ny poll hver uge og skal kunne administreres fra selve hjemmesiden af en admin.
Skal man lave en tabel til hver poll, eller skal der være en tabel med rows til hver uge oder was?
Jeg lavede en for et par måneder siden, hvor jeg kun brugte en tabel. Først et id, og så en integer der fortalte hvor mange svarmuligheder der var. Derefter var resten blot 10 felter med text og 10 felter med integers til at tælle op.
Super simpelt og var MEGET nem at lave, og arbejde med efterfølgende...
Jeg siger ikke at det er den bedste måde, men den var sq hurtigt lavet, og virkede perfekt. Tror vist nok jeg er kommet til at slette den, inden jeg uploadede den til siden :-(
Super simpelt og var MEGET nem at lave, og arbejde med efterfølgende...
Jeg siger ikke at det er den bedste måde, men den var sq hurtigt lavet, og virkede perfekt. Tror vist nok jeg er kommet til at slette den, inden jeg uploadede den til siden :-(
Jeg ville nok ikke spørge newz.dk om hvordan de har lavet deres poll, for den kan ikke regne :)
Mandag er?
Ugens værste dag. (883)
Så længe jeg ikke skal op før 12 er den ok. (684)
Hverken bedre eller værre end andre dage. (662)
kanon, jeg skal på arbejde. (308)
Stemmer i alt: 2541
Min hovedregning siger: 2537
Mandag er?
Ugens værste dag. (883)
Så længe jeg ikke skal op før 12 er den ok. (684)
Hverken bedre eller værre end andre dage. (662)
kanon, jeg skal på arbejde. (308)
Stemmer i alt: 2541
Min hovedregning siger: 2537
id, pollnr, spørgsmål.
Er en måde - og så bare print where pollnr == x
Alternativt:
id, spørgsmål.
id, pollname.
id, pollid, questionid.
Hvor den sidste tabel samler de spørgsmål der hænger sammen med en specifik poll.
Det vil selvfølgelig skabe 3 arrays - men så får man også lidt skæg med at jonglere :))
Den sidste, hvis sat ordentligt op vil bruge mindst plads i mysql db'en.
Hvis jeg forstår Wolly ret, vil hans metode gøre at man max kan have 10 spørgsmål (og der vil blive brugt plads som hvis man skrev 10 spørgsmål ved hver poll).
Her er der kun MySQL pladsbegrænsning - men til gengæld sviner man ikke så meget med pladsen hvis man laver en ja/nej poll :)
Er en måde - og så bare print where pollnr == x
Alternativt:
id, spørgsmål.
id, pollname.
id, pollid, questionid.
Hvor den sidste tabel samler de spørgsmål der hænger sammen med en specifik poll.
Det vil selvfølgelig skabe 3 arrays - men så får man også lidt skæg med at jonglere :))
Den sidste, hvis sat ordentligt op vil bruge mindst plads i mysql db'en.
Hvis jeg forstår Wolly ret, vil hans metode gøre at man max kan have 10 spørgsmål (og der vil blive brugt plads som hvis man skrev 10 spørgsmål ved hver poll).
Her er der kun MySQL pladsbegrænsning - men til gengæld sviner man ikke så meget med pladsen hvis man laver en ja/nej poll :)
#5: Fair nok :) Og ja det ser dejligt simpelt ud.
Min største anke er som sagt manglende mulighed for at vælge antal spørgsmål samt den store spildplads i db'en.
Problemet er webhosts som kun giver 3-5MB plads til en mysql db (selvom det self kræver lidt at nå derop - har lavet et CMS hvor alt content lå i mysql som havde en ok del indhold ift. så mange andre steder og samlet kom siden op på omkring 3MB (inkl. gfx, og mysql db - eks. downloads).
Min største anke er som sagt manglende mulighed for at vælge antal spørgsmål samt den store spildplads i db'en.
Problemet er webhosts som kun giver 3-5MB plads til en mysql db (selvom det self kræver lidt at nå derop - har lavet et CMS hvor alt content lå i mysql som havde en ok del indhold ift. så mange andre steder og samlet kom siden op på omkring 3MB (inkl. gfx, og mysql db - eks. downloads).
Når du skriver 'id, pollnr, spørgsmål', hvor skal svarmulighederne så være?
ved ikke om det er for meget at forlange, men det ville hjælpe meget, hvis jeg kunne få det grafisk.. Kan sq bedre overskue det, som det står i phpmyadmin. En slags tabel.
id pollnr question answers
ved ikke om det er for meget at forlange, men det ville hjælpe meget, hvis jeg kunne få det grafisk.. Kan sq bedre overskue det, som det står i phpmyadmin. En slags tabel.
id pollnr question answers
Jeg ville lave 3 tabeller.
tbl_Polls
> fld_Poll_Id
> fld_Poll_Title
tbl_Polls_Options
> fld_Poll_Id
> fld_Option_Id
> fld_Option_Title
tbl_Votes
> fld_Vote_Id
> fld_Poll_Id
> fld_Option_Id
I den sidste tabel ("tbl_Votes") har du så muligheden for at tilføje yderligere felter, der kan gemme IP-adresse eller brugernummer, og på den måde kan du lave check for hvem der allerede har stemt.
De andre tabeller vil jeg mene giver sig selv, ellers spørg endelig.
tbl_Polls
> fld_Poll_Id
> fld_Poll_Title
tbl_Polls_Options
> fld_Poll_Id
> fld_Option_Id
> fld_Option_Title
tbl_Votes
> fld_Vote_Id
> fld_Poll_Id
> fld_Option_Id
I den sidste tabel ("tbl_Votes") har du så muligheden for at tilføje yderligere felter, der kan gemme IP-adresse eller brugernummer, og på den måde kan du lave check for hvem der allerede har stemt.
De andre tabeller vil jeg mene giver sig selv, ellers spørg endelig.
Well jeg havde nok glemt "spørgsmålet" i mit første forslag :-)
Here we go:
"id"
"antal svarmuligheder"
"spørgsmål"
(
"svarmulighed"
"tæller"
) X 10
Husk hvis du bruger denne metode, at du kun kan have 10 svar muligheder, og at den absolut ikke egner sig til en side men flere tusinde besøgende, eller mange votes; 100+
Man kan jo altid tilføje en dato for votens start, hvis man ønsker. Hvor vidt brugerne allerede havde stemt, afgjore jeg med en cookie.
Hvis det er til en større side, ville jeg nok lave noget lignende Acro's løsning.
Here we go:
"id"
"antal svarmuligheder"
"spørgsmål"
(
"svarmulighed"
"tæller"
) X 10
Husk hvis du bruger denne metode, at du kun kan have 10 svar muligheder, og at den absolut ikke egner sig til en side men flere tusinde besøgende, eller mange votes; 100+
Man kan jo altid tilføje en dato for votens start, hvis man ønsker. Hvor vidt brugerne allerede havde stemt, afgjore jeg med en cookie.
Hvis det er til en større side, ville jeg nok lave noget lignende Acro's løsning.
#9 @Wolly:
Jeg ville vælge min uagtet hvad(!), den er nemlig langt mere fleksibel - og er også udemærket til et websted der kun har få besøgende, netop fordi det er lettere at integrere andre funktioner.
Min løsning er også let at udvide hvis man vil tilføje ekstra sikkerhed, for en cookie-baseret afstemning giver på ingen måde sikkerhed for resultatet, og vil man derfor gemme noget yderligere skal din løsning alligevel udvides.
Men det er sikkert detaljer.
Jeg ville vælge min uagtet hvad(!), den er nemlig langt mere fleksibel - og er også udemærket til et websted der kun har få besøgende, netop fordi det er lettere at integrere andre funktioner.
Min løsning er også let at udvide hvis man vil tilføje ekstra sikkerhed, for en cookie-baseret afstemning giver på ingen måde sikkerhed for resultatet, og vil man derfor gemme noget yderligere skal din løsning alligevel udvides.
Men det er sikkert detaljer.
Det er meget muligt, men hvis du skal holde styr på stemmer i en anden tabel - så fylder det mindst ligeså meget, og så har du ikke mulighed for at lave udvidet statistik.
Hvis du sammen med din stemme tilknytter en IP-adresse eller et brugernummer, så kan du trække ud hvor mange drenge der er 19 år, istedet for at trække ud hvor mange drenge der er, samt hvor mange 19 årige.
Du får altså bedre muligheder, og det er nok stadig begrænset om der skulle gå plads til spilde.
Alternativt kan løsningen ændres så man med "tbl_Polls_Options" tilføjer et felt, der hedder "fld_Option_Votes" og holder styr på antallet af stemmer.
Hvis du sammen med din stemme tilknytter en IP-adresse eller et brugernummer, så kan du trække ud hvor mange drenge der er 19 år, istedet for at trække ud hvor mange drenge der er, samt hvor mange 19 årige.
Du får altså bedre muligheder, og det er nok stadig begrænset om der skulle gå plads til spilde.
Alternativt kan løsningen ændres så man med "tbl_Polls_Options" tilføjer et felt, der hedder "fld_Option_Votes" og holder styr på antallet af stemmer.
Gå til top
Opret dig som bruger i dag
Det er gratis, og du binder dig ikke til noget.
Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.