De casus die gesteld wordt:

Bouw een interactieve site die wordt gekoppeld aan een MySQL-database.

•Gegevens invoeren in de database.
•Gegevens uit de database presenteren.

Ik heb een formulier gemaakt dat de database aanmaakt (database makennieuw.php):

<?php

mysql_connect;

mysql_query('create database klantgegevens_hema');

mysql_select_db('klantgegevens_hema');
print '<p>De database is geselecteerd</p>';

// kgh = klantgegevens hema
$query='CREATE TABLE kgh(
klantnummer INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
voornaam VARCHAR(20) NOT NULL,
achternaam VARCHAR(20) NOT NULL,
email VARCHAR(20) NOT NULL,
commentaar VARCHAR(100))';

if (@mysql_query($query)){;
print'<p>de tabel is gemaakt</p>';
} else {
die('<p>tabel niet gemaakt omdat:<b>'.mysql_error().'</b>.</p>De gevraagde query was:'.$query.'</p>');
}

mysql_close();

?>


en het andere wat de gegevens erin moet stoppen(gegevensinvoerenEDIT.php):


<html>
<head>
<title>een blog entry toevoegen</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">

<?php
ini_set('display_errors',1);
error_reporting(E_ALL&~E_NOTICE);

if(isset($_POST['submit'])){//behandeld het formulier

//connect en selecteer
if($dbc=@mysql_connect){//hier nog zonder root en qwerty voor school

if(!@mysql_select_db('klantgegevens_hema')){
die('<p>Could not select the database because:<b>'.mysql_error().'</b></p>');
}

}else{
die('<p>Could not connect to MySQL because:<b>'.mysql_error().'</b></p>');
}

//Definieer de query
$query="INSERT INTO `kgh`(klantnummer,voornaam,achternaam,telefoonnummer,email,commentaar)
VALUES('','{$_POST['voornaam']}','{$_POST['achternaam']}','{$_POST['telefoonnummer']}','{$_POST['email']}','{$_POST['commentaar']}')";

//voer de query uit
if(@mysql_query($query))
{
(print"<p><i>Uw gegevens zijn toegevoegd. Bedankt voor uw bijdrage</i>&nbspHEMA NEDERLAND</p>");


}else{
(print"<p>Kan het niet toevoegen omdat:<b>".mysql_error()."</b>. De query was $query.</p>");
}

mysql_close();

}
//}
//laat het formulier zien
?>

<form action="GegevensinvoerenEDIT.php" method="post">
<!--Hier wordt de voor- en achternaam gevraagd-->
<br>
<table width="75%" border="0">
<tr>
<td width="21%">
<div align="right">Voornaam:&nbsp&nbsp</div>
</td>
<td width="77%">
<input type="text" name="voornaam" size="20"/>
</td>
<td width="2%">&nbsp;</td>
</tr>
<tr>
<td width="21%">&nbsp;</td>
<td width="77%">&nbsp;</td>
<td width="2%">&nbsp;</td>
</tr>
<tr>
<td width="21%">
<div align="right">Achternaam:&nbsp&nbsp</div>
</td>
<td width="77%">
<input type="text" name="achternaam" size="20"/>
</td>
<td width="2%">&nbsp;</td>
</tr>
<tr>
<td width="21%">&nbsp;</td>
<td width="77%">&nbsp; </td>
<td width="2%">&nbsp;</td>
</tr>
<tr>
<td width="21%">
<div align="right">Telefoon nummer: </div>
</td>
<td width="77%">
<input type="text" name="telefoonnummer" size="10">
</td>
<td width="2%">&nbsp;</td>
</tr>
<tr>
<td width="21%">&nbsp;</td>
<td width="77%">&nbsp;</td>
<td width="2%" rowspan="3">&nbsp;</td>
</tr>
<tr>
<td width="21%">
<div align="right">E-mailadres:&nbsp&nbsp</div>
</td>
<td width="77%">
<input type="text" name="email" size="20"/>
</td>
</tr>
<tr>
<td width="21%">&nbsp;</td>
<td width="77%">&nbsp;</td>
</tr>
<tr>
<td width="21%" height="39">
<div align="right">Opmerkingen:&nbsp&nbsp</div>
</td>
<td width="77%" rowspan="2">
<textarea name="commentaar"
rows="4" cols="30"></textarea>
</td>
<td width="2%" rowspan="2">&nbsp;</td>
</tr>
<tr>
<td width="21%">&nbsp;</td>
</tr>
</table>
<br>
<table width="75%" border="0">
<tr>
<td width="21%">&nbsp; </td>
<td width="30%">
<input type="submit" name="submit" value="Verstuur mijn gegevens"/>
</td>
<td width="49%">
<input type="reset" name="reset" value="Leeg het formulier"/>
</td>
</tr>
</table>

</form>

</body>
</html>

-------------------------------



Is er misschien iemand die mij kan vertellen wat er fout is aan de code? Als n00b is het voor mij nog bijna allemaal magie wat er gebeurd ;)

Bvd Paul

edit: </form> toegevoegd, ; haakjes toegevoegd en { toegevoegd, ipadres en datum verwijderd bij INSERT en VALUES, 0 veranderd in '', ' toegevoegd
De database loopt \'goed\' maar ik wil voorkomen dat er lege velden worden opgestuurd, dat er dubbele gegevens komen en dat er bij bijvoorbeeld telefoonnummer geen text wordt gezet....

Voorkomen van lege velden:
controleer eerst in php of ze leeg zijn met if(!empty)
dubbele gegevens voorkomen:
creeer unieke velden in je database
alleen getallen voor telefoonnummers:
controleer of het een getal is met is_int()

Dat laatste weet ik niet zeker of dat werkt btw :/
De nieuwe en herziene versie:

<?php

ini_set('display_errors',1);
error_reporting(E_ALL&~E_NOTICE);

if(isset($_POST['submit'])){//behandeld het formulier

if(empty($_POST['voornaam'])){
//Het script wat er moet gebeuren als de waarde leeg is;
$fout = 'U vergeet wat in te vullen';
}

if(empty($_POST['achternaam'])){
//Het script wat er moet gebeuren als de waarde leeg is;
$fout = 'U vergeet wat in te vullen';
}
if(empty($_POST['telefoonnummer'])){
//Het script wat er moet gebeuren als de waarde leeg is;
$fout = 'U vergeet wat in te vullen';
}
if(empty($_POST['email'])){
//Het script wat er moet gebeuren als de waarde leeg is;
$fout = 'U vergeet wat in te vullen';
}
if (!$fout){
//database

//connect en selecteer
if($dbc=@mysql_connect){//hier nog zonder root en qwerty voor school
if(!@mysql_select_db('klantgegevens_hema')){
die('<p>Could not select the database because:<b>'.mysql_error().'</b></p>');
}

}else{
die('<p>Could not connect to MySQL because:<b>'.mysql_error().'</b></p>');
}
}else{
echo $fout;
}


//Definieer de query
$query="INSERT INTO `kgh`(klantnummer,voornaam,achternaam,telefoonnummer,email,commentaar)
VALUES('','{$_POST['voornaam']}','{$_POST['achternaam']}','{$_POST['telefoonnummer']}','{$_POST['email']}','{$_POST['commentaar']}')";

//voer de query uit
if(@mysql_query($query))
{
(print"<p><i>Uw gegevens zijn toegevoegd. Bedankt voor uw bijdrage</i>&nbspHEMA NEDERLAND</p>");


}else{
(print"<p>Kan het niet toevoegen omdat:<b>".mysql_error()."</b>. De query was $query.</p>");
}

mysql_close();

}
//}
//laat het formulier zien
?>

Reageren