Hier mijn eerste topic.
Ik heb een poll systeem gevonden op internet.(kan zelf niet scripten).
Maar nu zet hij de votes in de database.
Maar ik wil dat als je 7x hebt gestemd niet meer kan stemmen.
hier de code:
<?php
mysql_connect("localhost", "#", "#");
mysql_select_db("#");
if( isset( $_GET['p_id'] ) )
// Id opgegeven, geselecteerde poll pakken
$query = "SELECT * FROM polls WHERE id = '" . intval( $_GET['p_id'] ) . "' LIMIT 1";
else
// Geen id, laatst toegevoegde poll pakken
$query = "SELECT * FROM polls ORDER BY id DESC LIMIT 1";
$result = mysql_query( $query ) or die( mysql_error() );
if( mysql_num_rows( $result ) == 0 ) {
echo "Geen poll geselecteerd!";
} else {
$fetch = mysql_fetch_assoc( $result );
$voted = unserialize( $fetch['voted'] );
// Kijken of het IP al gestemd heeft
if( isset( $voted[ $_SERVER['REMOTE_ADDR'] ] ) )
$canvote = true;
else
$canvote = true;
// Antwoorden deserializen en sorteren
$answers = unserialize( $fetch['answers'] );
// Kijken of er deze keer gestemd is
if( isset( $_POST['voteon'] ) and $canvote ) {
$voteon = base64_decode( $_POST['voteon'] );
if( isset( $answers[ $voteon ] ) ) {
// Klopt, stem verwerken
$answers[ $voteon ]++;
$voted[ $_SERVER['REMOTE_ADDR'] ] = $_POST['voteon'];
mysql_query( "UPDATE polls SET votes = votes + 1, answers = '" . serialize( $answers ) . "', voted = '" . serialize( $voted ) . "' WHERE id = '" . $fetch['id'] . "' LIMIT 1" ) or die( mysql_error() );
$canvote = false;
}
}
arsort( $answers );
if( $canvote )
echo "<form method='POST'>";
echo "<span style='font-weight: bold; font-family: arial;'>" . $fetch['question'] . "</span> (" . $fetch['votes'] . ")<hr style='width: 250px;' align='left' />";
foreach( $answers as $name => $count ) {
if( $canvote )
echo "<input type='radio' name='voteon' value='" . base64_encode( $name ) . "'> ";
echo $name . "<br />";
// Maten uitrekenen
@$onepercent = 100 / $fetch['votes'];
$percent = round( $onepercent * $count , 1 );
$width = 200 * ( $percent / 100 ) + 1;
$margin = 200 - $width;
// Als er al gestemd is, de gekozen optie een aner kleurtje geven
$color = "#61a2f3";
if( !$canvote ) {
if( trim( $voted[ $_SERVER['REMOTE_ADDR'] ] ) == trim( base64_encode( $name ) ) )
$color = "navy";
}
echo "<div style='background-color: " . $color . "; border-top: 1px solid black; margin-right: " . $margin . "px; border-bottom: 1px solid black; width: " . $width . "px; height: 8px; overflow: hidden; display: inline;'></div> (" . $percent . "%)</span><hr style='width: 250px;' align='left' />";
}
if( $canvote )
echo "<input type='submit' value='Stemmen'></form>";
}
?>
Database:
CREATE TABLE `polls` (
`id` int(10) NOT NULL auto_increment,
`createdon` int(10) NOT NULL,
`question` varchar(255) NOT NULL,
`answers` text NOT NULL,
`votes` int(10) NOT NULL,
`voted` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
Met vriendelijke groet,
Slenger