28. marts 2005 - 03:20Der er
5 kommentarer og 1 løsning
php afstemning?
Hvordan laver man en simpel afstemning i php? brugerne må kun svare en gang indtil afstemningen ændres til noget nyt, (til det kan man bare oprette et ekstra felt i min bruger tabel vel ?)
og så er der det med udregningerne og det må meget gerne vises i procent med 2 decimaler.
okay. Du kan vel have en tabel med afstemninger (id,title,dato), een med muligheder (id,afstemning<ref til afstemningstabel>,text), og en tabel med stemmer (id,mulighed,<ref>).
Så kan du finde den række i afstemningstabel med senest dato. Ud fra det id kan du finde alle de options denne har i den anden tabel. Og ud fra hvert id i options kan du se hvor mange stemmer denne har fået. Når du så summer alle de tal kan du beregne en procent.
glemte da helt at svare tilbage på denne i sin tid, har brugt bromers model, i en ændret version.
tabeller:
Afstemning - AfstemningID - int(10) - auto increment - Primær (Bruges til at referere rundt mellem tabellerne) - Spoergsmaal - text (som sagt, her skrives spørgsmålet) - SpecielPlacering - tinytext (Bruges til at referere rundt til hvor afstemningen fyskisk ligger. tinytext fordi jeg har skrevet Forside på den som er på forsiden, og så er resten indlægsnumrene i mit forum)
Afstemning_Valg - ValgID - int(10) - auto increment - Primær (Bruges bl.a. til at finde ud af hvilket svar brugeren har valgt, samt til statisktisk tracking) - AfstemningID - int(10) (Bruges til at sortere svarene i de korrekte afstemninger) - Maerkat - Text (fordi det ikke giver mening med et spørgsmål som f.eks. "Hvilket at følgende bands er sejest? 1, 2, 3, 4, 5") - Stemmer (hurtigere måde at hente antal svar fra en afstemning (efter min mening))
Afstemning_Brugere - BrugerID - int(10) (Bruges i mit system til at finde ud af hvad brugeren stemte, og så der er mulighed for måske at gå tilbage og rette sin stemme - AfstemningID - int(10) (Refererer til hvilken afstemning brugeren har valgt) - ValgID - int(10) (Hvilket svar var det nu brugeren valgte?)
og så kommer selve php koden til at ordne det hele.
Virker fint for mig
Skal dog lige siges på forhånd at det var noget jeg skrev for længe siden, det kan sikkert opdateres og gøres meget enklere, men dette virker - - - - - (Afstemning.php) - - - - - <?php
$hSvaret = 'SELECT * FROM `Afstemninger_Brugere` WHERE `AfstemningID` = "'.$Afstemning[AfstemningID].'" AND `BrugerID` = "'.$_SESSION[Profil][BrugerID].'"'; $hTotaleSvar = 'SELECT COUNT(*) AS `Antal` FROM `Afstemninger_Brugere` WHERE `AfstemningID` = "'.$Afstemning[AfstemningID].'"';
$hIalt = 'SELECT COUNT(*) AS `Antal` FROM `Afstemninger_Brugere` WHERE `AfstemningID` = "'.$Afstemning[AfstemningID].'"'; $hStk = 'SELECT `Maerkat`,`Stemmer` FROM `Afstemninger_Valg` WHERE `AfstemningID` = "'.$Afstemning[AfstemningID].'"';
/*Dette forudsætter at du vil have en bjælke vises
Bjælkens totale længde 150 px, og hver ende har starten/slutningen på bjælken en bredde på 15 px. Enderne vises hvis der er hhv >0% i den ene ende og > 95% i den anden ende (håber der var nogen som forstod dette :P)*/ for($i=0;$i<count($Stk);$i++) { extract($Stk[$i]);
/*Hvert punkt er opsat således at der før mærkaten vises et tal fra 1 og opefter, og hvis man holder [Alt) nede, samtidigt med at man trykker på det pågældende nummer udfor sit valg, så bliver pågældende valgmulighed valgt (har ikke testet den hvis den kommer over 9 svarmuligheder, så det er nok en ide at begrænse sig, man skal jo heller ikke drukne brugeren i svarmuligheder*/
//Luk forbindelse function Luk() { if(!mysql_close()) { udskriv_fejl("Kunne ikke lukke forbindelsen til MySQL! - " . mysql_error()); } }
//Udskriv MySql fejl function udskriv_fejl($fejl) { echo "<p>$fejl";
if ($mysql_fejl == mysql_error()) { echo "<font color='#ff0000'><br>Fejlen er: <em>$mysql_fejl</em><br>Hvis du støder på denne fejl igen så send en mail til os, hvori du giver en fyldig beskrivelse af fejlen og hvad du gjorde lige inden fejlen opstod."; }
exit; } ?>
Synes godt om
Ny brugerNybegynder
Din løsning...
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.