Op deze website zijn twee aspecten van belang. Enerzijds moeten de genodigden aangeven wie ze zijn (naam, adres, etc.) en met hoeveel ze komen. Ook kiezen ze 1 nummer uit 10 voor geselecteerde nummers. Het is van belang dat ik uiteindelijk gemakkelijk uit kan lezen welke nummers het meeste gekozen zijn. Ook wil ik alle adresgegevens en of de genodigde komt uit kunnen lezen.
Om dit te realiseren heb ik een tutorial gevolgd op internet, maar toch kom ik er niet volledig uit. Allereerst heb ik een MySQL query uitgevoerd om een tabel aan te maken. Dat heb ik als volgt gedaan:
CREATE TABLE bruiloft (
id INT(11) NOT NULL auto_increment,
voornaam VARCHAR(255) NOT NULL,
achternaam VARCHAR(255) NOT NULL,
adres VARCHAR(255) NOT NULL,
postcode VARCHAR(6) NOT NULL,
woonplaats VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
telefoonnr INT(10) NOT NULL,
aanwezig VARCHAR(255) NOT NULL,
personen INT(11) NOT NULL,
track VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
Vervolgens heb ik een pagina aangemaakt met het formulier om de gegevens in te vullen en deze vervolgens naar het database te schrijven. Dit script is als volgt:
<?php
if(mysql_connect('localhost','',''))
{
mysql_select_db('db') or die(mysql_error());
}
else
{
echo 'Kan geen verbinding maken met het database';
exit;
}
if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST))
{
$aFouten = array();
if($_POST['voornaam'] == '')
{
$aFouten[] = 'Je hebt geen voornaam ingevuld';
}
if($_POST['achternaam'] == '')
{
$aFouten[] = 'Je hebt geen achternaam ingevuld';
}
if($_POST['adres'] == '')
{
$aFouten[] = 'Je hebt geen adres ingevuld';
}
if($_POST['postcode'] == '')
{
$aFouten[] = 'Je hebt geen postcode ingevuld';
}
if($_POST['woonplaats'] == '')
{
$aFouten[] = 'Je hebt geen woonplaats ingevuld';
}
if($_POST['email'] == '')
{
$aFouten[] = 'Je hebt geen e-mailadres ingevuld';
}
if($_POST['telefoonnr'] == '' || !is_numeric($_POST['telefoonnr']))
{
$aFouten[] = 'Je hebt geen telefoonnummer ingevuld';
}
if($_POST['aantal'] == '' || !is_numeric($_POST['aantal']))
{
$aFouten[] = 'Je hebt niet ingevuld met hoeveel personen je komt';
}
if(count($aFouten) != 0)
{
echo 'De volgende fouten zijn opgetreden: <br /><br />';
for($Fi = 0; $Fi < count($aFouten); $Fi++)
{
echo $aFouten[$Fi].'<br />';
}
echo '<br />Klik <a href="javascript:history.go(-1);">hier</a> om terug te keren';
}
else
{
mysql_query("INSERT INTO bruiloft (voornaam,achternaam,adres,postcode,woonplaats,email,telefoonnr,aanwezig,personen,track) VALUES ('".addslashes($_POST['voornaam'])."','".addslashes($_POST['achternaam'])."','".addslashes($_POST['adres'])."''".addslashes($_POST['postcode'])."''".addslashes($_POST['woonplaats'])."''".addslashes($_POST['email'])."''".addslashes($_POST['telefoonnr'])."''".addslashes($_POST['aanwezig'])."''".addslashes($_POST['aantal'])."''".addslashes($_POST['track'])."')") or die (mysql_error());
echo 'De gegevens zijn succesvol opgeslagen in de database';
}
}
else
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">
<head>
<title>
Mattijs & Willemijn gaan trouwen! - 16 juni 2012
</title>
<meta http-equiv="content-type" content="application/xml; charset=utf-8" />
<meta http-equiv="Author" content="bartcrum.com - Bart Crum" />
<meta name="Language" content="NL" />
<meta name="expires" content="never" />
<meta name="security" content="PUBLIC" />
<meta name="charset" content="ISO-8859-1" />
<meta name="REVISIT-AFTER" content="1 DAY" />
<meta name="distribution" content="Global" />
<meta name="robots" content="ALL,INDEX,FOLLOW" />
<meta name="publisher" content="http://www.bartcrum.com/mattijs&willemijn/" />
<meta name="copyright" content="Copyright ©2012 - www.bartcrum.com" />
<meta name="keywords" content="trouwen, mattijs kaak, willemijn olthoff, 16 juni, 2012, historisch museum, muziek, dans, openingsdans, amsterdam, 020, a'dam, " />
<meta name="description" content="Welkom. Dit is de 'Save the Date' website voor de bruiloft van Mattijs en Willemijn. Ook wordt er van u gevraagd uw stem uit te brengen op een van de genoemde
nummers voor de openingsdans. Bij voorbaat dank." />
<!-- computerhulp.batrcrum.com, voor al uw computer problemen. -->
<script type="text/javascript">
<!--
window.status="Copyright ©right2012 - www.bartcrum.com"
//-->
</script>
<link href="incl_styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="container">
<div id="plaatje" align="center">
<img src="" id="plaatje" />
</div>
<div id="form" align="center">
<form method="POST" action=" <?=$_SERVER['PHP_SELF']?> ">
<table border="0" width="100%">
<tr>
<td width="45%">
Voornaam:
</td>
<td width="55%">
<input type="text" name="voornaam" id="voornaam" size="20" maxlength="30" />
</td>
</tr>
<tr>
<td width="45%">
Achternaam:
</td>
<td width="55%">
<input type="text" name="achternaam" id="achternaam" size="25" maxlength="40" />
</td>
</tr>
<tr>
<td width="45%">
Adres:
</td>
<td width="55%">
<input type="text" name="adres" id="adres" size="30" maxlength="50" />
</td>
</tr>
<tr>
<td width="45%">
Postcode:
</td>
<td width="55%">
<input type="text" name="postcode" id="postcode" size="10" maxlength="6" />
</td>
</tr>
<tr>
<td width="45%">
Woonplaats:
</td>
<td width="55%">
<input type="text" name="woonplaats" id="woonplaats" size="25" maxlength="45" />
</td>
</tr>
<tr>
<td width="45%">
E-mail:
</td>
<td width="55%">
<input type="text" name="email" id="email" size="25" maxlength="50" />
</td>
</tr>
<tr>
<td width="45%">
Telefoonnummer:
</td>
<td width="55%">
<input type="text" name="telefoonnr" id="telefoonnr" size="20" maxlength="10" />
</td>
</tr>
<tr>
<td width="45%">
Kom je naar de bruiloft op zaterdag 16 juni 2012?
</td>
<td width="55%">
<input type="radio" name="aanwezig" id="aanwezig" value="aanwezig" CHECKED /> Aanwezig
<input type="radio" name="afwezig" id="afwezig" value="afwezig" /> Afwezig
</td>
</tr>
<tr>
<td width="45%">
Zo ja, met hoeveel personen in totaal?
</td>
<td width="55%">
<select name="aantal" id="aantal">
<option value="1">1 persoon</option>
<option value="2">2 personen</option>
<option value="3">3 personen</option>
<option value="4">4 personen</option>
<option value="5">5 personen</option>
</select>
</td>
</tr>
<tr>
<td width="45%">
Met welk nummer moeten we het feest openen?
</td>
<td width="55%">
<select name="track" id="track">
<option value="move like jagger">Maroon 5 ft. Christina Aguilera - Move Like Jagger</option>
<option value="sex on fire">Kings of Leon - Sex on Fire</option>
<option value="jetlag">Simple Plan ft. Natasha Bedingfield - Jetlag</option>
<option value="ice ice baby">Vanilla Ice - Ice Ice Baby</option>
<option value="in the air tonight">Phil Collings - In the air tonight</option>
<option value="bride in june">Seven Brides for Seven Brothers - Bride in June</option>
<option value="100 procent pure love">Crystal Waters - 100% pure love</option>
<option value="sing it back">Moloko - Sing it Back</option>
<option value="baby">Justin Bieber ft. Ludacris - Baby</option>
<option value="i follow rivers">Lukke Li - I follow rivers (The Magician Remix)</option>
</select>
</td>
</tr>
<tr>
<td width="45%">
</td>
<td width="55%">
<input type="reset" value="Beginwaarden" />
<input type="submit" value="Verzenden" />
</td>
</tr>
</table>
</form>
<?
}
?>
</div>
</div>
</body>
</html>
Zodra ik een test uitvoer en gegevens invoer, krijg ik de volgende foutmelding:
"Column count doesn't match value count at row 1".
Maar als ik de kolommen en values tel in de opdracht INSERT, tel ik een gelijk aantal. Kunnen jullie helpen?