Fout bij communicatie met MySQL

Status
Niet open voor verdere reacties.

jacobboersma

Gebruiker
Lid geworden
11 sep 2007
Berichten
428
Ik heb onderstaand script gemaakt. Nu geeft hij de volgende fout: Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server Dit is het script.
PHP:
<html><head>
<title> | Inschrijving</title>
</head>
<body>
<style type="text/css">
label {
width: 8em;
float: left;
text-align: left;
margin-left: 0,1em;
clear: both
}

.grayborder {
margin-left: 1.5em
}

.grayborder2 {
margin-left: 3em
}
.Normal-P
        {
        margin:0.0pt 0.0pt 0.0pt 0.0pt; text-align:left; font-weight:400; 
        }
.Normal-P0
        {
        margin:0.0pt 0.0pt 0.0pt 0.0pt; text-align:center; font-weight:400; 
        }
.Normal-C
        {
        font-family:"Arial", sans-serif; font-size:8.3pt; line-height:1.27; 
        }
.Normal-C0
        {
        font-family:"Calibri", sans-serif; font-weight:700; font-size:36.0pt; 
        line-height:1.23; color:#008000; 
        }
.normal-c21-C
        {
        font-family:"Arial", sans-serif; font-size:11.3pt; line-height:1.13em; 
        }
.Normal-C1
        {
        font-family:"Times New Roman", serif; font-size:18.0pt; 
        line-height:1.17; color:#008000; 
        }
</style>
<center>
<div style="position:relative;width:780px;">
<div style="position:absolute; left:7px; top:4px; width:116px; height:175px;">
    <img src="peters.gif" width="116" height="175" border="0" title="" alt="peters.gif"></div>
<div style="position:absolute; left:15px; top:1032px; width:692px; height:28px;">
    <p class="Normal-P"><span class="Normal-C">&copy 2008 - 2011 <a href="mailto:webmaster@pieterstuyvesantkuiertocht.nl" style="">Jacob Boersma</a>. &nbsp;Alle rechten voorbehouden. Deze website is het beste te bekijken met een schermresolutie van 1024 X 768.<br><br></span></p>
</div>
<div style="position:absolute; left:100px; top:15px; width:546px; height:137px;">
    <p class="Normal-P0"><span class="Normal-C0">PIETER STUYVESANT KUIERTOCHT</span></p>
</div>
<div style="position:absolute; left:126px; top:140px; width:518px; height:31px;">
    <p class="Normal-P"><span class="Normal-C1">IN DE GEMEENTE WESTSTELLINGWERF E.O.</span></p>
</div>
<div style="position:absolute; left:650px; top:98px; width:120px; height:67px;">
    <a href="weststel.gif" target="_blank" onclick="WPImagePopup('Weststellingwerfse vlag','_blank',this.href,326,217,''); return false"><img src="afbeeldingen/wp807a852f.gif" width="120" height="67" border="0" title="Weststellingwerfse vlag" alt="Klik voor een vergroting."></a></div>
<div style="position:absolute; left:650px; top:16px; width:120px; height:67px;">
    <a href="friesevlag.jpg" target="_blank" onclick="WPImagePopup('Friese vlag','_blank',this.href,800,444,''); return false"><img src="afbeeldingen/wp43f62200.jpg" width="120" height="67" border="0" title="Friese vlag" alt="Klik voor een vergroting."></a></div>
<div style="position:absolute; left:0px; top:1018px; width:780px; height:1px;">
    <img src="afbeeldingen/wpb8645baa.png" width="780" height="1" border="0" title="" alt=""></div>
<div style="position:absolute; left:0px; top:180px; width:780px; height:22px;">
    <img src="afbeeldingen/wp9b7a6010.png" width="780" height="22" border="0" title="" alt=""></div>
</div>
</center>
<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
<span class="normal-c21-C">
<?php
echo "<body bgcolor=\"#c1fcc1\">";
$Voornaam = ($_POST['Voornaam']);
$Achternaam = ($_POST['Achternaam']);
$Straatnaam = ($_POST['Straatnaam']);
$Huisnummer = ($_POST['Huisnummer']);
$Huisletter = ($_POST['Huisletter']);
$Postcodecijfers = ($_POST['Postcodecijfers']);
$Postcodeletters = ($_POST['Postcodeletters']);
$Woonplaats = ($_POST['Woonplaats']);
$Telefoonnummer = ($_POST['Telefoonnummer']);
$Emailadres = ($_POST['Emailadres']);
$Geboortedag = ($_POST['Geboortedag']);
$Geboortemaand = ($_POST['Geboortemaand']);
$Geboortejaar = ($_POST['Geboortejaar']);
$Aantal_L_W = ($_POST['Aantal_L_W']);
$Aantal_K_W = ($_POST['Aantal_K_W']);
$Aantal_L_N = ($_POST['Aantal_L_N']);
$Aantal_K_N = ($_POST['Aantal_K_N']);
$Aantal_P = ($_POST['Aantal_P']);
$Bankrekeningnummer = ($_POST['Bankrekeningnummer']);
$Voorwaarden = ($_POST['Voorwaarden']);
$Opmerkingen = ($_POST['Opmerkingen']);

if (!$Voornaam) {
echo "U heeft geen voornaam ingevuld!<br>";
echo "<a href='javascript:history.back()'>Ga terug.</a>"; 
exit; }

if (!$Achternaam) {
echo "U heeft geen achternaam ingevuld!<br>";
echo "<a href='javascript:history.back()'>Ga terug.</a>"; 
exit; }

if (!$Straatnaam) {
echo "U heeft geen straatnaam ingevuld!<br>";
echo "<a href='javascript:history.back()'>Ga terug.</a>"; 
exit; }

if (!$Huisnummer) {
echo "U heeft geen huisnummer ingevuld!<br>";
echo "<a href='javascript:history.back()'>Ga terug.</a>"; 
exit; }

if (!$Postcodecijfers) {
echo "<U heeft de postcode niet compleet ingevuld!br>";
echo "<a href='javascript:history.back()'>Ga terug.</a>"; 
exit; }

if (!$Postcodeletters) {
echo "U heeft de postcode niet compleet ingevuld!<br>";
echo "<a href='javascript:history.back()'>Ga terug.</a>"; 
exit; }

if (!$Woonplaats) {
echo "U heeft geen woonplaats ingevuld!<br>";
echo "<a href='javascript:history.back()'>Ga terug.</a>"; 
exit; }

if (!$Telefoonnummer) {
echo "U heeft geen telefoonnummer ingevuld!<br>";
echo "<a href='javascript:history.back()'>Ga terug.</a>"; 
exit; }

if (!$Emailadres) {
echo "U heeft geen e-mailadres ingevuld!<br>";
echo "<a href='javascript:history.back()'>Ga terug.</a>"; 
exit; }

if (!$Geboortedag) {
echo "U heeft de geboortedatum niet compleet ingevuld!<br>";
echo "<a href='javascript:history.back()'>Ga terug.</a>"; 
exit; }

if (!$Geboortemaand) {
echo "U heeft de geboortedatum niet compleet ingevuld!<br>";
echo "<a href='javascript:history.back()'>Ga terug.</a>"; 
exit; }

if (!$Geboortejaar) {
echo "U heeft de geboortedatum niet compleet ingevuld!<br>";
echo "<a href='javascript:history.back()'>Ga terug.</a>"; 
exit; }

if (!$Bankrekeningnummer) {
echo "U heeft geen bankrekeningnummer ingevuld!<br>";
echo "<a href='javascript:history.back()'>Ga terug.</a>"; 
exit; }

if (!$Voorwaarden) {
echo "U bent niet akkoord gegaan met de algemene voorwaarden<br>";
echo "<a href='javascript:history.back()'>Ga terug.</a>"; 
exit; }

?>
<?php
$con = mysql_connect("localhost","","");
if (!$con
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("pieterst", $con);
$sql="INSERT INTO inschrijvingen2011 Voornaam, Tussenvoegsel, Achternaam, Straatnaam, Huisnummer, Huisletter, Postcodecijfers, Postcodeletters, Woonplaats, Telefoonnummer, Emailadres, Geboortedag, Geboortemaand, Geboortejaar, Aantal_L_W, Aantal_K_W, Aantal_L_N, Aantal_K_N, Aantal_P, Voorwaarden, Bankrekeningnummer, Opmerkingen)
VALUES
('$_POST[Voornaam]','$_POST[Tussenvoegsel]','$_POST[Achternaam]','$_POST[Straatnaam]','$_POST[Huisnummer]','$_POST[Postcodecijfers]','$_POST[Postcodeletters]','$_POST[Woonplaats]','$_POST[Telefoonnummer]','$_POST[Emailadres]','$_POST[Geboortedag]','$_POST[Geboortemaand]','$_POST[Geboortejaar]','$_POST[Aantal_L_W]','$_POST[Aantal_K_W]','$_POST[Aantal_L_N]','$_POST[Aantal_K_N]','$_POST[Aantal_P]','$_POST[Voorwaarden]','$_POST[Bankrekeningnummer]','$_POST[Opmerkingen]')";
if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "<br><br>Uw gegevens zijn succesvol verzonden. <br><br>";
echo "Druk onderstaande pagina af. Dit is uw bewijs van inschrijven. <br>";
echo "Er is tevens een bevestiging gestuurd naar uw e-mailadres.<br><Br>";
echo "<fieldset><legend><H3>Persoonsgegevens</H3></legend>";
echo "Voornaam: $_POST[Voornaam] <br>";
echo "Tussenvoegsel: $_POST[Tussenvoegsel] <BR>";
echo "Achternaam: $_POST[Achternaam] <BR>";
echo "Straatnaam: $_POST[Straatnaam] <BR>";
echo "Huisnummer: $_POST[Huisnummer] <BR>";
echo "Huisletter: $_POST[Huisletter] <BR>";
echo "Postcode: $_POST[Postcodecijfers]&nbsp;$_POST[Postcodeletters] <BR>";
echo "Woonplaats: $_POST[Woonplaats] <BR>";
echo "Telefoonnummer: $_POST[Telefoonnummer] <BR>";
echo "E-mailadres: $_POST[Emailadres] <BR>";
echo "Geboortedatum: $_POST[Geboortedag]-$_POST[Geboortemaand]-$_POST[Geboortejaar] <BR>";
echo "</fieldset>";
echo "<BR>";
echo "<fieldset><legend><H3>Aantallen</H3></legend>";
echo "Aantal kaarten lange route wandelaars (35 km): $_POST[Aantal_L_W] <BR>";
echo "Aantal kaarten korte route wandelaars (22 km): $_POST[Aantal_K_W] <BR>";
echo "Aantal kaarten lange route Nordic Walkers (35 km): $_POST[Aantal_L_N] <BR>";
echo "Aantal kaarten korte route Nordic Walkers (22 km): $_POST[Aantal_K_N] <BR>";
echo "Aantal kaarten korte route prestatieloop (21 km en 100 meter): $_POST[Aantal_P] <BR>";
echo "</fieldset>";
echo "<BR>";
echo "<fieldset><legend><H3>Betalingsgegevens</H3></legend>";
?>
<?php
$bankn = $_POST["Bankrekeningnummer"];
$bedrag = "12.50";
$bedrag2 = "10.00";
$getal1 = $_POST["Aantal_L_W"];
$getal2 = $_POST["Aantal_K_W"];
$getal3 = $_POST["Aantal_L_N"];
$getal4 = $_POST["Aantal_K_N"];
$getal5 = $_POST["Aantal_P"];
$subtotaal1 = $getal1 + $getal2 + $getal3 + $getal4;
$subtotaal2 = $getal5;
$tot1 = $getal1 * $bedrag;
$tot2 = $getal2 * $bedrag;
$tot3 = $getal3 * $bedrag;
$tot4 = $getal4 * $bedrag;
$tot5 = $getal5 * $bedrag2;
$akaarten = $subtotaal1 + $subtotaal2;
$totaal1 = $subtotaal1 * $bedrag;
$totaal2 = $subtotaal2 * $bedrag2;
$totaal3 = $totaal1 + $totaal2;
$weergave = '&euro;&nbsp;' . number_format( $totaal3, 2 ); 
?>
<?php
echo "<B>Aaantal kaarten lange route wandelaars: $getal1 X &euro; 12,50 = $tot1</B><BR>";
echo "<B>Aaantal kaarten korte route wandelaars: $getal2 X &euro; 12,50 = $tot2</B><BR>";
echo "<B>Aaantal kaarten lange route Nordic Walkers: $getal3 X &euro; 12,50 = $tot3</B><BR>";
echo "<B>Aaantal kaarten korte route Nordic Walkers: $getal4 X &euro; 12,50 = $tot4</B><BR>";
echo "<B>Aaantal kaarten prestatieloop: $getal5 X &euro; 10,00 = $tot5</B><BR>";
echo "<B>Totaal aantal kaarten: $akaarten<b><BR>";
echo "<B>Het totale bedrag van $weergave wordt afbeschreven van banbrekeningnummer $bankn</b> <br><br>";
?>
<?php
echo "Eenmalige machtiging: $_POST[Automincasso] <BR>";
echo "Bankrekeningnummer: $_POST[Bankrekeningnummer]";
echo "</fieldset>";
echo "<BR>";
echo "<fieldset><legend><H3>Overige gegevens</H3></legend>";
echo "Opmerkingen: $_POST[Opmerkingen]";
echo "</fieldset>";
echo "<BR><BR>";
mysql_close($con)
?>
<a href="javascript:print();">Print deze pagina</a> 
<?php
$Voornaam = ($_POST['Voornaam']);
$Tussenvoegsel = ($_POST['Tussenvoegsel']);
$Achternaam = ($_POST['Achternaam']);
$Straatnaam = ($_POST['Straatnaam']);
$Huisnummer = ($_POST['Huisnummer']);
$Postcodecijfers = ($_POST['Postcodecijfers']);
$Postcodeletters = ($_POST['Postcodeletters']);
$Woonplaats = ($_POST['Woonplaats']);
$Telefoonnummer = ($_POST['Telefoonnummer']);
$Emailadres = ($_POST['Emailadres']);
$Geboortedag = ($_POST['Geboortedag']);
$Geboortemaand = ($_POST['Geboortemaand']);
$Geboortejaar = ($_POST['Geboortejaar']);
$Aantal_L = ($_POST['Aantal_L']);
$Aantal_K = ($_POST['Aantal_K']);
$Automincasso = ($_POST['Automincasso']);
$Bankrekeningnummer = ($_POST['Bankrekeningnummer']);
$Opmerkingen = ($_POST['Opmerkingen']);
$bedrag = "12.50";
$getal1 = $_POST["Aantal_L"];
$getal2 = $_POST["Aantal_K"];
$subtotaal = $getal1 + $getal2;
$totaal = $subtotaal * $bedrag;
$weergave = number_format( $totaal, 2 ); 
if($_POST['Automincasso'] == 'Ja') { 
  $message . ' wordt afgeschreven van uw rekeningnummer. '; 
} else { 
  $message . ' dient u over te maken naar rekeningnummer 30.35.73.430 <br>t.n.v. penningmeester Pieter Stuyvesant Kuiertocht, Nijetrijne. '; 
} 

$adres = ">";


$tijd = time();
$datum = strftime("%d/%m/%y %H:%M", $tijd);
$ip = getenv("REMOTE_ADDR");
$message = "
Dit zijn de gegevens die wij van u hebben ontvangen. Bewaar deze e-mail goed of druk deze e-mail af.
Kloppen bepaalde gegevens niet antwoord dan op deze e-mail. Uw gegevens worden dan zo spoedig mogelijk aangepast.

Voornaam: " . $Voornaam . "
Tussenvoegsel: " . $Tussenvoegsel . "
Achternaam: " . $Achternaam . "
Straatnaam: " . $Straatnaam . "
Huisnummer: " . $Huisnummer . "
Postcode: " . $Postcodecijfers . " " . $Postcodeletters . "
Woonplaats: " . $Woonplaats . "
Telefoonnummer: " . $Telefoonnummer . "
E-mailadres: " . $Emailadres . "
Geboortedatum: " . $Geboortedag . "-" . $Geboortemaand . "-" . $Geboortejaar . "

Aantal kaarten 35 km route: " . $Aantal_L . "
Aantal kaarten 22 km route: " . $Aantal_K . "

Verschuldigde bedrag: " . $subtotaal . " X euro 12,50 = euro " . $weergave . "
Het bedrag van euro " . $weergave."".$message . "

Eenmalige machtiging: " . $Automincasso . "
Bankrekeningnummer: " . $Bankrekeningnummer . "

Opmerkingen: " . $Opmerkingen . "


Met vriendelijke groet,
Afdeling Inschrijving & Registratie
";

$mailadres = ($_POST['Emailadres']);
$message = str_replace ("<br>","\n", $message);
mail("$mailadres", "Bevestiging inschrijving",
$message, "From: ".$adres."");
?>
</span>
</body>
</html>

Ik zit al uren te zoeken maar ik kan nergens de fout vinden.
 
Je mag niet referencen naar arrays in een string met dubbele aanhalingstekens.

Dit werkt niet:
PHP:
$string = "Hallo $_POST[persoon]";

Dat moet zo:
PHP:
$string = "Hallo " . $_POST['persoon'];

Als je je query string nou netjes opnieuw in elkaar zet op de juiste methode werkt het waarschijnlijk een stuk beter :)
 
De volgende keer als je een SQL query maakt en deze gebruikt in PHP zorg er dan voor dat je tekst en variabelen scheid. Ik zie nu dat dit geldt voor je hele script!

Hier het goede stukje(SQL query):

PHP:
$sql="INSERT INTO inschrijvingen2011 Voornaam, Tussenvoegsel, Achternaam, Straatnaam, Huisnummer, Huisletter, Postcodecijfers, Postcodeletters, Woonplaats, Telefoonnummer, Emailadres, Geboortedag, Geboortemaand, Geboortejaar, Aantal_L_W, Aantal_K_W, Aantal_L_N, Aantal_K_N, Aantal_P, Voorwaarden, Bankrekeningnummer, Opmerkingen)
VALUES
('".$_POST['Voornaam']."','".$_POST['Tussenvoegsel']."','".$_POST['Achternaam']."','".$_POST['Straatnaam']."','".$_POST['Huisnummer']."','".$_POST['Postcodecijfers']."','".$_POST['Postcodeletters']."','".$_POST['Woonplaats']."','".$_POST['Telefoonnummer']."','".$_POST['Emailadres']."','".$_POST['Geboortedag']."','".$_POST['Geboortemaand']."','".$_POST['Geboortejaar']."','".$_POST['Aantal_L_W']."','".$_POST['Aantal_K_W']."','".$_POST['Aantal_L_N']."','".$_POST['Aantal_K_N']."','".$_POST['Aantal_P']."','".$_POST['Voorwaarden']."','".$_POST['Bankrekeningnummer']."','".$_POST['Opmerkingen']."')";
 
Laatst bewerkt:
je bedoeld dit?

PHP:
$Voornaam = .$_POST['Voornaam'];
$Achternaam = .$_POST['Achternaam'];
$Straatnaam = .$_POST['Straatnaam'];
$Huisnummer = .$_POST['Huisnummer'];
$Huisletter = .$_POST['Huisletter'];
$Postcodecijfers = .$_POST['Postcodecijfers'];
$Postcodeletters = .$_POST['Postcodeletters'];
 
Uhh... nee... dat gaat nu fout.

Goed:
$iets = $_POST['iets'];

Fout:
$iets = .$_POST['iets'];

Ik weet niet waarom je ineens een punt er bij zet maar dat gaat dus niet werken.
 
Laatst bewerkt:
en nog een tip, dit is een beetje overdreven al die echo's...
PHP:
if (!$Voornaam) {
echo "U heeft geen voornaam ingevuld!<br>";
echo "<a href='javascript:history.back()'>Ga terug.</a>"; 
exit; }

Als je hier nou het volgende van maakt scheelt dat weer werk(in de toekomst) en het is een heel stuk overzichtelijker.
PHP:
if (!$Voornaam) {
echo "U heeft geen voornaam ingevuld!<br>
 <a href='javascript:history.back()'>Ga terug.</a>"; 
exit(); }

Ik zou zeggen pas je HELE script eerst eens aan naar netjes HTML/PHP en zet hem dan weer hier neer...


En om het helemaal goed te doen zet om elke waarde die gepost wordt en naar een SQL query gaat dit omheen zet: mysql_real_escape_string()
Dus:
PHP:
$query = "INSERT INTO iets veld1, veld2 VALUES '".mysql_real_escape_string($_POST['veld1'])."', '".mysql_real_escape_string($_POST['veld2'])."';";
 
Laatst bewerkt:
En door dat overpompen van die variabelen ($naam = $_POST['naam']) enzo wordt het er ook niet duidelijker op. Gebruik gewoon $_POST['naam'] overal, en niet de 'verkorte' versie.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan