Gastboek, Gegevens plaatsen in database loopt mis
Ik ben een website aan het maken voor een jeugdvereniging waar ik bij zit en tot nu toe liep dat allemaal soepeltjes. Ik heb redelijk verstand van html en css, maar php blijkt toch wat moeilijker te zijn voor een beginner. :$
Ik ben nu bezig met een gastenboek, want Tboek is niet echt een geweldige oplossing. Ik heb mijn registratie script van mijn inlog systeem erbij gepakt en heb deze zodanig bewerkt dat het script alleen de nodige dingen zou posten in mijn database. (inlogscript komt van: http://www.phphulp.vindme.nl/AKLogin/code/index.php )
Mijn registratie script werkt wel, maar na aanpassing voor mijn gastenboek kan het script de gegevens niet in de database plaatsen. (query error)
Registratiescript is te vinden in bovenstaande link...
Mijn aangepaste gastenboek script:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?PHP
/* Kijken of er iets gepost wordt. */
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
/* Kijken of er op de knop GO wordt geklikt. */
if(isset($_POST['Go']))
{
/* Kijken of er een naam is ingevuld. */
if(isset($_POST['Naam']) && $_POST['Naam'] != '')
{
/* Kijken of er een email adres is ingevuld. */
if(isset($_POST['Email']) && $_POST['Email'] != '')
{
/* Kijken of het email adres langer dan 5 is. */
if(strlen($_POST['Email']) > 5 )
{
/* Kijken of het email adres wel geldig is. */
if(ereg('^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$', $_POST['Email']))
{
/* Kijken of er een bericht is ingevuld. */
if(isset($_POST['Bericht']) && $_POST['Bericht'] != '')
{
/* Query uitvoeren om de gegevens in de database te plaatsen. */
$cQuery =
"
INSERT INTO
gastenboek
(
Naam,
Email,
Bericht
)
VALUES
(
'".mysql_real_escape_string($_POST['Naam'])."',
'".mysql_real_escape_string($_POST['Email'])."',
'".mysql_real_escape_string($_POST['Bericht'])."',
'".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."',
'".mysql_real_escape_string( 0 )."',
)
";
/* Resultaat van de query. */
$cResultaat = mysql_query($cQuery);
/* Kijken of de query is gelukt. */
if(!$cResultaat)
{
/* Fout opgetreden met invoeren van gegevens. */
echo 'Er is een fout opgetreden met het aanmaken van jouw bericht, <a href="javascript: history.go(-1)"class="link_orange">Terug</a>.';
exit();
}
else
{
/* Account is succesvol aangemaakt. */
echo 'Bericht succesvol aangemaakt. U moet uw account eerst activeren om in te kunnen loggen.<br>';
}}
else
{
/* bericht is niet geldig. */
echo 'U heeft geen bericht ingevult, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
} }
else
{
/* Email adres is niet geldig. */
echo 'Dit email adres is niet geldig, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
else
{
/* Email adres is te kort. */
echo 'Dit email adres is te kort, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
else
{
/* Geen email adres ingevuld. */
echo 'Er is geen email adres ingevuld, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
else
{
/* Geen gnaam ingevuld. */
echo 'U heeft geen naam ingevuld, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
}
?>
/* Kijken of er iets gepost wordt. */
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
/* Kijken of er op de knop GO wordt geklikt. */
if(isset($_POST['Go']))
{
/* Kijken of er een naam is ingevuld. */
if(isset($_POST['Naam']) && $_POST['Naam'] != '')
{
/* Kijken of er een email adres is ingevuld. */
if(isset($_POST['Email']) && $_POST['Email'] != '')
{
/* Kijken of het email adres langer dan 5 is. */
if(strlen($_POST['Email']) > 5 )
{
/* Kijken of het email adres wel geldig is. */
if(ereg('^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$', $_POST['Email']))
{
/* Kijken of er een bericht is ingevuld. */
if(isset($_POST['Bericht']) && $_POST['Bericht'] != '')
{
/* Query uitvoeren om de gegevens in de database te plaatsen. */
$cQuery =
"
INSERT INTO
gastenboek
(
Naam,
Email,
Bericht
)
VALUES
(
'".mysql_real_escape_string($_POST['Naam'])."',
'".mysql_real_escape_string($_POST['Email'])."',
'".mysql_real_escape_string($_POST['Bericht'])."',
'".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."',
'".mysql_real_escape_string( 0 )."',
)
";
/* Resultaat van de query. */
$cResultaat = mysql_query($cQuery);
/* Kijken of de query is gelukt. */
if(!$cResultaat)
{
/* Fout opgetreden met invoeren van gegevens. */
echo 'Er is een fout opgetreden met het aanmaken van jouw bericht, <a href="javascript: history.go(-1)"class="link_orange">Terug</a>.';
exit();
}
else
{
/* Account is succesvol aangemaakt. */
echo 'Bericht succesvol aangemaakt. U moet uw account eerst activeren om in te kunnen loggen.<br>';
}}
else
{
/* bericht is niet geldig. */
echo 'U heeft geen bericht ingevult, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
} }
else
{
/* Email adres is niet geldig. */
echo 'Dit email adres is niet geldig, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
else
{
/* Email adres is te kort. */
echo 'Dit email adres is te kort, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
else
{
/* Geen email adres ingevuld. */
echo 'Er is geen email adres ingevuld, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
else
{
/* Geen gnaam ingevuld. */
echo 'U heeft geen naam ingevuld, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
}
?>
<form id="GB" name="Gastenboek bericht plaatsen" method="post" action="">
<table width="303" border="0">
<tr>
<td><p>Naam:</p></td>
<td><input type="text" name="Naam" /class="tekst"></td>
</tr>
<tr>
<td><p>Email Adres:</p></td>
<td><input type="text" name="Email" /class="tekst"></td>
</tr>
<tr>
<td><p>Bericht:</p></td>
<td><input type="text" name="Bericht" /class="tekst1"></td>
</tr>
<tr>
<td><br><input name="Go" type="submit" id="Go" value=" Verstuur * " /class="btn"></td></tr>
</table>
</form>
Heeft iemand een oplossing hier voor, ik met mijn totaal geen php ervaring, weet niet wat ik moet doen. (A)
alvast bedankt!
Kijk is goed naar de komma's bij je query. De komma's na email en ".mysql_real_escape_string( 0 )."' moeten weg.
die laatste comma op regel 40 impliceert dat er meer moet komen... wat t niet doet.
maar deze was ook al opgemerkt, sorry
Gewijzigd op 01/01/1970 01:00:00 door koen
Ik heb de komma na '".mysql_real_escape_string( 0 )."' weggehaald,
maar nog steeds krijg ik een error (A)
Gewijzigd op 01/01/1970 01:00:00 door Stef van de Ven
je probeert trouwens een stuk of 4 values te proppen in 2 cellen
Gewijzigd op 01/01/1970 01:00:00 door koen
Dit betekend dus dat de query niet gelukt is blijkbaar...
namelijk:
naam, email
Dit is wat er nu staat, dit zou toch gewoon goed moeten zijn? :S
Of wat moet ik anders veranderen dan?
Code (php)
1
2
2
'".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."',
'".mysql_real_escape_string( 0 )."',
'".mysql_real_escape_string( 0 )."',
waar laat je deze waardes dan?
Ik heb die dingen gewoon gekopieerd zonder te weten wat ze eigenlijk doen.
Ik heb deze twee weggehaald en nu kunnen de berichten worden opgeslagen in de database.
Nu moet ik nog een manier zien te vinden om ze uit de database te halen en ze te posten op een andere pagina, dit kan ik misschien nog wel ergens vandaan halen.
In ieder geval, hartelijk bedankt voor je hulp!
Groetjes,
Stef van de Ven
en dan die printen of echo-en
dat zal niet al te moeilijk zijn.
en juist op die simpelste dingen lopen de meeste scripts vast.
succes ermee (Y)
Bouw foutafhandeling in dan hoef je bij een eventuele volgende fout niet meer te zoeken.
elke if geeft op zijn beurt een foutmelding, maar nu is het in ieder geval opgelost.
Gewijzigd op 01/01/1970 01:00:00 door koen
Ik vind echo 'Er is een fout opgetreden .......'; nou niet een fatsoenlijke foutafhandeling. Zo weet je eigenlijk nog niks.
maar zoals je ziet geeft ie bij elke stap een andere foutmelding
er is een fout opgetreden.....
is namelijk alleen als de afbeelding niet gemaakt is,
anders komt er te staan, dat de naam of email verkeerd is.
De 'echte' error staat in mysql_error() en daar staat letterlijk de fout in aangegeven. Lijkt mij toch een stuk duidelijker.
je hebt helemaal gelijk.