Webprofis is een Forum waarin je vragen kunt stellen die webgerelateerd zijn. Heb je vragen over of problemen met je Webpagina, HTML, CSS, Javascript, PHP of andere client of serverside scriptingtalen? Stel ze dan gerust op dit forum. Op dit forum zijn een aantal vrijwilligers actief die u graag met uw vragen willen helpen en u waar mogelijk een passend antwoord aanbieden. Hebt u zelf veel ervaring en kennis met betrekking tot het bovenstaande? U bent van harte welkom om uw kennis met anderen te delen!

We hopen dat eenieder op dit Forum een leerzame ervaring mag opdoen.

Team Webprofis

simpel poll systeempje

bewerkt za 30 jul 2016 in Tutorials (Develop) Posts: 878
Allereerst maken we een settingspagina waarin we onze eigen pollopties aan kunnen geven.

settings.php
<?php

// SETTINGS
$quickpolloptions = ['Mozilla', 'Chrome', 'Opera', 'IE', 'Safari']; // bepaal hier je eigen pollopties
$quickpolltype = "checkbox"; // kies "radio" of "checkbox"; radio is enkele keus, checkbox is meerdere keuzes
$quickpollheader = "Wat is je favoriete browser?"; // de vraagstelling of koptekst

// RESET de POLL:
// Reset resultaten: verwijder bestand "vote_result.txt" in map data
// Reset ip address van users: verwijder bestand "user_ip.txt" in map data

?>
De Pollform: form.php
<?php
include('settings.php');
?>

<!-- RADIO VOTE / CHECKBOX VOTE-->

<div id="form" class="quickpollwrapper">
<p><?php echo $quickpollheader; ?></p>
<form method="post" id="quickpoll">
<table>
<tr class="radiohidden">
<td><input type="radio" name="radiovotehidden" value="0" checked></td>
</tr>
<?php

foreach ($quickpolloptions as $key => $value) {

if($quickpolltype == "radio") {

echo "<tr>";
echo "<td>";
echo "<label>$value</label>";
echo "</td>";
echo "<td>";
echo "<input class='quickpollinput' type='radio' name='radiovote' value='$key'><br>";
echo "</td>";
echo "</tr>";
}
elseif($quickpolltype == "checkbox") {
echo "<tr>";
echo "<td>";
echo "<label>$value</label>";
echo "</td>";
echo "<td>";
echo "<input class='quickpollinput' type='checkbox' name='checkboxvote[]' value='$key'><br>";
echo "</td>";
echo "</tr>";
}
}

?>
</table>
<input class="quickpollsubmit" type="submit" value="View / Vote">
</form>
</div>
Idereen kan maar 1 keer stemmen, daarvoor slaan we het IP adres op van degene die stemt. Dit slaan we op in een gewoon .txt bestandje

quickpoll_vote.php
<?php  
include('settings.php');

if($_POST)
{

// grab users IP address
$ipAddress = $_SERVER['REMOTE_ADDR'];

$UserIptxt = $ipAddress."||";
$all_ips = explode("||", file_get_contents("data/user_ip.txt"));
if ( ! in_array($ipAddress, $all_ips) ) {
// put the ip address in .txt file
file_put_contents("data/user_ip.txt", $UserIptxt, FILE_APPEND);
echo '<div class="votingsuccess">Thanks for voting!</div>';
}
else {
echo '<div class="alreadyvoted">You have already voted!</div>';
}
Vervolgens slaan we de gestemde data ook op in een gewoon .txt bestandje:

quickpoll_vote.php (vervolg)
$result_file = "data/vote_result.txt";

if (file_exists($result_file)) {
$results = explode(',', file_get_contents('data/vote_result.txt'));
} else {
// start with zeros if you don't have a file yet
$results = array_fill(0, count($quickpolloptions), 0);
}

// if IP address is not yet stored
if ( ! in_array($ipAddress, $all_ips) ) {

if($quickpolltype == "radio") {
if (isset($_POST['radiovote'])) {

$results[$_POST['radiovote']]++;
file_put_contents('data/vote_result.txt', implode(',', $results));
}
}
elseif($quickpolltype == "checkbox") {
if (isset($_POST['checkboxvote'])) {
foreach ($_POST['checkboxvote'] as $checkbox) {
$results[$checkbox]++;
}
file_put_contents('data/vote_result.txt', implode(',', $results));
}
}
}
Als laatste de output genereren: quickpoll_result.php
<div class="progresswrapper">

<table>
<tr>
<td>Result:</td>
<td></td>
<td>%</td>
<td>V</td>
</tr>
<?php
$total = array_sum($results);
foreach (array_combine($quickpolloptions, $results) as $key => $count) {
$percent = 100*round($count/($total),2);
?>
<tr>
<td class="quickpollheader"><?php echo $key.':'; ?></td>
<td class="quickpollgraphic"><div class="progresspoll">
<div class="percentpollgraph" style="width: <?php echo $percent; ?>%"></div>
</td>
<td class="quickpollpercent"><div class="percentpoll"><?php echo $percent; ?></div></td>
<td class="quickpollcount"><div class="count"><?php echo $count; ?></div></td>

</tr>
<?php
}
?>
</table>

Total Votes: <b><?php echo $total; ?></b>
Demo zie je hier op deze pagina rechts bovenaan in de sidebar

Getagd:
Login of Registreer om te reageren.