INSERT TO werkt niet in mijn script
<html>
<head>
<title> Een toevoegpagina voor onze tabel Ron </title>
</head>
<body bgcolor="white" text="blue" >
<form method="post" action="adressentoevoegen.php" >
Gelieve uw naam en woonplaats op te geven:
<br>
<br>
Achternaam:
<input type="text" name="achternaam" size="20" maxlength="20" ><br>
Woonplaats:
<input type="text" name="woonplaats" size="20" maxlength="20" ><br>
<br>
<input type="submit" value="toevoegen" >
</form>
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
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
<?php
$achternaam="achternaam";
$woonplaats="woonplaats";
if($achternaam!="" and $woonplaats!="")
{
$connectie=mysql_connect('localhost','root','Ronald08');
mysql_select_db('test');
$toevoegquery="INSERT INTO ron values('$achternaam','$woonplaats')";
$resultaat=mysql_query($toevoegquery);
mysql_close($connectie);
echo "U gegevens zijn toegevoegd!";
}
else
{
echo "U heeft nog niet alle verplichte velden ingevuld!";
}
?>
$achternaam="achternaam";
$woonplaats="woonplaats";
if($achternaam!="" and $woonplaats!="")
{
$connectie=mysql_connect('localhost','root','Ronald08');
mysql_select_db('test');
$toevoegquery="INSERT INTO ron values('$achternaam','$woonplaats')";
$resultaat=mysql_query($toevoegquery);
mysql_close($connectie);
echo "U gegevens zijn toegevoegd!";
}
else
{
echo "U heeft nog niet alle verplichte velden ingevuld!";
}
?>
</body>
</html>
Code (php)
1
$toevoegquery = "INSERT INTO ron (achternaam, woonplaats) VALUES ('$achternaam','$woonplaats')";
dit misschien?
Gewijzigd op 01/01/1970 01:00:00 door Lill-mik
$achternaam = "achernaam";
Dit is niet zo! je moet deze als volgt opvragen:
$achternaam = $_POST['achternaam'];
ik heb je script verbeterd, want er zaten wel wat schoonheidsfoutjes in, zo kun je de if statement beter met empty() maken, en de mysql connectie hoeft niet afgesloten te worden aangezien hij dit zelf doet wanneer hij klaar is.
Ook was je query niet goed, je kunt beter altijd specificeren in welke velden je gaat inserten, als je dit niet doet telt mysql vanaf de eerste kolom wat waarschijnlijk een id kolom is (hoop ik tenminste).
Ook moet je jezelf aanleren variabelen buiten de quotes te halen, als je dan ook nog met een goede editor werkt met kleuren zie je al je variabelen in een oogopslag.
Leer tevens netjes te scripten door in te springen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
mysql_connect('localhost','root','Ronald08');
mysql_select_db('test');
if(!empty($achternaam) && !empty($woonplaats))
{
$achternaam = $_POST['achternaam'];
$woonplaats = $_POST['woonplaats'];
$query = "INSERT INTO ron (achternaam, woonplaats) VALUES ('".$achternaam."','".$woonplaats."')";
$result = mysql_query($query);
echo "Uw gegevens zijn toegevoegd!";
}
else
{
echo "U heeft nog niet alle verplichte velden ingevuld!";
}
?>
mysql_connect('localhost','root','Ronald08');
mysql_select_db('test');
if(!empty($achternaam) && !empty($woonplaats))
{
$achternaam = $_POST['achternaam'];
$woonplaats = $_POST['woonplaats'];
$query = "INSERT INTO ron (achternaam, woonplaats) VALUES ('".$achternaam."','".$woonplaats."')";
$result = mysql_query($query);
echo "Uw gegevens zijn toegevoegd!";
}
else
{
echo "U heeft nog niet alle verplichte velden ingevuld!";
}
?>
zo, dat was het wel geloof ik :)
Gewijzigd op 01/01/1970 01:00:00 door Stefan van Iwaarden
Dan een vraagje van mij en wanneer je bijv. een veld al ingevuld wenst te hebben hoe die je dit vermelden?
@Lissy, bedoel je dat er een veld al ingevuld moet zijn wanneer de pagina wordt geladen? deze kun je dan invullen met het attribuut value = "" van het input type.
Ik ga jouw voorstel proberen :)
Werkt prima == BEDANKT!
Gewijzigd op 01/01/1970 01:00:00 door Lissy Pixel
Zo.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$fout= FALSE;
$showerror="";
if (empty($_POST['waarde'])){
$fout=TRUE
$showerror .= "De waarde van [naam veld] is niet ingevuld<br/>";
}
// en zo verder voor de post velden
//vervolgens
if (!$fout){//geen fouten gevonden
// verwerk het formulier
}
elseif ($fout || $_SERVER['REQUEST_METHOD'] != "post"){//fout gevonden, of formulier nog niet verzonden
// je formulier en evt foutmeldingen laten zien
}
?>
$fout= FALSE;
$showerror="";
if (empty($_POST['waarde'])){
$fout=TRUE
$showerror .= "De waarde van [naam veld] is niet ingevuld<br/>";
}
// en zo verder voor de post velden
//vervolgens
if (!$fout){//geen fouten gevonden
// verwerk het formulier
}
elseif ($fout || $_SERVER['REQUEST_METHOD'] != "post"){//fout gevonden, of formulier nog niet verzonden
// je formulier en evt foutmeldingen laten zien
}
?>
Stefan, gelukt ! Many thanks !!!
Dat is de kern van een goed systeem. Jij neemt nu aan dat iedere query wel zal lukken, maar in werkelijkheid heb je de garantie dat queries vroeg of laat zullen mislukken. Dus altijd controleren of het is gelukt.
Verder moet je altijd de functie mysql_real_escape_string() gebruiken wanneer je variabelen in de query opneemt. Doe je dat niet, krijg je vroeg of laat met een hacker te maken die jouw database om zeep helpt: SQL-injection.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$query = "
SELECT
*
FROM
tabelnaam
WHERE
naam = '".mysql_real_escape_string($_POST['naam'])."'
";
$result = mysql_query($query);
if(!$result){ // query is mislukt
echo 'Mislukt vanwege: '.mysql_error();
echo 'Met query: '.$query;
}
else {
// doe iets met het resultaat
}
// en de rest van je script
?>
$query = "
SELECT
*
FROM
tabelnaam
WHERE
naam = '".mysql_real_escape_string($_POST['naam'])."'
";
$result = mysql_query($query);
if(!$result){ // query is mislukt
echo 'Mislukt vanwege: '.mysql_error();
echo 'Met query: '.$query;
}
else {
// doe iets met het resultaat
}
// en de rest van je script
?>