Ga naar inhoud


Poll maken [speciaal scripje?]


interpol

Aanbevolen berichten


Gaat het om 1 of om meerder vragen?

 

Als het om 1 vraag gaat kan je daar een standaard formulier voor gebruiken.

 

Indien meerdere vragen moet je formulieren aan elkaar koppelen.

Dus de verwerk pagina van de eerste vraag is formulier 2.

 

Op pagina 1 stel je een vraag.

Die laat je verwerken op pagina 2. (controle op invullen, opslaan in db, enz,...)

Eens alles verwerkt, toon je het tweede formulier die onderaan op pagina 2 staat. Die laat je weer verwerken op pagina 3.

Zo kan je oneindig verder gaan.

iMac 27" macOS Sierra
iPhone 5s iOS 10

Link naar reactie
Delen op andere sites

Maak een mysql database aan met de naam "form_antwoorden"

In die database maak je 1 tabel aan met de naam "antwoorden"

De tabel heeft 2 velden

 

veld 1 => id (unsigned, auto increment, primary key)

veld 2 => antwoord (varchar => 10)

 

Daarna kan je onderstaand script gebruiken.

 

Php Code:

<?phpif (isset($_POST['submit'])){		$antwoord = $_POST['antwoord'];		if ($antwoord == ""){		$waarschuwing = "<font color=red>Je moet een keuze maken<font>";	}	else{		$dbhost = 'localhost';		$dbuser = 'root';		$dbpass = 'password';		$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql');		$dbname = 'form_antwoorden';		mysql_select_db($dbname);		$query= ("INSERT INTO `antwoord`			(`antwoord`)			VALUES			('$antwoord')");			$input = mysql_query($query) or die (mysql_error());			$waarschuwing = "<font color=red>Bedankt voor uw antwoord</font>";	}}?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">		<title>Untitled 2</title></head><body><form id="form1" name="form1" method="post" action="<?php print $_SERVER['PHP_SELF']; ?>"><?php if (isset($waarschuwing)){ echo $waarschuwing . "<br />"; }?>Stel hier de vraag:<br /><input type="radio" name="antwoord" value="Ja"> Ja<br /><input type="radio" name="antwoord" value="Nee"> Nee<br /><input type="radio" name="antwoord" value="Anders"> Anders<br /><input type="submit" id="submit" name="submit" value="Verzenden"></form><?php unset($waarschuwing); ?></body></html>

 

Met dit script lees je de database uit voor de resultaten

 

Php Code:

<?phpfunction percent($aantal_records, $totaal_aantal_records) {$bereken1 = $aantal_records / $totaal_aantal_records;$bereken2 = $bereken1 * 100;$uitkomst = number_format($bereken2, 2, ',', '');return $uitkomst;}$dbhost = 'localhost';$dbuser = 'root';$dbpass = 'password';$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql');$dbname = 'form_antwoorden';mysql_select_db($dbname);		$query1 = "SELECT * FROM antwoord";$sql1 = mysql_query($query1) or die (mysql_error());$totaal_aantal = mysql_num_rows($sql1);		$query2 = "SELECT * FROM  antwoord WHERE antwoord = 'Ja'";$sql2 = mysql_query($query2) or die (mysql_error());$aantal_ja = mysql_num_rows($sql2);$resultaat_ja = percent($aantal_ja,$totaal_aantal);		$query3 = "SELECT * FROM  antwoord WHERE antwoord = 'Nee'";$sql3 = mysql_query($query3) or die (mysql_error());$aantal_nee = mysql_num_rows($sql3);$resultaat_nee =percent($aantal_nee,$totaal_aantal);		$query4 = "SELECT * FROM  antwoord WHERE antwoord = 'Anders'";$sql4 = mysql_query($query4) or die (mysql_error());$aantal_anders = mysql_num_rows($sql4);$resultaat_anders = percent($aantal_anders,$totaal_aantal);		if ($totaal_aantal > 0){		echo "Er werd in totaal ".$totaal_aantal." maal gestemd<br />";	echo $aantal_ja." maal Ja ".$resultaat_ja."%<br />";	echo $aantal_nee." maal Nee ".$resultaat_nee."%<br />";	echo $aantal_anders." maal anders ".$resultaat_anders."%";}	else{		echo "Er werd nog niet gestemd";	}?>

iMac 27" macOS Sierra
iPhone 5s iOS 10

Link naar reactie
Delen op andere sites

Ik zie een veiligheids risico in dit script;

Citaat:
$antwoord = $_POST['antwoord'];

en dan

Citaat:
Php Code:
$query= ("INSERT INTO `antwoord`			(`antwoord`)			VALUES			('$antwoord')"); 

Dit zet de deur wagenwijd open voor database injection etc.

 

Hier een functie die je kan gebruiken om het veel veiliger te maken;

Php Code:
function clean($data) {  $data = trim(htmlentities(strip_tags($data)));  if (get_magic_quotes_gpc()) $data = stripslashes($data);  return mysql_real_escape_string($data);} 

 

Als je dan "$antwoord = $_POST['antwoord'];" aanpast naar

Php Code:
$antwoord = "";if (isset($_POST['antwoord']) $antwoord = clean($_POST['antwoord']); 

dan is het een heel stuk veiliger... smile

“Success is not final, failure is not fatal: it is the courage to continue that counts.” ~ Winston Churchill

Link naar reactie
Delen op andere sites

Yep, helemaal gelijk, het scriptje was dan ook maar vlug vlug in elkaar gezet.

 

Echter als je mysql_real_escape_string() wil gebruiken moet je eerst connectie maken met de database anders gaat hij een fout geven.

iMac 27" macOS Sierra
iPhone 5s iOS 10

Link naar reactie
Delen op andere sites

Je hebt gelijk kwa connectie naar de database.

Wat ik normaal gesproken doe is een include file maken welke ik in elk script als eerste aanroep. In de include file wordt meteen de db connectie gemaakt. Dan hoef ik niet meer na te denken of die connectie er al is.

“Success is not final, failure is not fatal: it is the courage to continue that counts.” ~ Winston Churchill

Link naar reactie
Delen op andere sites

Origineel bericht van: Big fellow

Wat ik normaal gesproken doe is een include file maken welke ik in elk script als eerste aanroep. In de include file wordt meteen de db connectie gemaakt. Dan hoef ik niet meer na te denken of die connectie er al is.


Inderdaad, dit doe ik ook altijd.
Ik gebruik onderstaande functie die in de pagina includes.php staat.
Bovenaan de pagina zet ik een require(includes.php); en ik roep de functie aan bij de eerste query die ik moet uitvoeren.

Php Code:
function verbinden(){$host = "localhost";$gebruiker = "db_user";$ww_db = "password";$database = "db_naam";$link = mysql_connect("$host", "$gebruiker", "$ww_db");mysql_select_db ("$database");} 

iMac 27" macOS Sierra
iPhone 5s iOS 10

Link naar reactie
Delen op andere sites

ik voor jou de twee scripts gecombineerd naar 1 veilig script.

De tweede pagina blijft hetzelfde

 

Php Code:

<?phpfunction clean($data) {  $data = trim(htmlentities(strip_tags($data)));  if (get_magic_quotes_gpc()) $data = stripslashes($data);  return mysql_real_escape_string($data);} $dbhost = 'localhost';		$dbuser = 'root';		$dbpass = 'password';		$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql');		$dbname = 'form_antwoorden';		mysql_select_db($dbname);if (isset($_POST['submit'])){		$antwoord = "";		if (isset($_POST['antwoord'])) $antwoord = clean($_POST['antwoord']);		if ($antwoord == ""){		$waarschuwing = "<font color=red>Je moet een keuze maken</font>";	}	else{		$query= ("INSERT INTO `antwoord`			(`antwoord`)			VALUES			('$antwoord')");			$input = mysql_query($query) or die (mysql_error());			$waarschuwing = "<font color=red>Bedankt voor uw antwoord</font>";	}}?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">		<title>Untitled 2</title></head><body><form id="form1" name="form1" method="post" action="<?php print $_SERVER['PHP_SELF']; ?>"><?php if (isset($waarschuwing)){ echo $waarschuwing . "<br />"; }?>Stel hier de vraag:<br /><input type="radio" name="antwoord" value="Ja"> Ja<br /><input type="radio" name="antwoord" value="Nee"> Nee<br /><input type="radio" name="antwoord" value="Anders"> Anders<br /><input type="submit" id="submit" name="submit" value="Verzenden"></form><?php unset($waarschuwing); ?></body></html>

iMac 27" macOS Sierra
iPhone 5s iOS 10

Link naar reactie
Delen op andere sites

Maak een account aan of log in om te reageren

Je moet een lid zijn om een reactie te kunnen achterlaten

Account aanmaken

Registreer voor een nieuwe account in onze community. Het is erg gemakkelijk!

Registreer een nieuwe account

Inloggen

Heb je reeds een account? Log hier in.

Nu inloggen
  • Wie is er online   0 leden

    • Er zijn geen geregistreerde gebruikers deze pagina aan het bekijken
×
×
  • Nieuwe aanmaken...