Röstningsfunktion

PHP

5 svar · 325 visningar · startad av Wiberg

Medlem sedan juni 20003 169 inlägg
Trådstart#1

Följande efterfrågas:

Besökaren väljer mellan 5 olika alternativ (radiobuttons) och klickar på en submit knapp. Beroende på vilken radiobutton som är markerad lägg 1 till i en speciell textfil. En textfil för varje svarsalternativ alltså.

Tack på förhand!

Medlem sedan apr. 20003 971 inlägg
#2

Så här, kanske?

<form method=post>
<input type=radio name=opt value=a>A
<input type=radio name=opt value=b>B
<input type=radio name=opt value=c>C
<input type=submit>
</form>
<?
if($REQUEST_METHOD == "POST") {
if($opt == "a") // Välj fil
$file = "a.dat";
else if($opt == "b")
$file = "b.dat";
else if($opt == "c")
$file = "c.dat";
else die("Bad choice");

$fp = fopen($file, "w+"); // Öppna fil för uppdatering
$no = (int)fread($fp, 15); // Läs in nummer (0 om filen inte finns)
rewind($fp); // Spola tillbaka
fwrite($fp, $no + 1); // Skriv nytt nummer
fclose($fp); // Stäng fil
}
?>

Det finns dock bättre sätt att lösa t.ex. röstningsystem. Man kan bland annat använda databaser som är mycket effektivare.

Medlem sedan juni 20003 169 inlägg
#3

Tackar! :e :e :e

Medlem sedan juni 20003 169 inlägg
#4

Jag igen :e

Du skulle inte kunna lägga til några rader i koden så att samma besökare inte kan rösta mer än en gång åt gången. Besökarens IP sparas alltså då i t.ex. ipnummer.txt

:q

Medlem sedan juni 20003 169 inlägg
#5

Det går bra att rösta en gång på varje alternativ men sedan vill scriptet inte längre. A=1 B=1 C=1 men aldrig 2...

Medlem sedan apr. 20003 971 inlägg
#6

Jag kunde inte testa koden sist så därför smög det in ett fel.
Ändra fopen-raden till denna: (r+ istället för w+)
$fp = fopen($file, "r+"); // Öppna fil för uppdatering

Filen måste dock finnas för att det ska fungera nu.

Om besökarna bara ska kunna rösta en gång måste hela systemet bytas ut och fungera helt annorlunda mot det du beskrev. Här finns lite skript att tanka hem och testa. http://php.resourceindex.com/Complete_Scripts/Survey_and_Voting/

250 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
114 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
116 ms — ändringar (db)