verweken gegevens wil niet in mysql

Status
Niet open voor verdere reacties.

jacobboersma

Gebruiker
Lid geworden
11 sep 2007
Berichten
428
Ik heb een verbindin gemaakt met een database. Zie volgend script:
PHP:
<?php
$con = mysql_connect("localhost","grasveld","appelboom");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("Inschrijving09", $con);
$sql="INSERT INTO Inschrijvingen (Voornaam, Aantal_L)
VALUES
('$_POST[voornaam]','$_POST[langeroute]')";
if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";
mysql_close($con)
?>
Nu verwerkt hij de gegevens wel maar ze staan niet in de database. Hij maakt het nummer wel aan.
 
'Niet in de database' als in; het veld is er, maar zonder waarden?

Dan gok ik dat je velden niet bestaan... je zet de waarden van $_POST[voornaam]' en $_POST[langeroute]' erin....

Zet eens ergens aan het begin

var_dump ( $_POST );

en kijk wat er in de array zit? waarschijnlijk zijn de waarden gewoon niet gezet, als ie niks invult.
 
'Niet in de database' als in; het veld is er, maar zonder waarden?

Dan gok ik dat je velden niet bestaan... je zet de waarden van $_POST[voornaam]' en $_POST[langeroute]' erin....

Zet eens ergens aan het begin

var_dump ( $_POST );

en kijk wat er in de array zit? waarschijnlijk zijn de waarden gewoon niet gezet, als ie niks invult.

Kun je iets duidelijker zijn. Ik begrijp je niet helemaal.
De code van het formulier
PHP:
<body bgcolor="#c1fcc1">
<form name="form1" Method="post" action="sqlconnect.php">
<h2>Inschrijving Pieter Stuyvesant Kuiertocht</h2>
<h3>6 juni 2009<h3/>
<fieldset><legend>Persoonsgegevens</legend>
Voornaam:&nbsp;<input name="Voornaam:" type="text" id="voornaam"><br>
Achternaam:&nbsp;<input name="Achternaam:&nbsp;" type="text" id="achternaam"><br>
Straatnaam:&nbsp;<input name="Straatnaam:&nbsp;" type="text" id="straatnaam"><br>
Huisnummer:&nbsp;<input name="Huisnummer:&nbsp;" type="text" id="huisnummer"><br>
Postcode:&nbsp;<input name="Postcode:&nbsp;" type="FH_POSTCODE" id="postcode"><br>
Woonplaats:&nbsp;<input name="Woonplaats:&nbsp;" type="text" id="Woonplaats"><br>
Telefoonnummer:&nbsp;<input name="Telefoonnummer:&nbsp;" type="text" id="telefoonnummer"><br>
E-mailadres:&nbsp;<input name="E-mailadres:&nbsp;" type="text" id="e-mailadres"><br>
Geboortedatum:&nbsp;<input name="Geboortedatum:&nbsp;" type="text" id="geboortedatum"><br>
</fieldset>
<fieldset><legend>Aantallen</legend>
Aantal kaarten lange route:&nbsp;<input name="Aantal&nbsp;kaarten&nbsp;lange&nbsp;route:&nbsp;" type="text" id="langeroute"><br>
Aantal kaarten korte route:&nbsp;<input name="Aantal&nbsp;kaarten&nbsp;korte&nbsp;route:&nbsp;" type="text" id="korteroute"><br>
</fieldset>
<fieldset><legend>Betalingsgegevens</legend>
Automatische incasso<br>
<input type="checkbox" name="Ja">&nbsp;Ja &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="checkbox" name="Nee">&nbsp;Nee<br>
Bankrekeningnummer:&nbsp;<input name="Bankrekeningnummer:&nbsp;" type="digits" id="bankrekeningnummer"><br>
</fieldset>
Opmerkingen:<br>
<textarea name="opmerkingen" cols="40" rows="5" id="opmerkingen"></textarea>
<br>
<input name="Reset "type="reset" id="Reset" Value="Leegmaken">
<input type="submit" name="Submit" Value="verzenden">
</form>
<body>
 
'Niet in de database' als in; het veld is er, maar zonder waarden?

Dan gok ik dat je velden niet bestaan... je zet de waarden van $_POST[voornaam]' en $_POST[langeroute]' erin....

Zet eens ergens aan het begin

var_dump ( $_POST );

en kijk wat er in de array zit? waarschijnlijk zijn de waarden gewoon niet gezet, als ie niks invult.


Ik heb nu het volgende veranderd in het script:
PHP:
<?php
var_dump ( $_POST );
$con = mysql_connect("localhost","grasveld","appelboom");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("Inschrijving09", $con);
$sql="INSERT INTO Inschrijvingen (Voornaam, Aantal_L)
VALUES
('$_POST[voornaam]','$_POST[langeroute]')";
if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";
mysql_close($con)
?>

Nog steeds staan de gegevens niet in de velden. De velden zijn wel aangemaakt en de autonummering daarvan doet het ook. Maar daarachter komen geen gegevens. Hier nog even een documentje met een screenshot van de database. Nummer 9 heb ik handmatig toegevoegd.
 
Laatst bewerkt:
Daar ging ik ook niet vanuit; het gaat om de output :)

var_dump( ) drukt op het scherm af wat op dat moment de waarde is van de aangegeven variabele...

als het goed is zie je ergens iets in de trant van: array ( 'voornaam' => 'een naam', 'langeroute' => 'een route' )

Als je echter alleen array() ziet staan, dan weet je dat de waarden die je probeert op te slaan, simpelweg niet bestaan.

Het is een simpele debug-optie om zelf te achterhalen wat er mis gaat :)
 
Daar ging ik ook niet vanuit; het gaat om de output :)

var_dump( ) drukt op het scherm af wat op dat moment de waarde is van de aangegeven variabele...

als het goed is zie je ergens iets in de trant van: array ( 'voornaam' => 'een naam', 'langeroute' => 'een route' )

Als je echter alleen array() ziet staan, dan weet je dat de waarden die je probeert op te slaan, simpelweg niet bestaan.

Het is een simpele debug-optie om zelf te achterhalen wat er mis gaat :)

array(14) { ["Voornaam:"]=> string(3) "hoi" ["Achternaam: "]=> string(0) "" ["Straatnaam: "]=> string(0) "" ["Huisnummer: "]=> string(0) "" ["Postcode: "]=> string(0) "" ["Woonplaats: "]=> string(0) "" ["Telefoonnummer: "]=> string(0) "" ["E-mailadres: "]=> string(0) "" ["Geboortedatum: "]=> string(0) "" ["Aantal kaarten lange route: "]=> string(2) "12" ["Aantal kaarten korte route: "]=> string(0) "" ["Bankrekeningnummer: "]=> string(0) "" ["opmerkingen"]=> string(0) "" ["Submit"]=> string(9) "verzenden" } 1 record added
zie ik staan. het formulier staat op: www.pieterstuyvesantkuiertocht.nl/inschrijvingtest/post1.php allaan voornaam en lange route moeten ingevuld worden.
 
Laatst bewerkt:
Het lijkt erop dat je in je script uitgaat van de waarde $_POST['voornaam'], maar degene die je html formulier instuurt is $_POST['Voornaam']

Het is een heel subtiel verschil, maar PHP is wel hoofdlettergevoelig met betrekking tot keys en variabelen ;)

Daarnaast zie ik die andere; $_POST['langeroute'] helemaal niet terugkomen in je formulier; dus die kan hij ook niet vinden...

Het resultaat is dat hij 2x een lege variabele in je INSERT query plakt; dus een lege rij.

Het probleem zit hier niet in mySQL, maar in je PHP... je geeft de verkeerde dingen mee aan je query.
 
Het lijkt erop dat je in je script uitgaat van de waarde $_POST['voornaam'], maar degene die je html formulier instuurt is $_POST['Voornaam']

Het is een heel subtiel verschil, maar PHP is wel hoofdlettergevoelig met betrekking tot keys en variabelen ;)

Daarnaast zie ik die andere; $_POST['langeroute'] helemaal niet terugkomen in je formulier; dus die kan hij ook niet vinden...

Het resultaat is dat hij 2x een lege variabele in je INSERT query plakt; dus een lege rij.

Het probleem zit hier niet in mySQL, maar in je PHP... je geeft de verkeerde dingen mee aan je query.

Ik heb alles veranderd in Voornaam. Nu krijg ik de volgende foutmelding:
Code:
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 ') VALUES ('Jacob')' at line 1
Wat doe ik fout?
 
PHP:
<input name="Achternaam:&nbsp;" type="text" id="achternaam">

Dat is een vrij rare naam voor een form-element.

Je kunt er beter:

PHP:
<input name="Achternaam" type="text" id="achternaam">

van maken. En zo ook voor de andere input elements
 
PHP:
<input name="Achternaam:&nbsp;" type="text" id="achternaam">

Dat is een vrij rare naam voor een form-element.

Je kunt er beter:

PHP:
<input name="Achternaam" type="text" id="achternaam">

van maken. En zo ook voor de andere input elements

Verweken gaat nu goed. Nu kriijg ik alleen nog geen timstamp. En ik wil graag een bevestigingspagina. Ik heb deze gemaakt. Maar die werkt niet.
PHP:
<?php
if(!empty($_POST)) {
echo ("<h2>U hebt de volgende keuzes gemaakt</h2>");
echo ("Pieter stuyvesant kuiertocht en: <br><br>");
reset ($_POST);//plaats pointer voor de zwekerheid aan het begin van de array
while (list($element, $waarde) = each ($_POST))  {
if ($element != "Submit"){// vermelding van submit-button uitfilteren
echo ("<b>$element</b>:&nbsp;<b>$waarde</b><br>\n");
}
}
echo("<hr><a href=\"sqlconnect.php\">ja, ik bestel deze kaarten! </a>  | ");echo("<hr><a href=\"javascript:history.go(-1)\">Wijzig&nbsp;formulier</a>");
}else{
echo("U hebt geen gegevens voor de kaarten ingevuld!");
echo("<hr><a href=\"post1.php\">terug </a>");
}
?>
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan