MySQL INSERT werkt niet
Code (php)
1
2
3
4
2
3
4
<?php
$input = ("INSERT INTO reservation(ID, confirm, naam)
VALUES(NULL,'".$confirm."','".$bgnaam."')");
?>
$input = ("INSERT INTO reservation(ID, confirm, naam)
VALUES(NULL,'".$confirm."','".$bgnaam."')");
?>
Overigens is dit alleen nodig voor string waardes, niet voor integers! Verder is het invullen van een NULL waarde overbodig, dat maakt je database er automatisch wel van als er geen default waarde is gegeven.
Gewijzigd op 17/08/2012 23:00:37 door Erwin H
Waarom een NULL bij het ID veld ? ik neem aan dat het in je database gewoon een auto_increment veld is ? dus bij een insert query heb je heel het id niet nodig.
Wat doet: mysql_select_db op regel 32 ?
Zet alles eens netjes bij elkaar wat bij elkaar hoort, want nu staat aller her en der door het hele script heen!
Je gebruikt wel mysql_escape_string() op je variabele maar je toon de POST data wel direct in je email .. Is het hier wel gelijk goed dan ?
Hou je opmaak altijd in een css file en niet met een inline style daarvoor zijn classes en id's.
Edit:
Obelix en Idefix was me beetje voor :P
Gewijzigd op 17/08/2012 23:09:20 door Marco PHPJunky
Heb nu wel een fout afhandeling er in gezet, maar snappen doe ik het niet.
Hij zegt een fout te hebben op 'line 7' maar daar staat niets in het script.
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@bepeel.nl,
TTW,
1,
Shield,
55,
' at line 7
als ik de waarde echo, dan ziet alles er goed uit.
Maar zo te zien heb je de reacties van Erwin en Obelix niet goed gelezen.
Error: Duplicate entry '365' for key 'confirm'
Dit kan toch eigenlijk niet, of zie ik dat verkeerd?
Toevoeging op 18/08/2012 14:03:27:
En de mail word ook niet verstuurd
Er is een key niet goed in je database.
Wat moet ik me daar bij voorstellen, de kolom is ingesteld met INT(100) unique
Dan kan hij toch geen dubbele waarden invoeren, en wat ik uit de foutmelding opmaak, is dat ie dat wel probeerd
Haal die unique weg...
Heb echter nog 1 vraagje.
Ik krijg een dubbele waarden in de DB, wat gaat hier dan fout?
Het nieuwe script
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
<?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();
# sql debug
define('DEBUG_MODE',true); // true == aan, false == uit
# functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}
//Form handler
if($_SERVER['REQUEST_METHOD']=='POST')
{
$confirm = md5(rand(1000,100000));
$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');
$datum = date("d.m.Y H:i");
mysql_select_db($db,$con);
//Type paint bepalen
if($_POST['paint'] == 'Shield')
{
$paint2 = 45;
$paint = 'Shield';
}
elseif ($_POST['paint'] == 'Claymore')
{
$paint2 = 50;
$paint = 'Claymore';
}
else
{
$paint2 = 50;
$paint = 'Mace';
}
$paint3 = $paint2 * $_POST['dozen'];
$prijs = $WOF + $paint3;
//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,$con);
if (($result = mysql_query($input)) === false)
{
echo showSQLError($input,mysql_error(),'Fout met database.');
echo "Het formulier is niet verzonden.<br>Probeer het <a href='javascript:history.back(1);'>opnieuw</a><br/>.";
echo $input;
}
else
{
//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><img alt="The Timberwolves" height="94" src="http://www.thetimberwolves.nl/img/TTWlogoTrans.gif" width="443" /></p>
<p>Reserverings details</p>
<table>
<tr><td style="width:200px">Gereserveerd voor datum</td><td>'.$speeldatum.'</td></tr>
<tr><td style="width:200px">Voornaam</td><td>'.$bgnaam.'</td></tr>
<tr><td style="width:200px">Achternaam</td><td>'.$bganaam.'</td></tr>
<tr><td style="width:200px">Team naam</td><td>'.$bgteam.'</td></tr>
<tr><td style="width:200px">Aantal dozen</td><td>'.$bgdozen.'</td></tr>
<tr><td style="width:200px">Type paint</td><td>'.$bgpaint.'</td></tr>
</table>
<p>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>'.$paint3.'</td></tr>
<tr><td style="width:200px">Totaal</td><td>'.$prijs.'</td></tr>
</table>
<p><a href="http://www.thetimberwolves.nl/script/bevestig.php?'.$confirm.'">Klik hier om uw reservering te bevestigen</a></p>
<p><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
{
// Fouten opgetreden: weergeven en terug naar formulier
header('Refresh: 10; url=contact.html');
foreach($errors as $sError)
{
echo '<p style="color:red">'.$sError.'</p>';
}
}
}
?>
/**
* @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();
# sql debug
define('DEBUG_MODE',true); // true == aan, false == uit
# functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}
//Form handler
if($_SERVER['REQUEST_METHOD']=='POST')
{
$confirm = md5(rand(1000,100000));
$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');
$datum = date("d.m.Y H:i");
mysql_select_db($db,$con);
//Type paint bepalen
if($_POST['paint'] == 'Shield')
{
$paint2 = 45;
$paint = 'Shield';
}
elseif ($_POST['paint'] == 'Claymore')
{
$paint2 = 50;
$paint = 'Claymore';
}
else
{
$paint2 = 50;
$paint = 'Mace';
}
$paint3 = $paint2 * $_POST['dozen'];
$prijs = $WOF + $paint3;
//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,$con);
if (($result = mysql_query($input)) === false)
{
echo showSQLError($input,mysql_error(),'Fout met database.');
echo "Het formulier is niet verzonden.<br>Probeer het <a href='javascript:history.back(1);'>opnieuw</a><br/>.";
echo $input;
}
else
{
//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><img alt="The Timberwolves" height="94" src="http://www.thetimberwolves.nl/img/TTWlogoTrans.gif" width="443" /></p>
<p>Reserverings details</p>
<table>
<tr><td style="width:200px">Gereserveerd voor datum</td><td>'.$speeldatum.'</td></tr>
<tr><td style="width:200px">Voornaam</td><td>'.$bgnaam.'</td></tr>
<tr><td style="width:200px">Achternaam</td><td>'.$bganaam.'</td></tr>
<tr><td style="width:200px">Team naam</td><td>'.$bgteam.'</td></tr>
<tr><td style="width:200px">Aantal dozen</td><td>'.$bgdozen.'</td></tr>
<tr><td style="width:200px">Type paint</td><td>'.$bgpaint.'</td></tr>
</table>
<p>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>'.$paint3.'</td></tr>
<tr><td style="width:200px">Totaal</td><td>'.$prijs.'</td></tr>
</table>
<p><a href="http://www.thetimberwolves.nl/script/bevestig.php?'.$confirm.'">Klik hier om uw reservering te bevestigen</a></p>
<p><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
{
// Fouten opgetreden: weergeven en terug naar formulier
header('Refresh: 10; url=contact.html');
foreach($errors as $sError)
{
echo '<p style="color:red">'.$sError.'</p>';
}
}
}
?>
Welke waarde krijg je dubbel?
Er worden 2 regels in de DB ingevuld, terwijl dit er maar 1 per keer kan zijn.
Toevoeging op 18/08/2012 16:16:41:
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.
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) :(
Gewijzigd op 18/08/2012 17:11:11 door Obelix Idefix
Ga maar eens testen met onvolledige of onjuiste invoer op het formulier.
Gewijzigd op 18/08/2012 17:32:22 door Ger van Steenderen
Ga ik allemaal nog doen en proberen, bedankt allemaal, jullie waren een goede hulp voor mij :)