Beste PHPer's,

Ik heb een inschrijf formulier gemaakt, maar krijg de insert niet voor elkaar.
De fout afhandeling werkt, maar krijg geen input.

Kan iemand me helpen, voor ik er een nog groter zooitje van maak :)

<?php

/**
* @author Ben Janssen
* @copyright 2012
*/

ini_set('display_errors',1);
error_reporting(E_ALL);
session_start();

//Include
include'cfg/cfg.php';
include_once $_SERVER['DOCUMENT_ROOT'] . '/securimage/securimage.php';

$securimage = new Securimage();

//Form handler
if($_SERVER['REQUEST_METHOD']=='POST')
{
$confirm = rand(100,1000);
$to = $_POST['email'];
$subject = 'Uw reservering';
$errors = array();
$data = array();
$ip = $_SERVER['REMOTE_ADDR'];
$headers = "From: NoReply@The_Timberwolves.nl\r\n";
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$WOF = 10;
$speeldatum = 07-10-2012;
mysql_select_db($db,$con);

//Type paint bepalen
if($_POST['paint'] == 'Shield')
{
$paint = 45;
}
else
{
$paint = 50;
}
$paint2 = $paint * $_POST['dozen'];
$prijs = $WOF + $paint2;
//controleren op fouten
$form = array(
'naam',
'anaam',
'email',
'team');
// controle voor alle velden
foreach($form as $veld)
{
if(isset($_POST[$veld]))
{
$value = trim($_POST[$veld]);
$form[$veld] = $value;

// controle van email

// controle op een geldig email adres
if($veld == 'email')
{
if(!preg_match("/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/",$value))
{
$errors[$veld] = true;
$errors[] = 'Dit is geen geldig email adres.';
}
}
if(empty($value))
{
$errors[$veld] = true;
$errors[] = 'U bent uw '.$veld.' vergeten in te vullen';
}
}
else
{
$errors[]= 'Het veld '.$veld.' ontbreekt.';
}
}
if(empty($errors))
{
$input = ('INSERT INTO reservation(ID, confirm, naam, anaam, email, teamnaam, dozen, paint, prijs, speeldatum, datum, ip)
VALUES
(NULL,
'.$confirm.',
'.$_POST['naam'].',
'.$_POST['anaam'].',
'.$_POST['email'].',
'.$_POST['team'].',
'.$_POST['dozen'].',
'.$_POST['paint'].',
'.$prijs.',
'.$speeldatum.',
NOW(),
'.$ip.'
)');
$input2 = mysql_query($input);
if (mysql_affected_rows()==1)
{
//input controle

$inhoud_mail = ('
<!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 content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Reservering</title>
</head>

<body style="background:silver">

<p style="text-align:center"><img alt="The Timberwolves" height="94" src="http://www.thetimberwolves.nl/img/TTWlogoTrans.gif"; width="443" /></p>
<p style="text-align:center">Reserverings details</p>
<table style="margin-left:auto;margin-right:auto">
<tr><td style="width:200px">Gereserveerd voor datum</td><td>'.$_POST['speeldatum'].'</td></tr>
<tr><td style="width:200px">Voornaam</td><td>'.$_POST['naam'].'</td></tr>
<tr><td style="width:200px">Achternaam</td><td>'.$_POST['anaam'].'</td></tr>
<tr><td style="width:200px">Team naam</td><td>'.$_POST['team'].'</td></tr>
<tr><td style="width:200px">Aantal dozen</td><td>'.$_POST['dozen'].'</td></tr>
<tr><td style="width:200px">Type paint</td><td>'.$_POST['paint'].'</td></tr>
</table>
<p style="text-align:center">Prijskaartje</p>
<table style="margin-left:auto;margin-right:auto">
<tr><td style="width:200px">WOF</td><td>'.$WOF.'</td></tr>
<tr><td style="width:200px">Prijs per doos</td><td>'.$paint.'</td></tr>
<tr><td style="width:200px">Totaal</td><td>'.$prijs.'</td></tr>
</table>
<p style="text-align:center"><a href="http://www.thetimberwolves.nl/script/bevestig.php?'.$confirm.'">Klik hier om uw reservering te bevestigen</a></p>
<p style="text-align:center"><img alt="Euro Paintball Adventures" height="94" src="http://www.thetimberwolves.nl/img/EPA.png"; width="443" /></p>
</body>

</html>
');
mail($to,$subject,$inhoud_mail,$headers);

header('Refresh: 3; url=index.html');
echo '<p>Een bevestiging is naar uw email adres verstuurd';
echo '<p>Uw aanvraag is geregistreerd met ip adres: '.$ip.' op datum: ' .$datum.'</p>';
}
else
{
mysql_error();
echo "Het formulier is niet verzonden.<br>Probeer het <a href='javascript:history.back(1);'>opnieuw</a>.";
}

}
else
{
// Fouten opgetreden: weergeven en terug naar formulier
header('Refresh: 4; url=contact.html');
foreach($errors as $sError)
{
echo '<p style="color:red">'.$sError.'</p>';
}
}
}
?>
Waar is volgens jouw de fouthandeling? Op de plek waar mail() niet werkt?
Mail heeft niks met MySQL te maken.

Tevens ben je ook behoorlijk hackbaar doordat je geen mysql_real_escape_string() gebruik op je POST/GET waardes in je query.
Ok, die zal ik moeten aanpassen.

De fout die ik krijg is dat het formulier niet is verzonden (regel 145)

Bij de input gaat er dus iets fout, toch?
het feit dat het formulier niet verzonden kan zijm, heeft niks met mysql te maken. Dus die mysql_error() hoort op die plek niet thuis.
mysql_error() heb ik verwijderd, maar nog steeds niet het gewenste resultaat.
Pas goede foutafhandeling toe op je query. Die zie ik nergens...
kopieer je query, voer hem uit in phpmyadmin als je een lokale server draait, en zie wat er fout gaat.
Oke, daar kan ik dus wel hulp bij gebruiken, ik weet dus echt niet hoe ik dat moet doen.

[size=xsmall]Toevoeging op 17/08/2012 21:40:20:[/size]

Ik neem aan dat ik de post waarde moet veranderen in statische waarden
kopieeren doe je met het selecteren met je muis, en rechtsklik en kopieeren. In phpmyadmin kan je deze plakken in het SQL-tabblad. Let erop dat je de PHP-codes niet meeneemt
Oke, ik krijg de melding "no database seleced"

Maar als ik het goed heb, staat deze op regel 32, moet ik die dan ook nog extra gebruiken bij phpMyADMIN?
In phpMyAdmin moet je uiteraard wel een database kiezen, voordat je naar het tabblad SQL gaat.

Reageren