Gegevens toevoegen in database via ODBC koppeling.
Ik wil graag klantgegevens invoeren in een formulier dat zich daarna wegschrijft in mijn Acces database. Ik maak dus gebruik van een ODBC-koppeling.
Echter heb ik een probleempje.. Ik krijg telkens, mijn eigengemaakte, foutmelding.
(Fout, gegevens zijn niet ingevoerd)
Om te controleren of er een fout in mijn PHP script heb ik een test tabel gemaakt. Hierin werden de gegevens wel toegevoegd. Hopelijk kunnen jullie mij hierbij helpen.
het formulier:
klant_toevoegen.php
<html>
<body>
<h2>Klant toevoegen</h2>
<form method="post" action="klant_toevoegenscript.php">
Bedrijfsnaam: <input type="text" name="Bedrijfsnaam" size="30"><br>
Voornaam: <input type="text" name="Voornaam" size="30"><br>
Tussenvoegsel: <input type="text" name="Tussenvoegsel" size="30"><br>
Achternaam: <input type="text" name="Achternaam" size="30"><br>
Straat: <input type="text" name="Straat" size="30"><br>
Huisnummer: <input type="text" name="Huis#" size="30"><br>
Huisnummer toevoeging: <input type="text" name="Huis#toevoeging" size="30"><br>
Postcode: <input type="text" name="Postcode" size="30"><br>
Plaats: <input type="text" name="Plaats" size="30"><br>
<br>
<hr>
<input type="submit" value="Invoegen"><input type="Reset" Value="Leegmaken"><br>
</form>
</body>
</html>
het script:
klant_toevoegenscript.php
<html>
<body>
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$conn=odbc_connect('hoogesteen','','');
if (!$conn)
{exit("Connection Failed: " . $conn);
exit();
}else{
$query="INSERT INTO TBL_Klant (Bedrijfsnaam, Voornaam, Tussenvoegsel, Achternaam, Straat, Huis#, Huis#toevoeging, Postcode, Plaats)
";
$query .= "VALUES ('";
$query .= $_POST["Bedrijfsnaam"] ."','" ;
$query .= $_POST["Voornaam"] ."','" ;
$query .= $_POST["Tussenvoegsel"] ."','" ;
$query .= $_POST["Achternaam"] ."','" ;
$query .= $_POST["Straat"] ."','" ;
$query .= $_POST["Huis#"] ."','" ;
$query .= $_POST["Huis#toevoeging"] ."','" ;
$query .= $_POST["Postcode"] ."','" ;
$query .= $_POST["Plaats"] ."');" ;
$rs=odbc_exec($conn, $query) or die ("Fout! gegevens zijn niet ingevoerd");
}
?>
$conn=odbc_connect('hoogesteen','','');
if (!$conn)
{exit("Connection Failed: " . $conn);
exit();
}else{
$query="INSERT INTO TBL_Klant (Bedrijfsnaam, Voornaam, Tussenvoegsel, Achternaam, Straat, Huis#, Huis#toevoeging, Postcode, Plaats)
";
$query .= "VALUES ('";
$query .= $_POST["Bedrijfsnaam"] ."','" ;
$query .= $_POST["Voornaam"] ."','" ;
$query .= $_POST["Tussenvoegsel"] ."','" ;
$query .= $_POST["Achternaam"] ."','" ;
$query .= $_POST["Straat"] ."','" ;
$query .= $_POST["Huis#"] ."','" ;
$query .= $_POST["Huis#toevoeging"] ."','" ;
$query .= $_POST["Postcode"] ."','" ;
$query .= $_POST["Plaats"] ."');" ;
$rs=odbc_exec($conn, $query) or die ("Fout! gegevens zijn niet ingevoerd");
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
echo("De volgende gegevens zijn ingevoegd:<br>\n");
echo("Bedrijfsnaam: <b>". $_POST["Bedrijfsnaam"] . "</b><br>");
echo("Voornaam: <b>". $_POST["Voornaam"] . "</b><br>");
echo("Tussenvoegsel: <b>". $_POST["Tussenvoegsel"] . "</b><br>");
echo("Straat: <b>". $_POST["Straat"] . "</b><br>");
echo("Huisnummer <b>". $_POST["Huis#"] . "</b><br>");
echo("Huisnummer toevoeging: <b>". $_POST["Huis#toevoeging"] . "</b><br>");
echo("Postcode: <b>". $_POST["Postcode"] . "</b><br>");
echo("Plaats: <b>". $_POST["Plaats"] . "</b><br>");
odbc_close( $conn);
?>
echo("De volgende gegevens zijn ingevoegd:<br>\n");
echo("Bedrijfsnaam: <b>". $_POST["Bedrijfsnaam"] . "</b><br>");
echo("Voornaam: <b>". $_POST["Voornaam"] . "</b><br>");
echo("Tussenvoegsel: <b>". $_POST["Tussenvoegsel"] . "</b><br>");
echo("Straat: <b>". $_POST["Straat"] . "</b><br>");
echo("Huisnummer <b>". $_POST["Huis#"] . "</b><br>");
echo("Huisnummer toevoeging: <b>". $_POST["Huis#toevoeging"] . "</b><br>");
echo("Postcode: <b>". $_POST["Postcode"] . "</b><br>");
echo("Plaats: <b>". $_POST["Plaats"] . "</b><br>");
odbc_close( $conn);
?>
</body>
</html>
hoogesteen is de DNS naam die ik heb gegeven om te kunnen verbinden.
Verder heb ik dus een Access Tabel genaamd TBL_Klant. Hierin zitten de volgende velden:
Klant# autonummering
Bedrijfsnaam text
Voornaam text vereist
Tussenvoegsel text
Achternaam text vereist
Straat text vereist
Huis# nummeriek vereist
Huis#toevoeging text
Postcode text vereist
Plaats text vereist
Hopelijk kunnen jullie mij hierbij helpen.
Roy Jeurissen op 12/10/2010 10:37:03:
Ik krijg telkens, mijn eigengemaakte, foutmelding.
Zorg dus dat de 'echte' error op het scherm verschijnt.
Script is lek => SQL-Injection.
SanThe Nvt op 12/10/2010 10:42:07:
Zorg dus dat de 'echte' error op het scherm verschijnt.
Script is lek => SQL-Injection.
Roy Jeurissen op 12/10/2010 10:37:03:
Ik krijg telkens, mijn eigengemaakte, foutmelding.
Zorg dus dat de 'echte' error op het scherm verschijnt.
Script is lek => SQL-Injection.
Ik ben nog een redelijke beginner.. om het maar even erbij te vermelden.
Heb je een idee hoe ik de "echte" error tevoorschijn kan toveren?
SanThe Nvt op 12/10/2010 10:46:17:
bedankt, even een kijkje nemen.
Toevoeging op 12/10/2010 11:00:58:
Ik kreeg een error met alleen maar een code, namelijk: 37000
Deze heb ik opgezocht en bestaat uit:
ODBC Error Code = 37000 (Syntax error or access violation)
kunnen jullie hier iets mee?
Toevoeging op 12/10/2010 11:12:57:
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
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
<?php $query = "INSERT INTO TBL_Klant (
Bedrijfsnaam,
Voornaam,
Tussenvoegsel,
Achternaam,
Straat,
Huis#,
Huis#toevoeging,
Postcode,
Plaats
)
VALUES ('
'".$_POST["Bedrijfsnaam"]."',
'".$_POST["Voornaam"]."',
'".$_POST["Tussenvoegsel"]."',
'".$_POST["Achternaam"]."',
'".$_POST["Straat"]."',
'".$_POST["Huis#"]."',
'".$_POST["Huis#toevoeging"]."',
'".$_POST["Postcode"]."',
'".$_POST["Plaats"]."'
)
";
probeer het is op die manier
Bedrijfsnaam,
Voornaam,
Tussenvoegsel,
Achternaam,
Straat,
Huis#,
Huis#toevoeging,
Postcode,
Plaats
)
VALUES ('
'".$_POST["Bedrijfsnaam"]."',
'".$_POST["Voornaam"]."',
'".$_POST["Tussenvoegsel"]."',
'".$_POST["Achternaam"]."',
'".$_POST["Straat"]."',
'".$_POST["Huis#"]."',
'".$_POST["Huis#toevoeging"]."',
'".$_POST["Postcode"]."',
'".$_POST["Plaats"]."'
)
";
probeer het is op die manier
[Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.
Helaas heeft het niet geholpen..kreeg een wit scherm.
Toevoeging op 12/10/2010 11:31:46:
Zou het kunnen liggen aan het veld Klant#. We hebben aangegeven dat dit autonummering is. Moet dit veld ook gewoon vermeld worden in het formulier/script?
Gewijzigd op 12/10/2010 11:30:11 door Roy Jeurissen
had gewoon moeten zijn, en nee een autonummering hoeft niet gemeld te worden
had een typo, Code (php)
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
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
<?php $query = "INSERT INTO TBL_Klant (
Bedrijfsnaam,
Voornaam,
Tussenvoegsel,
Achternaam,
Straat,
Huis#,
Huis#toevoeging,
Postcode,
Plaats
)
VALUES (
'".$_POST["Bedrijfsnaam"]."',
'".$_POST["Voornaam"]."',
'".$_POST["Tussenvoegsel"]."',
'".$_POST["Achternaam"]."',
'".$_POST["Straat"]."',
'".$_POST["Huis#"]."',
'".$_POST["Huis#toevoeging"]."',
'".$_POST["Postcode"]."',
'".$_POST["Plaats"]."'
)
";
?>
Bedrijfsnaam,
Voornaam,
Tussenvoegsel,
Achternaam,
Straat,
Huis#,
Huis#toevoeging,
Postcode,
Plaats
)
VALUES (
'".$_POST["Bedrijfsnaam"]."',
'".$_POST["Voornaam"]."',
'".$_POST["Tussenvoegsel"]."',
'".$_POST["Achternaam"]."',
'".$_POST["Straat"]."',
'".$_POST["Huis#"]."',
'".$_POST["Huis#toevoeging"]."',
'".$_POST["Postcode"]."',
'".$_POST["Plaats"]."'
)
";
?>
Ik heb het beginscript veranderd naar dit. Krijg alsnog een witscherm. Wellicht heb ik iets verkeerds gedaan.
Ik zou geen #-jes in de veldnamen gebruiken. Dus in Huis# en Huis#toevoeging.
SanThe Nvt op 12/10/2010 12:05:02:
Ik zou geen #-jes in de veldnamen gebruiken. Dus in Huis# en Huis#toevoeging.
Hey! ik heb het veld 'huis#' veranderd naar 'huisnummer' en hetzeflde bij huisnummertoevoeging gedaan. Nu werkt het inderdaad! had nooit geweten dat een # niet in een veldnaam gebruikt mag worden.. weer iets geleerd.
In iedergeval hartstikke bedankt voor de hulp!