Gegevens via het web toevoegen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dennis Fei

Dennis Fei

07/04/2012 09:10:31
Quote Anchor link
Met een simpel formulier met een action attribuut dat naar zichzelf verwijst wil ik gegevens via het web toevoegen aan een tabel. Wanneer ik het formulier invul dan wordt er echter niks toegevoegd aan de tabel en ik krijg ook niet de mededeling "Uw gegevens zijn toegevoegd". Weet iemand waar de fout zit in het script?


<html>
<head>
<title>Een toevoegpagina maken voor onze tabel telefoonboek</title>
</head>
<body bgcolor="white" text="blue">
<form method="post" action="adrestoevoegen.php">
<br>
<br>
De voornaam
<input type="text" name="voornaam" size="20" maxlength="20"><br>
De achternaam
<input type="text" name="achternaam" size="20" maxlength="40"><br>
Het adres
<input type="text" name="achternaam" size="40" maxlength="40"><br>
De woonplaats
<input type="text" name="woonplaats" size="20" maxlength="20"><br>
Het telefoonnummer
<input type="text" name="telefoonnummer" size="10" maxlength="10"><br>
<input type="submit" value="adressen toevoegen">
</form>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if($achternaam !="" and $adres !="" and $woonplaats !="" and $telefoonnummer !="")
{

$connectie = mysql_connect('localhost', 'root', '');
mysql_select_db('telefoonboekdb');

$toevoegquery = "INSERT INTO telefoonboektbl
              VALUES('','$voornaam','$achternaam','$adres','$woonplaats', '$telefoonnummer')"
;
$resultaat = mysql_query($toevoegquery);
mysql_close($connectie);
echo "Uw gegevens zijn toegevoegd!";
}

?>

</body>
</html>
 
PHP hulp

PHP hulp

25/11/2024 01:48:14
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

07/04/2012 09:57:43
Quote Anchor link
Even controleren of de query goed gaat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
if ($resultaat) {
    echo 'Uw gegegevens zijn toegevoegd';
}

else {
    echo 'De query:<br>' . $toevoegquery .
        '<br>veroorzaakte deze fout:<br>' . mysql_error();
}

?>
 
Bart V B

Bart V B

07/04/2012 10:04:46
Quote Anchor link
Je vergeet het een en ander.
Hoe zou mysql nu moeten weten in welk kolom welke waarde zou moeten inserten? :P

Even een opzetje:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
$connectie
= mysql_connect('localhost', 'root', '');
mysql_select_db('telefoonboekdb');

if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    $toevoegquery = "INSERT INTO telefoonboektbl(
                                voornaam,
                                achternaam,
                                adres,
                                woonplaats,
                                telefoonnummer
                                )VALUES('"
.mysql_real_escape_string($_POST['voornaam'])."',
                                        '"
.mysql_real_escape_string($_POST['achternaam'])."',
                                        '"
.mysql_real_escape_string($_POST['adres'])."',
                                        '"
.mysql_real_escape_string($_POST['woonplaats'])."',
                                        '"
.mysql_real_escape_string($_POST['telefoonnummer'])."')";
    
    $resultaat = mysql_query($toevoegquery);
    
    if(!$resultaat)
    {

        echo 'Oeps, er ging wat mis..';
    }

    else
    {
        echo 'adres toegevoegd.';
    }
}
    

?>


<form method="post" action="adrestoevoegen.php">
<br>
<br>
De voornaam
<input type="text" name="voornaam" size="20" maxlength="20"><br>
De achternaam
<input type="text" name="achternaam" size="20" maxlength="40"><br>
Het adres
<input type="text" name="adres" size="40" maxlength="40"><br>
De woonplaats
<input type="text" name="woonplaats" size="20" maxlength="20"><br>
Het telefoonnummer
<input type="text" name="telefoonnummer" size="10" maxlength="10"><br>
<input type="submit" value="adressen toevoegen">
</form>
Gewijzigd op 07/04/2012 11:45:12 door Bart V B
 
Erwin H

Erwin H

07/04/2012 10:23:27
Quote Anchor link
Bart V B op 07/04/2012 10:04:46:
Je vergeet het een en ander.
Hoe zou mysql nu moeten weten in welk kolom welke waarde zou moeten inserten? :P

Als je geen kolommen opgeeft in het INSERT statement dan gaat mysql ervan uit dat er een waarde wordt gegeven voor elke kolom in de tabel, in de volgorde zoals de kolommen zijn gedefinieerd. Strict genomen hoef je dus geen kolommen mee te geven.

Dat gezegd hebbende, ik vind het geen nette methode. Ik ben het dan ook helemaal eens met je verbetering om wel alle kolommen te benoemen. Niet alleen is het foutbestendiger (als je later nog eens een kolom toevoegt krijg je geen problemen), het is ook nog eens efficienter omdat je met het benoemen van de kolommen niet alle kolommen hoeft mee te nemen. Kolommen met automatische waardes of waardes die niet ingevuld hoeven te worden kan je dan dus weglaten.
 
Bart V B

Bart V B

07/04/2012 10:40:10
Quote Anchor link
Dan klopt het nog niet zoals je zelf al zegt. :)

Als je dus met een lege waarde begint, dan komen je kolommen niet meer overeen.

Stel je eerst kolom is een int en je probeert er een stuk tekst in te proppen, dan kan je heel lang gaan lopen zoeken waarom het niet werkt.

En wat dacht je van een UPDATE query?
Dan word het helemaal spannend.

Gewoon de kolommen benoemen, en je bent van het gehele probleem af.
Gewijzigd op 07/04/2012 10:43:04 door Bart V B
 
Dennis Fei

Dennis Fei

07/04/2012 10:57:03
Quote Anchor link
Bart van B wanneer ik jou script toepas en op de submit knop klik dan krijg ik geen enkele melding en er wordt ook niks toegevoegd in de tabel. Wellicht enige idee waar dat aan kan liggen?
 
Erwin H

Erwin H

07/04/2012 11:00:09
Quote Anchor link
Bart, ik ben het helemaal met je eens :-)
Enige wat ik wilde zeggen is dat het wel kan. Die '' aan het begin (lege waarde) kan best voor een auto_increment zijn. Als je een auto_increment hebt op een int veld en je geeft er een lege waarde aan dan zal mysql dat zien als geen waarde en de automatisch gegenereerde waarde eraan geven via de auto_increment. Je krijgt wel een warning overigens, maar als je die niet uitleest is er natuurlijk niets aan de hand (ahum).
 
Obelix Idefix

Obelix Idefix

07/04/2012 11:08:25
Quote Anchor link
Lees, om te beginnen, eens een basistut door, als je vaker met PHP wilt gaan werken.

Als je helemaal niets te zien krijg in de code van Bart, wordt het debuggen.
Voeg in de code van Bart op regel 7 eens in
echo 'verwerken formulier;

en op regel 18:
echo $toevoegquery;

Krijg je dan wel wat te zien?
 
Dennis Fei

Dennis Fei

07/04/2012 11:23:36
Quote Anchor link
Code hinting geeft aan dat er iets nog niet correct is, waarschijnlijk een teken dat ergens niet goed staat. Wanneer ik tijd heb straks ga ik het oplossen. Als ik eruit bent vermeld ik dat wel. Bedankt voor jullie phphulp.
 
Bart V B

Bart V B

07/04/2012 11:44:20
Quote Anchor link
had nog geen koffie op :)
REQUEST_METHOD moet het zijn..
Typo
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    $toevoegquery = "INSERT INTO telefoonboektbl(
                                voornaam,
                                achternaam,
                                adres,
                                woonplaats,
                                telefoonnummer
                                )VALUES('"
.mysql_real_escape_string($_POST['voornaam'])."',
                                        '"
.mysql_real_escape_string($_POST['achternaam'])."',
                                        '"
.mysql_real_escape_string($_POST['adres'])."',
                                        '"
.mysql_real_escape_string($_POST['woonplaats'])."',
                                        '"
.mysql_real_escape_string($_POST['telefoonnummer'])."')";
    
    $resultaat = mysql_query($toevoegquery);
    
    if(!$resultaat)
    {

        echo 'Oeps, er ging wat mis..';
    }

    else
    {
        echo 'adres toegevoegd.';
    }
}
    

?>
 
Dennis Fei

Dennis Fei

07/04/2012 12:42:04
Quote Anchor link
Het laatste script van jouw werkt Bart V B
;) SUPER
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.