02. januar 2006 - 15:42Der er
8 kommentarer og 2 løsninger
Afstemning, hvorfor har jeg lavet så meget kode ?
Jeg har lavet en afstemning, og den virker fint nok og det hele, men jeg synes bare der er så frygteligt meget kode, så jeg tænke at det da måtte kunne lade sig gøre at lave det med mindre kode? Men kan ikke finde ud af hvordan...
Altså jeg havde nok valgt at lave en løkke i stedet for at lave 5 manuelle radios i alt fald... Det samme gælder i toppen...
Og så lige i øvrigt; Når du tæller poster fra db, så overvej at bruge count(*) i stedet, og så hent antallet med mysql_result()... Det giver meget hurtigere performance. ;-)
svar1 - det første man kan svare svar2 - det andet man kan svare svar3 - det tredje man kan svare svar4 - det fjerde man kan svare svar5 - det femte man kan svare
svaret1 - antal stemmer på "svar1" svaret2 - antal stemmer på "svar2" svaret3 - antal stemmer på "svar3" svaret4 - antal stemmer på "svar4" svaret5 - antal stemmer på "svar5"
Ok. En lidt anderledes måde at gøre det på, tænker jeg. Men ok, virke - det skal det jo! :-D
Jeg har lige ommøbleret din top-kode lidt for dig, samt indsat variablen "voteid", som du så bliver nødt til at sende i et hidden field i din form. På den måde undgår du problemer, med at have flere forskellige afstemninger i databasen.
$sql = mysql_query("select * from afstemning where svar1 = '$svar' or svar2 = '$svar' or svar3 = '$svar' or svar4 = '$svar' or svar5 = '$svar'"); if(mysql_num_rows($sql) < 1) { echo "Du har ikke valgt noget svar!"; } else $row = mysql_fetch_assoc($sql);
Men du ville nu gøre det meget nemmere for dig selv, hvis du, i dine radio-buttons, bare sendte "svar1" eller "svar2", etc.... Så var du fri for at skulle hen og lede efter det rigtige svar i databasen efterfølgende... Og selvom en radio-buttons value er "svar1" kan der jo godt stå noget andet ved siden af...
if(!empty($svar)){ $sql = mysql_query("select * from afstemninger where id = '$voteid'"); $row = mysql_fetch_assoc($sql); $ant = $row["svaret".$svar]+1; mysql_query("update afstemning set svaret".$svar." = '$ant' where id = '$voteid'"); }
$sql = mysql_query("select * from afstemning where id = 1"); $row = mysql_fetch_assoc($sql); echo "<form action=\"index.php\" method=\"POST\">"; echo "<b>$show[sporg]</b>\n<br>";
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.