Avatar billede epo_blackdevil Nybegynder
17. april 2004 - 10:01 Der er 10 kommentarer og
3 løsninger

bruger må kun stemme en gang

jeg vil lave en afstemning der opfylder følgene kriterier:

en dropdownbox med værdierne 1-10.
det skal kun være muligt at stemme en gang.
ved siden af boxen skal der vises hvad der gennemsnitligt er stemt.

jeg tror godt jeg kan lave selve afstemningen selv.
men hvordan laver jeg så brugeren kun kan stemme en gang?

jeg tænkte på noget med når brugeren har stemt skal dropdownboxen ikke vises eller sådan noget
Avatar billede epo_blackdevil Nybegynder
17. april 2004 - 10:02 #1
og resultatet skal selfølgelig ikke vises før der er stemt!
Avatar billede jakobclausen Nybegynder
17. april 2004 - 10:21 #2
Når en bruger vil stemme tjekker du om der er oprettet en cookie der hedder afstemning og om den indeholder "1".
Hvis dette ikke er tilfældet må brugeren godt stemme - når stemmen kører afsted opretter du så en cookie:

setcookie("afstemning", 1, time()+10000000);

Hvilket betyder at brugeren kun kan stemme én gang fra samme computer
Avatar billede epo_blackdevil Nybegynder
17. april 2004 - 11:30 #3
@jakobclausen har ikke lige fået kigget på om det der virker endnu. men hvis det gør skal du nok få dine points.

jeg er lige løbet på et lille problem her unde vejs :(

når jeg via:     $stemt = $_REQUEST["poll1"];

får værdien af hvad man nu har stemt frem.
hvordan gør man så så den værdi bliver sat til 0 efter den er aflæst og gemt i en variabel?
Avatar billede jammerlab Nybegynder
17. april 2004 - 11:44 #4
Du laver da bare at den gemmer brugeren ip ... så:

$ip_vote = $REMOTE_ADDR;

$tjekomvotet = mysql_query("SELECT ip FROM vote_ip WHERE ip='$ip_vote'")or die(mysql_error());
if(mysql_num_rows($tjekomvotet) == 0){
echo "Du har stemt...";
}
Avatar billede jakobclausen Nybegynder
17. april 2004 - 11:49 #5
talker >> Det er ikke alle der har fast ip, og du kan derfor "afskærme" en masse brugere der IKKE har stemt før, men blot hvor deres ip-adresse har.
Avatar billede jammerlab Nybegynder
17. april 2004 - 11:50 #6
I know :) men så kan du som du siger også lave med cookies for det er da alt for nemt bare at gå ind og slette sin cookie og stemme igen som en gal... Så vil du da være mere sikker med IP metoden... jeg regner med der er flere med fast IP end dem som har dynamisk.
Avatar billede jammerlab Nybegynder
17. april 2004 - 11:51 #7
"men så kan du som du siger også lave med cookies... men det er da alt for nemt bare at gå ind og slette sin cookie og stemme igen som en gal..."

sådan :)
Avatar billede dennismp Nybegynder
17. april 2004 - 13:42 #8
Et par forslag:
1) Hvis det er brugere der kommer tilbage, så kunne du fx. i een uge udele en cookie, som giver dem ret til at stemme. Når de har stemt, fjerne du den igen. (Dette kræver at folk kommer tilbage mere end een gang)
2) Hvis det er kendte brugere (de logger ind), så er det bare at gemme at bruger xyz har stemt i en tabel, og så er det nemt at tjekke senere (et opslag).
Avatar billede jammerlab Nybegynder
17. april 2004 - 13:58 #9
True... og hvis de skal kunne stemme, og ikke er brugere som logger ind så lav et cookie/ip system :)
Avatar billede epo_blackdevil Nybegynder
17. april 2004 - 14:07 #10
oh, nu i lige hjælpe mig her.

jeg er ikke den store ørn til php.

jeg kan finde ud af og smide noget data i en tabel og opdatere den. og få den vist.

det i snakker om der lyder lidt besværligt.

en der vil uddybe det lidt?


jeg har lavet dette indtil videre:
<form action="poll.php" method=post>
<select name=poll1>
  <option value=0>---
  <option value=1>1
  <option value=2>2
  <option value=3>3
  <option value=4>4
  <option value=5>5
  <option value=6>6
  <option value=7>7
  <option value=8>8
  <option value=9>9
  <option value=10>10
</select>
<input type=submit value="Stem">
</form>



<?
    $conn = mysql_connect("localhost", "xxxxx", "xxxxxx");
    mysql_select_db("queze");
    $result = mysql_query("SELECT * FROM galleri_kampmaskine") or die(mysql_error());
    while ($row = mysql_fetch_array($result)) {
    $antal[] = $row['antal'];
    $stemme[] = $row['stemme'];
    }


    $stemt = $_REQUEST["poll1"];

   
   
    $samletstemme = $stemme[0]+$stemt;
    $antal = $antal[0];
    $antal++;
    mysql_query("UPDATE galleri_kampmaskine SET antal = '$antal'");
    mysql_query("UPDATE galleri_kampmaskine SET stemme = '$samletstemme'");
    echo 'antal stemmer '.$antal.'';
    echo '<br>samlet '.$stemme.'';

    mysql_close();
?>

den ligger her: http://www.queze.dk/3dgalleri/temp/poll.php

af en eller anden grund når man har stemt skriver den arrya uden for samlet. men udfor antal stemmer skriver den antal stemmer.

nogen der kan se problemet?

evt en der ved hvor man kan finde en afstemnign der lever op til mine kriterier?
men vil lige forsøge at lave den selv først. er sjovere :)
Avatar billede dennismp Nybegynder
17. april 2004 - 14:25 #11
du laver array'et her:
$stemme[] = $row['stemme'];

jeg tror det er $samletstemme du skal skrive ud
Avatar billede epo_blackdevil Nybegynder
17. april 2004 - 14:30 #12
takker dennismp det var det :)
Avatar billede epo_blackdevil Nybegynder
17. april 2004 - 16:55 #13
det gidder ikke virke. jeg finder en færdig afstemning.

men i får jeres points og tak for hjælpen :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester