<link href="xampp.css" rel="stylesheet" type="text/css">
<?php
// bestanden insluiten
include_once('config.php');
include_once('functions.php');
include_once('header.php');
// initialisatie en configuratie heeft plaatsgevonden in config.php
if (isset($_POST['verzonden'])){
// begin de controles foto1
if (!isset($_FILES['foto1'])){
// Het formulier is niet goed verzonden, of de pagina is foutief aangeroepen
echo 'Het formulier is niet goed ingevuld. <br />';
echo "Try <a href=\"$deze_pagina\">again</a>";
exit;
}
else{
// Een array maken met alle waarden voor de foto
$foto1 = $_FILES['foto1'];
}
// controleer of er fouten zijn opgetreden bij het uploaden
switch ($foto1['error']){
case UPLOAD_ERR_OK:
// Het uploaden is goed gegaan, maar misschien is de foto
// groter dan toegestaan. Dit controleren
if ($foto1['size'] > MAX_FOTO_SIZE){
$fout_bericht .= "De foto is te groot. Hij mag niet groter zijn dan " .
MAX_FOTO_SIZE . " bytes<br />";
}
// er is geen fout opgetreden, doe niets.
break;
case UPLOAD_ERR_INI_SIZE:
// de foto is groter dan wordt toegestaan door php.ini
$fout_bericht .= 'De foto is te groot! Hij mag niet groter zijn dan ' . MAX_FOTO_SIZE . 'bytes';
break;
case UPLOAD_ERR_PARTIAL :
// de foto is maar gedeeltelijk ge-uploaded
$fout_bericht .= 'Er is een fout opgetreden tijdens het uploaden. ';
break;
case UPLOAD_ERR_NO_FILE :
// Er is geen bestand opgegeven om te uploaden
if (UPLOAD_VERPLICHT){
// als het uploaden van een bestand verplicht is de foutmelding tonen
$fout_bericht = 'U hebt geen foto opgegeven om te uploaden. ';
}
break;
default:
// Vangnet; er zou geen onbekende fout mogen optreden, maar het is
// goed hier toch een voorziening voor te treffen
$fout_bericht = 'Er is een onbekende fout opgetreden. ';
break;
} // einde switch
if (!$fout_bericht){
// het uploaden is goed gegaan. Mogelijke overige fouten afvangen.
// Het MIME-type van de foto controleren.
// Alleen JPEG, GIF en PNG-bestanden zijn toegestaan
// De toegestane MIME-types zijn gedefinieerd in $foto_MIME
if (!in_array($foto1['type'], $foto_MIME)){
$fout_bericht .= "U kunt alleen GIF-, JPG- of PNG-foto's uploaden. Het huidige type is: ". $foto1['type'];
}
// controleren of er al een foto bestaat met deze naam.
// Dubbele namen (=per ongeluk
// overschrijven van een foto) mogen niet voorkomen.
$foto_naam1 = $upload_dir . $foto1['name'];
if (file_exists($foto_naam1)){
$fout_bericht .= 'Er bestaat al een foto met deze naam.
Verander de naam van de foto op uw computer en upload opnieuw. ';
}
// Overige formuliervelden valideren.
// Naam moet ingevuld zijn
if (!check_field($_POST['merknaam'], T_TEXT)){
$fout_bericht .= 'U hebt geen naam ingevuld <br /> ';
}
}
// Einde van de controles. Als er geen fouten zijn opgetreden
// is $foutbericht nog leeg. In dat geval kan de foto worden
// verplaatst naar de definitieve directory
if (!$fout_bericht){
if(!move_uploaded_file($foto1['tmp_name'], $foto_naam1)){
$fout_bericht .= "Er is een fout opgetreden bij het opslaan van de foto. ";
}
}
if(!$fout_bericht){
/**
* database openen. Foutcontrole niet nodig, als dit failt
* wordt ge-die-d vanuit de functie
*/
$db = safe_db_open($host, $gebruiker, $wachtwoord, $database);
/**
* openen geslaagd, query opbouwen met gegevens uit formulier
*/
$query = "INSERT hoofd_database (id, onderwerp, type, made_in, photo_filename, datum, beschrijving)
VALUES ('', '" .
safe_text($_POST['onderwerp']) ."', '" .
safe_text($_POST['type']) ."', '" .
safe_text($_POST['made_in']) ."', '" .
safe_text($_FILES['foto1']['name']) . "', '" .
safe_text($_POST['datum']) . "', '" .
safe_text($_POST['beschrijving']) . "')";
/**
* gegevens invoegen in de database, ook nu foutcontrole (in dit voorbeeld)
* niet nodig, omdat wordt ge-die-d vanuit de functie indien het opslaan mislukt.
* Mogelijk wilt u hier zelf een ander type error-handling toepassen, in de vorm van
* if(!safe_query())... enzovoort.
*/
safe_query($db, $query);
mysqli_close($db);
// Einde opslaan in database
// Thumbnail maken.
// Stap 1: eigenschappen van de foto achterhalen
list ($breedte, $hoogte, $image_type) = getimagesize($foto_naam1);
// Stap 2: bepaal de verhouding tussen hoogte en breedte
$image_ratio = $breedte/$hoogte;
// Stap 3: bereken op basis van de ratio de nieuwe hoogte
if ($image_ratio > 1){
$tn_breedte = THUMB_SIZE;
$tn_hoogte = THUMB_SIZE / $image_ratio;
}
else{
$tn_hoogte = THUMB_SIZE;
$tn_breedte = THUMB_SIZE * $image_ratio;
}
// Stap 4: maak een lege thumbnail in het geheugen van de server
$thumb = imagecreatetruecolor($tn_breedte,$tn_hoogte);
// Stap 5: afhankelijk van het type foto het juiste type thumbnail maken
switch ($image_type){
case IMAGETYPE_GIF:
$source = imagecreatefromgif($foto_naam1);
break;
case IMAGETYPE_JPEG:
$source = imagecreatefromjpeg($foto_naam1);
break;
case IMAGETYPE_PNG:
$source = imagecreatefrompng($foto_naam1);
break;
default:
// vangnet, dit komt als het goed is nooit voor.
// indien toch: trachten gif-bestand te maken
$source = imagecreatefromgif($foto_naam1);
break;
}
// Stap 6: De grote foto verkleinen en kopieren naar de thumbnail
imagecopyresampled($thumb, $source, 0, 0, 0, 0, $tn_breedte, $tn_hoogte, $breedte, $hoogte);
// Stap 7: naam van de thumbnail instellen
$thumbname= $upload_dir ."thumbnails/" . "tn_" . $_FILES['foto1']['name'];
// Stap 8: tot slot: de thumbnail opslaan, opnieuw afhankelijk van het type
switch ($image_type){
case IMAGETYPE_GIF:
imagegif($thumb, $thumbname);
break;
case IMAGETYPE_JPEG:
// jpeg-afbeelding opslaan, kwaliteit: 100%
imagejpeg($thumb, $thumbname, 100);
break;
case IMAGETYPE_PNG:
imagepng($thumb, $thumbname);
break;
}
// In deze toepassing: De thumbnail op het scherm tonen
echo "<img src=\"$thumbname\" />";
// Einde thumbnail maken
// alle handelingen voltooid, melding op het scherm zetten
echo "<h2>Gegevens zijn opgeslagen in de database!</h2>";
echo "<a href=\"upload.php\">Back to Upload page</a>";
exit;
}
else{
// normaal gesproken: netjes doorsturen naar een error-pagina.
// nu even Quick and Dirty naar het scherm schrijven (geen correcte HTML!)
echo '<h2>There is a ERROR !<BR><BR><BR></h2>';
echo $fout_bericht;
echo "<br />Try <a href=\"$deze_pagina\">again</a>";
exit;
}
}
else{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Uploaden</title>
</head>
<body>
<h2>Uploaden</h2>
<form method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']?>">
<pre>
Select a Picture :<input name="foto1" type="file" size="50 "id="foto" />
Another Picture :<input name="foto2" type="file" size="50 "id="foto" />
Onderwerp :<select name="onderwerp" type="text" />
<?php
$db = mysql_connect("localhost", "root", "hollywood1")
or die("Kan niet verbinden: " . mysql_error());
mysql_select_db("database", $db);
$sql = "SELECT * FROM merken_a ORDER BY Naam ";
$resultaat = mysql_query($sql); // voer SQL code uit
while ($rij = mysql_fetch_array($resultaat)) {
echo "<option value=\"";
echo $rij["CATEGORIE_ID"]."\">";
echo $rij["Naam"]."</option>\n";
}
mysql_close($db);
?>
</select>
Type :<input name="type" type="text" size="50" />
Made in :<input name="made_in" type="text" size="50" />
Beschrijving :<textarea name="beschrijving" cols="50" rows="4"></textarea><br />
<input type="hidden" name="verzonden" value="1" />
<input type="hidden" name="datum" value="<?php echo date("YmdHis"); ?>" />
</pre>
<hr>
<input type="submit" name="Submit" value="Submit" />
<input type="reset" name="Reset" value="Reset" />
</form>
</body>
</html>
<?php
} // het grote else-blok afsluiten
?>