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>';
}
}
}
?>
Alle.

Er worden 2 regels in de DB ingevuld, terwijl dit er maar 1 per keer kan zijn.

[size=xsmall]Toevoeging op 18/08/2012 16:16:41:[/size]

Zou het probleem bij regels 130 en 131 kunnen liggen?
Lijkt er wel op ja... als mysql_query een query uitvoert, dan levert het twee keer aanroepen natuurlijk twee keer de query uitvoer op.
Inderdaad, je voert daar 2x dezelfde query uit.
Maar als je een foutmelding krijgt dat je een dubbele invoer hebt op een unieke kolom is het niet de oplossing om de unique van een kolom te halen, maar te zorgen dat je invoer uniek is.
Reshad F op 18/08/2012 15:22:35

Haal die unique weg...

Die zal er niet voor niets op gezeten hebben ;-)

@TS: jammer dat je niet veel met de eerdere opmerkingen hebt gedaan (zoals kopiëren variabelen, headers) :(
Me daarbij aansluitend en er aan toevoegend:
Ga maar eens testen met onvolledige of onjuiste invoer op het formulier.
Ga ik allemaal nog doen en proberen, bedankt allemaal, jullie waren een goede hulp voor mij :)

Reageren