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>';
}
}
}
?>
Ik neem aan dat je de array's bedoeld?
array's?
Nee, je query....
Ik heb de $_POST['naam'] veranderd in een naam en nu werkt de input wel.
Dit is wat er in gezet werd.

.mysql_escape_string(ben).

[size=xsmall]Toevoeging op 17/08/2012 21:52:59:[/size]

Dus wat heb ik nu fout gedaan?
huh?
wat doe je nu precies? je zet toch geen mysql_escape_string(ben) in je SQL-tabblad van phpMyAdmin (PMA).
uhm, ja dat had ik dus wel gedaan, was dus niet de bedoeling :(

[size=xsmall]Toevoeging op 17/08/2012 22:05:31:[/size]

Heb nu het volgende gedaan, als ik je goed begrijp zou dit moeten werken.

<?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 = date('2012-10-07');
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))
{
//Escape's aanmaken

$bgnaam = mysql_escape_string($_POST['naam']);
$bganaam = mysql_escape_string($_POST['anaam']);
$bgemail = mysql_escape_string($_POST['email']);
$bgteam = mysql_escape_string($_POST['team']);
$bgdozen = mysql_escape_string($_POST['dozen']);
$bgpaint = mysql_escape_string($_POST['paint']);
$bgprijs = mysql_escape_string($prijs);
$input = ('INSERT INTO reservation(ID, confirm, naam, anaam, email, teamnaam, dozen, paint, prijs, speeldatum, datum, ip)
VALUES
(NULL,
'.$confirm.',
'.$bgnaam.',
'.$bganaam.',
'.$bgemail.',
'.$bgteam.',
'.$bgdozen.',
'.$bgpaint.',
'.$bgprijs.',
'.$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
{
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>';
}
}
}
?>
Inderdaad. Echo anders $input.
Oke zal ik ook eens proberen, eerste poging heeft niet geholpen

[size=xsmall]Toevoeging op 17/08/2012 22:10:07:[/size]

ik krijg wel een goede output van de echo

[size=xsmall]Toevoeging op 17/08/2012 22:12:39:[/size]

maar er is niet in de db gezet.

Ik snap er nou echt niets meer van
Zal dat eens proberen, dank je
Ten aanzien van je script:

Je kopieert variabele ($to) --> niet nodig.
Je controle mist op (bv) $_POST['dozen']. Dat zou een getal moeten zijn (?)
Waarom al die variabelen aanmaken met mysql_real_escape_string? Gebruik mysql_real_escape_string in je query. Daarnaast zou ik " gebruiken om een query (en ' om de variabelen in de query).
Waarom NULL als ID? Neem aan dat dat een auto-increment veld zal zijn? Kun je dan overslaan in je query.
Mis foutafhandeling van je query.
Het opnemen van $_POST waarden zonder enige vorm van beveiliging geeft een mogelijk risico in je mail.
Betwijfel of je headers wel volledig zijn. Advies doorgaans om swiftmailer of phpmailer te gebruiken; neemt je een boel werk uit handen.

Reageren