Scripts

Poll v1.0.1

2e Poll script van deze week, maar dan weer anders. Dit script is een uitbreiding op "Een wat moeilijker login-systeem" (helemaal niet zo moeilijk hoor!) Dit poll systeem werk alleen niet zoals vele IP / Cookie gebonden poll-systemen. Het werkt namelijk met het principe dat elk lid 1 keer kan stemmen, en dat na een bepaald aantal stemmen automatisch de volgende poll wordt gestart. Je kan dus meerdere polls te gelijk maken, en rustig op vakantie gaan en dan (met genoeg animo om te stemmen) elke dag een nieuwe poll hebt. De plaatjes die ik gebruikt heb voor de procent-balkjes zijn hier te vinden: - http://www.mgunit.nl/images/bar2-l.gif - http://www.mgunit.nl/images/bar2-r.gif - http://www.mgunit.nl/images/bar2.gif Je moet ze wel in de submap /images/ opslaan of in het script de img src bewerken! Je hebt dit uiteindelijk: - poll.php (voorzien van commentaar) - poll_admin.php (werd het commentaar geven zat, dus ontbreekt :p) - subfolder images met de plaatjes bar2-l.gif , bar2-r.gif en bar2.gif . Edit: v1.0.1 Nu ook bruikbaar voor andere login systemen die met mysql database werken door een extra config boven aan de beide pagina's te zetten. Deze moet je wel bij allebei aanpassen! ... Dan volgt de MYSQL QUERY: En voeg in de table Members de volgende rij toe: Veel succes met het gebruiken / inspiratie opdoen ;)

poll-v101
////--- poll.php ---/////
[code]<?php
##################################
# Door: Pieter van Linschoten                               #
# Datum: 05 - 08 - 2005                                      #
# Email: [email protected]                             #
# Voorbeeld: www.mgunit.nl/index.php?page=Poll  #
##################################
SESSION_START();

//config: Vervang door eigen instellingen.
$connect = "data.inc"; // Bestand dat verbinding maakt met de MYSQL DATABASE
$dir = "images/"; // Directory waar je de plaatjes zet (bar2-r.gif, bar2-l.gif en bar2.gif)
$table = "members"; // Tabel voor je gebruikersnaam uit haalt
$tablerow = "gebruikersnaam"; // Rij in de tabel voor de gebruikers, bijv. gebruikersnaam
$tableuser = $_SESSION['user']; // Naam, bijvoorbeeld $_COOKIE['user'] of $_SESSION['user']
//einde config, je hoeft hieronder niets meer te wijzigen

include($connect);
?>
<H3>Polling Station:</H3>
<br>
<?


//Kijk of de gebruiker al gestemd heeft
$poll_check = "SELECT vote FROM ".$table." WHERE ".$tablerow." = '".$tableuser."'";
$res_check = mysql_fetch_array(mysql_query($poll_check));

//Bepaald welk scherm de gebruiker te zien krijgt

		
if($res_check['vote'] == 1){
$view = "results";
}else{
$view = "vote";
}
if(empty($_GET['id'])){
		$select = "ready = '0'";
		}else{
		$select = "id = '".$_GET['id']."'";
		$view = "results";
		}
if(!isset($tableuser)){
echo"<I>Je bent niet ingelogd, je kan alleen de poll uitslagen bekijken.</I><p>";
$view = "results";
}

//wanneer hij al gestemd heeft:
if($view == "results"){

	//selecteren uit de database
	$sql_sel = "SELECT vraag,ant1,ant2,ant3,ant4,ant5,ant6,v1,v2,v3,v4,v5,v6,nextvote FROM polling WHERE $select ORDER by ID ASC LIMIT 0,1";
	if($poll = mysql_fetch_array(mysql_query($sql_sel))){

			//totaal aantal stemmen tellen:
			$totalvotes = $poll['v1'] + $poll['v2'] + $poll['v3'] + $poll['v4'] + $poll['v5'] + $poll['v6'];
			
			//weergeef de vraag		
			echo"<b>\"".$poll['vraag']."\"</b><P>";

			//rekent uit hoeveel antwoorden er zijn in totaal en het aantal procenten per poll
			$polls = 1;
			for($i=1;$i<7;$i++){

				if($poll['ant'.$i] != ""){
					if($poll['v'.$i] == ""){
					$bla['t'.$i] = 0;
					}
					else{
					$bla['t'.$i] = 100 / $totalvotes;
					$bla['t'.$i] = round($bla['t'.$i] * $poll['v'.$i]);
					$width_poll['v'.$i] = $bla['t'.$i] * 2;
					}

					
					$polls++;
					$poll['v'.$i] = "(" . $poll['v'.$i] . ")";
				}

			}
			//Weergeeft de poll via een array per antwoord.
			for($a=1;$a<$polls;$a++){
			
			echo "<TABLE border=\"0\"><TR><td colspan=4><b>\"".$poll['ant'.$a]."\"</b>&nbsp;".$poll['v'.$a]."</td></tr>";
			echo"<tr><TD><img src=\"".$dir."bar2-l.gif\" height=\"10\" width=3/><img src=\"".$dir."bar2.gif\" height=\"10\" width=\"".$width_poll['v'.$a]."\" />";
			echo"<img src='".$dir/."bar2-r.gif' height='10' width='3'/></TD><td>".$bla['t'.$a]."%</td></tr></TABLE>";
			}
			echo "<br>Totaal aantal stemmen: ". $totalvotes ." (maximaal ".$poll['nextvote'].")";
	}

}
//einde weergeven / Begin stemmen
elseif($view == "vote"){

//BEGIN VOTE CHECK (wanneer iemand op stemmen heeft gedrukt)
if(isset($_POST['controle'])){

//selecteren uit de database
$sql_sel = "SELECT v1,v2,v3,v4,v5,v6 FROM polling WHERE ready = '0' ORDER BY id LIMIT 0,1";

//Stem verwerking - Wanneer er op optie 1 is gestemd
if($_POST['optie'] == 1){	
	if($poll = mysql_fetch_array(mysql_query($sql_sel))){
		
		$new = $poll['v1'];
		$new++;
		
		$sql_1 = "UPDATE polling SET v1 = '".$new."' WHERE ready = '0' ORDER BY id LIMIT 1";
		$sql_2 = "UPDATE ".$table." SET vote = '1' WHERE ".$tablerow." = '".$tableuser."' ";	
		
		if($res_1 = mysql_query($sql_1)){
		if($res_2 = mysql_query($sql_2)){
			echo"Je hebt succesvol gestemd. klik <A HREF=\"".$PHP_SELF."\">hier</A> voor de uitslag!";
			}
			}
		}
	}
//Stem verwerking - Wanneer er op optie 2 is gestemd	
elseif($_POST['optie'] == 2){	
	if($poll = mysql_fetch_array(mysql_query($sql_sel))){
		
		$new = $poll['v2'];
		$new++;
		
		$sql_1 = "UPDATE polling SET v2 = '".$new."' WHERE ready = '0' ORDER BY id LIMIT 1";
		$sql_2 = "UPDATE ".$table." SET vote = '1' WHERE ".$tablerow." = '".$tableuser."' ";	
		
		if($res_1 = mysql_query($sql_1)){
		if($res_2 = mysql_query($sql_2)){
			echo"Je hebt succesvol gestemd. klik <A HREF=\"".$PHP_SELF."\">hier</A> voor de uitslag!";
			}
			}
		}
	}
//Stem verwerking - Wanneer er op optie 3 is gestemd
elseif($_POST['optie'] == 3){	
	if($poll = mysql_fetch_array(mysql_query($sql_sel))){
		
		$new = $poll['v3'];
		$new++;
		
		$sql_1 = "UPDATE polling SET v3 = '".$new."' WHERE ready = '0' ORDER BY id LIMIT 1";
		$sql_2 = "UPDATE ".$table." SET vote = '1' WHERE ".$tablerow." = '".$tableuser."' ";	
		
		if($res_1 = mysql_query($sql_1)){
		if($res_2 = mysql_query($sql_2)){
			echo"Je hebt succesvol gestemd. klik <A HREF=\"".$PHP_SELF."\">hier</A> voor de uitslag!";
			}
			}
		}
	}
//Stem verwerking - Wanneer er op optie 4 is gestemd
elseif($_POST['optie'] == 4){	
	if($poll = mysql_fetch_array(mysql_query($sql_sel))){
		
		$new = $poll['v4'];
		$new++;
		
		$sql_1 = "UPDATE polling SET v4 = '".$new."' WHERE ready = '0' ORDER BY id LIMIT 1";
		$sql_2 = "UPDATE ".$table." SET vote = '1' WHERE ".$tablerow." = '".$tableuser."' ";	
		
		if($res_1 = mysql_query($sql_1)){
		if($res_2 = mysql_query($sql_2)){
			echo"Je hebt succesvol gestemd. klik <A HREF=\"".$PHP_SELF."\">hier</A> voor de uitslag!";
			}
			}
		}
	}
//Stem verwerking - Wanneer er op optie 5 is gestemd
elseif($_POST['optie'] == 5){	
	if($poll = mysql_fetch_array(mysql_query($sql_sel))){
		
		$new = $poll['v5'];
		$new++;
		
		$sql_1 = "UPDATE polling SET v5 = '".$new."' WHERE ready = '0' ORDER BY id LIMIT 1";
		$sql_2 = "UPDATE ".$table." SET vote = '1' WHERE ".$tablerow." = '".$tableuser."' ";	
		
		if($res_1 = mysql_query($sql_1)){
		if($res_2 = mysql_query($sql_2)){
			echo"Je hebt succesvol gestemd. klik <A HREF=\"".$PHP_SELF."\">hier</A> voor de uitslag!";
			}
			}
		}
	}
//Stem verwerking - Wanneer er op optie 6 is gestemd
elseif($_POST['optie'] == 6){	
	if($poll = mysql_fetch_array(mysql_query($sql_sel))){
		
		$new = $poll['v6'] ;
		$new++;
		
		$sql_1 = "UPDATE polling SET v6 = '".$new."' WHERE ready = '0' ORDER BY id LIMIT 1";
		$sql_2 = "UPDATE ".$table." SET vote = '1' WHERE ".$tablerow." = '".$tableuser."' ";	
		
		if($res_1 = mysql_query($sql_1)){
		if($res_2 = mysql_query($sql_2)){
			echo"Je hebt succesvol gestemd. klik <A HREF=\"".$PHP_SELF."\">hier</A> voor de uitslag!";
			}
			}
		}
	}
//Stem verwerking - Wanneer er geen optie is gekozen
else{
echo "Je hebt geen keuze gemaakt. Klik <a href=\"".$PHP_SELF."\">hier</a> om het opnieuw te proberen";
}

//Aantal check - Bekijkt of het maximale aantal al bereikt is.
$sql_sel = "SELECT * FROM polling WHERE ready = '0' ORDER BY id LIMIT 0,1";
	if($poll = mysql_fetch_array(mysql_query($sql_sel))){
			$totalvotes = $poll['v1'] + $poll['v2'] + $poll['v3'] + $poll['v4'] + $poll['v5'] + $poll['v6'];
	
	//AANTAL CHECK - Hier onder geeft aan wat er gebeurt wanneer het maximale aantal is bereikt
	if($totalvotes >= $poll['nextvote']){
		
		//Update de poll naar verlopen. dit zorgt ervoor dat gelijk de volgende poll in het rijtje gebruikt wordt.
		$sql_upd = mysql_query("UPDATE polling SET ready = '1' WHERE ready = '0' ORDER BY id LIMIT 1");
		
		//Update bij alle gebruikers vote, zodat iedereen weer kan stemmen.
		$sql_upd_2 = mysql_query("UPDATE ".$table." SET vote = '0'");

		if($res_upd && $res_upd_2){
		echo"het maximale aantal stemmen is bereikt, je kan gelijk weer stemmen bij de nieuwe polling.";
		}
	}

  }
}
//Wanneer er nog niet gestemd is en ook niet op de stem knop is gedrukt
else{

	//Selecteren uit de database
	$sql_sel = "SELECT vraag,ant1,ant2,ant3,ant4,ant5,ant6,nextvote FROM polling WHERE ready = '0' ORDER BY id LIMIT 0,1";
	$res = mysql_query($sql_sel);
	
	if(mysql_num_rows($res) == 0){
	echo"Er is momenteel geen poll beschikbaar";
	}else{
	

	$polls = 1;
	if($poll = mysql_fetch_array($res)){
				
			//Vraag uit de database weergeven			
			echo"Vraag: \"".$poll['vraag']."\"";
			
			//Doormiddel van een Array controleren hoeveel antwoorden er zijn ingevult
			for($b=1;$b<7;$b++){
				if(!empty($poll['ant'.$b]))
				$polls++;
				}
			}
			//Formulier voor
			echo"<FORM METHOD=POST ACTION=\"".$PHP_SELF."\">";

			//Door middel van een Array antwoorden met radio button weergeven.
			for($c=1;$c<$polls;$c++){
			echo"<INPUT TYPE=\"radio\" NAME=\"optie\" value=\"".$c."\">".$poll['ant'.$c]."<br>\n";
			}
			//Hidden Field (Checkt of er iets wordt verzonden) en submit button.
			echo"<input type=hidden name=\"controle\" value=check><input type=\"submit\" value=\"stem!\"></FORM>";

		}
	}


}
echo"<P>Bekijk Resultaten van afgesloten polls<p><BLOCKQUOTE>";
$poll_select = mysql_query("SELECT * FROM polling WHERE ready = '1'");

while($array = mysql_fetch_array($poll_select)){
echo"<li><a href=".$PHP_SELF."&id=".$array['id'].">".$array['vraag']."</a>";
}
echo"</BLOCKQUOTE>";
?>
[/code]

//////--- poll_admin ---///////
[code]
<?php
##################################
# Door: Pieter van Linschoten                               #
# Datum: 05 - 08 - 2005                                       #
# Email: [email protected]                             #
# Voorbeeld: www.mgunit.nl/index.php?page=Poll  #
##################################
SESSION_START();

//config: Vervang door eigen instellingen.
$connect = "data.inc"; // Bestand dat verbinding maakt met de MYSQL DATABASE
$table = "members"; // Tabel voor je gebruikersnaam uit haalt
$tablerow = "gebruikersnaam"; // Rij in de tabel voor de gebruikers, bijv. gebruikersnaam
$tableuser = $_SESSION['user']; // Naam, bijvoorbeeld $_COOKIE['user'] of $_SESSION['user']
//einde config, je hoeft hieronder niets meer te wijzigen

include("data.inc");


// kijk of $tableuser bestaat. Deze pagina is nog niet volledig beveiligd alleen tegen NIET-leden, maar nog niet tegen Leden.
if(!isset($tableuser))
DIE("SECURITY ERROR: Je hebt hier geen toegang!");


if($_GET['action'] == "edit"){
$view = "edit";
}else{
$view = "view";
}

echo"<CENTER><A HREF=\"index.php?page=poll_setup&action=new\">Nieuw</A></CENTER>";

$sql = "SELECT rank FROM ".$table." where ".$tablerow." = '".$tableuser."'";  
    $res = mysql_query($sql);
 $row = mysql_fetch_array($res);
	 if($row['rank'] >= 1){ 
 if($view == "view"){

//Voeg Poll toe:
if(!empty($_POST['vraag'])){
	if(!empty($_POST['maxvote'])){
		if(!empty($_POST['ant1'])){
			if(!empty($_POST['ant2'])){
				
				$insert = "INSERT INTO polling SET vraag = '".$_POST['vraag']."', ant1 = '".$_POST['ant1']."', ant2 = '".$_POST['ant2']."', ant3 = '".$_POST['ant3']."',ant4 = '".$_POST['ant4']."',ant5 = '".$_POST['ant5']."',ant6 = '".$_POST['ant6']."', nextvote = '".$_POST['maxvote']."',ready = '0', v1 = '0',v2 = '0',v3 = '0',v4 = '0',v5 = '0',v6 = '0'";
				if($res = mysql_query($insert)){
					echo"Poll Succesvol gemaakt!";
				}

			}else{ echo"Je hebt het veld van antwoord 2 leeg gelaten, dit veld is verplicht!";}
		}else{ echo"Je hebt het veld van antwoord 1 leeg gelaten, dit veld is verplicht!";}
	}else{ echo"Je hebt geen maximaal aantal stemmen ingevult";}
}

//Formulier
?>
<FORM METHOD=POST ACTION="<?echo $PHP_SELF;?>">
Bij het invullen van een nieuwe poll moet je met een paar dingen rekening houden:<br>
<BLOCKQUOTE>
1. Minimaal 2 antwoorden invullen (Maximaal 6.)<Br>
2. Geen tekstvelden overslaan, maar op volgorde afwerken.<br>
3. Zet het maximale aantal stemmen niet te hoog, en nooit meer dan het aantal leden dat er zijn (ieder lid kan slechts een keer stemmen!).
</BLOCKQUOTE>
<table>
	<tr>
		<td><B>*Vraag:</B>&nbsp;</td>
		<td><INPUT TYPE="text" NAME="vraag" size=40></td>
	</tr>
	<tr>
		<td colspan=2 height=2 bgcolor=#990000></td>
	</tr>
	<tr>
		<td><B>*Antwoord 1:</B>&nbsp;</td>
		<td><INPUT TYPE="text" NAME="ant1" size=40></td>
	</tr>
	<tr>
		<td colspan=2 height=2 bgcolor=#990000></td>
	</tr>
	<tr>
		<td><B>*Antwoord 2:</B>&nbsp;</td>
		<td><INPUT TYPE="text" NAME="ant2" size=40></td>
	</tr>
	<tr>
		<td colspan=2 height=2 bgcolor=#990000></td>
	</tr>
	<tr>
		<td><B>Antwoord 3:</B>&nbsp;</td>
		<td><INPUT TYPE="text" NAME="ant3" size=40></td>
	</tr>
	<tr>
		<td colspan=2 height=2 bgcolor=#990000></td>
	</tr>
	<tr>
		<td><B>Antwoord 4:</B>&nbsp;</td>
		<td><INPUT TYPE="text" NAME="ant4" size=40></td>
	</tr>
	<tr>
		<td colspan=2 height=2 bgcolor=#990000></td>
	</tr>
	<tr>
		<td><B>Antwoord 5:</B>&nbsp;</td>
		<td><INPUT TYPE="text" NAME="ant5" size=40></td>
	</tr>
	<tr>
		<td colspan=2 height=2 bgcolor=#990000></td>
	</tr>
	<tr>
		<td><B>Antwoord 6:</B>&nbsp;</td>
		<td><INPUT TYPE="text" NAME="ant6" size=40></td>
	</tr>
	<tr>
		<td><B>*Maximaal aantal stemmen:</B>&nbsp;</td>
		<td><INPUT TYPE="text" NAME="maxvote" size=7 value=25></td>
	</tr>
	<tr>
		<td>&nbsp;</td>
		<td align=right><INPUT TYPE="submit" value="Maak!" size=40></td>
	</tr>
</table></form>

[/code]

Alle Pollings:
[code]
<?php
$select = "SELECT * FROM polling WHERE ready = '0' ORDER BY id ASC";
$res = mysql_query($select);
echo"<BLOCKQUOTE>";
WHILE($poll = mysql_fetch_array($res)){
echo "<li><A HREF=\"".$PHP_SELF."&action=edit&id=".$poll['id']."\">".$poll['vraag']."</A>"	;
}
echo"</BLOCKQUOTE>";
?>

</FORM>
<?
	 }elseif($view == "edit"){

//Voeg Poll toe:
if(!empty($_POST['vraag'])){
	if(!empty($_POST['id'])){
		if(!empty($_POST['maxvote'])){
			if(!empty($_POST['ant1'])){
				if(!empty($_POST['ant2'])){
					
					$insert = "UPDATE polling SET vraag = '".$_POST['vraag']."', ant1 = '".$_POST['ant1']."', ant2 = '".$_POST['ant2']."', ant3 = '".$_POST['ant3']."',ant4 = '".$_POST['ant4']."',ant5 = '".$_POST['ant5']."',ant6 = '".$_POST['ant6']."', nextvote = '".$_POST['maxvote']."' WHERE id = '".$_POST['id']."'";
					if($res = mysql_query($insert)){
						echo"Poll Succesvol gewijzigt!";
					}else{die(mysql_error());}

				}else{ echo"Je hebt het veld van antwoord 2 leeg gelaten, dit veld is verplicht!";}
			}else{ echo"Je hebt het veld van antwoord 1 leeg gelaten, dit veld is verplicht!";}
		}else{ echo"Je hebt geen maximaal aantal stemmen ingevult";}
	}else{ echo"Er is geen id aangegeven";}
}

if(isset($_POST['id'])){
$id = $_POST['id'];}
else{$id = $_GET['id']; }
//Wijzig Poll
$select = "SELECT * FROM polling WHERE id = '".$id."'";
$res = mysql_query($select);

if($poll = mysql_fetch_array($res)){
	if($poll['ready'] == "1"){
	echo"Je kunt deze poll niet meer aanpassen";
	}else{

		//Formulier
?>
<FORM METHOD=POST ACTION="<?echo $PHP_SELF;?>&action=edit">
<table>
	<tr>
		<td><B>*Vraag:</B>&nbsp;</td>
		<td><INPUT TYPE="text" NAME="vraag" size=40 value="<? echo $poll['vraag'];?>"></td>
	</tr>
	<tr>
		<td colspan=2 height=2 bgcolor=#990000></td>
	</tr>
	<tr>
		<td><B>*Antwoord 1:</B>&nbsp;</td>
		<td><INPUT TYPE="text" NAME="ant1" size=40 value="<? echo $poll['ant1'];?>"></td>
	</tr>
	<tr>
		<td colspan=2 height=2 bgcolor=#990000></td>
	</tr>
	<tr>
		<td><B>*Antwoord 2:</B>&nbsp;</td>
		<td><INPUT TYPE="text" NAME="ant2" size=40  value="<? echo $poll['ant2'];?>"></td>
	</tr>
	<tr>
		<td colspan=2 height=2 bgcolor=#990000></td>
	</tr>
	<tr>
		<td><B>Antwoord 3:</B>&nbsp;</td>
		<td><INPUT TYPE="text" NAME="ant3" size=40  value="<? echo $poll['ant3'];?>"></td>
	</tr>
	<tr>
		<td colspan=2 height=2 bgcolor=#990000></td>
	</tr>
	<tr>
		<td><B>Antwoord 4:</B>&nbsp;</td>
		<td><INPUT TYPE="text" NAME="ant4" size=40  value="<? echo $poll['ant4'];?>"></td>
	</tr>
	<tr>
		<td colspan=2 height=2 bgcolor=#990000></td>
	</tr>
	<tr>
		<td><B>Antwoord 5:</B>&nbsp;</td>
		<td><INPUT TYPE="text" NAME="ant5" size=40  value="<? echo $poll['ant5'];?>"></td>
	</tr>
	<tr>
		<td colspan=2 height=2 bgcolor=#990000></td>
	</tr>
	<tr>
		<td><B>Antwoord 6:</B>&nbsp;</td>
		<td><INPUT TYPE="text" NAME="ant6" size=40  value="<? echo $poll['ant6'];?>"></td>
	</tr>
	<tr>
		<td><B>*Maximaal aantal stemmen:</B>&nbsp;</td>
		<td><INPUT TYPE="text" NAME="maxvote" size=7  value="<? echo $poll['nextvote']?>" ></td>
	</tr>
	<tr>
		<td>&nbsp;</td>
		<td align=right><INPUT TYPE="hidden" name="id" value="<? echo $poll['id'];?>"><INPUT TYPE="submit" value="Wijzig!" size=40></td>
	</tr>
</table></form>

<?}
	
}

}

 }else{
	 echo"SECURITY ERROR: Je hebt hier geen toegang!";
 }

?>
[/code]

Reacties

0
Nog geen reacties.