Ik heb nu zoveel pogingen gedaan om op mijn gastenboek een controle te krijgen op de invulvelden. Oftewel schrijft hij dan geen berichten meer in de database, oftewel krijg ik een error, ...
Altijd wel iets mis.
Zou er iemand me kunnen helpen?

Het volledige schrijfgedeelte staat hieronder. Op de site moet GEEN controle komen.
Er staat ook wel een mailfunctie in, ik hoop dat die er kan blijven...

<?php

include("inc_connect.php"); //verbinding met de databse

if (empty($_POST)){
//bekijk of de pagina net geopend word, of er al bericht is gepost
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Gastenboek</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<h2>Teken het gastenboek!</h2>
<form name="form1" method="post" action="<? echo($_SERVER["PHP_SELF"]); ?>">

<table border="0">
<tr align="left" valign="top">
<td align="right">Voornaam</td>
<td>
<input name="voornaam" type="text" id="voornaam" size="30"></td>
</tr>
<tr align="left" valign="top">
<td align="right">Achternaam</td>
<td>
<input name="achternaam" type="text" id="achternaam" size="30"></td>
</tr>
<tr align="left" valign="top">
<td align="right">e-mailadres</td>
<td>
<input name="site" type="text" id="site" size="30"></td>
</tr>
<tr align="left" valign="top">
<td align="right">Site</td>
<td>
<input name="email" type="text" id="email" size="30"></td>
</tr>
<tr align="left" valign="top">
<td align="right">Uw bijdrage:</td>
<td>
<textarea name="bijdrage" cols="45" rows="10"></textarea></td>
</tr>
<tr align="left" valign="top">
<td align="right">&nbsp;</td>
<td><input type="submit" name="Submit" value="Verzenden">
<input name="reset" type="reset" id="reset" value="Leegmaken">
<input name="datum" type="hidden" id="datum" value="<?php echo(date("$date"));?>"></td>
</tr>
</table>
</form>
<p><a href="gastenboek_lees.php">Bekijk alle bijdragen in het gastenboek</a></p>
</body>
</html>
<?
}else{
$query="INSERT INTO gastenboek1 (voornaam, achternaam, email, site, bijdrage, datum) ";
$query .= "VALUES ('";
$query .= $_POST["voornaam"] ."', '" ;
$query .= $_POST["achternaam"] ."', '" ;
$query .= $_POST["email"] ."', '" ;
$query .= $_POST["site"] ."', '" ;
$query .= $_POST["bijdrage"] ."', '";
$query .= $_POST["datum"] . "');" ;
$result = mysql_query($query) or die ("FOUT: " . mysql_error());

/*Emailadressen uit db halen */

$resultaat = mysql_query("SELECT email FROM users1") or die ("FOUT: ".mysql_error());

/* emailadressen in 1 variabele zetten gescheiden door komma's */
$i = 0 ;
while ($row = mysql_fetch_array($resultaat)){
if ($i == 0){
$emailadressen = $row['email'];
} else {
$emailadressen .= ", ".$row['email'];
}
$i++;
}

/* mailtje versturen */

$checkmail = mail("".$emailadressen."","Bericht in Gastenboek geplaatst door: ".$_POST['voornaam']." ".$_POST['achternaam']."","".$_POST['bijdrage']."");
if (!$checkmail){
echo "Fout bij versturen van een email...";
}
echo("<h2>Bedankt voor uw bijdrage!</h2>\n");
echo("De volgende gegevens zijn ingevoegd:<br>\n");
echo("Voornaam: <b>". $_POST["voornaam"] . "</b><br>");
echo("Achternaam: <b>". $_POST["achternaam"] . "</b><br>");
echo("E-mailadres: <b>". $_POST["email"] . "</b><br>");
echo("Site: <b>". $_POST["site"] . "</b><br>");
echo("Uw bijdrage: <b>". $_POST["bijdrage"] . "</b><br>");
echo("<hr><a href=\"gastenboek_schrijf.php\">Nog een bijdrage schrijven</a> |
<a href=\"gastenboek_lees.php\">Overzicht van alle bijdragen</a>");
}
?>
Misschien moet je eens je errors vermelden? :)
action="<? echo($_SERVER["PHP_SELF"]); ?>">

Moet dat niet gewoon $PHP_SELF zijn ?
//check alle variabelen
if ($HTTP_POST_VARS["voornaam"] && $HTTP_POST_VARS["achternaam"] && enz...)
{
/*Jou tabel zetten en hier kijken we of het bericht niet reeds bestaat en anders zetten we het bericht in de db.
*/
$checksql = "SELECT id FROM $tabel WHERE site = '$HTTP_POST_VARS[site]' AND bijdrage = '$HTTP_POST_VARS[bijdrage]' ";
$checkres = mysql_query($checksql);
if (mysql_num_rows($checkres) >= 1)
{
echo "Dit is al eens verstuurd.";
}
else
{
// de rest van jou code .

Bij het mailen zou ik toch nog maar eens zien of het juist is ingevuld die functie mail.

mail($to, $subject, $bericht, $headers )
action="<? echo($_SERVER["PHP_SELF"]); ?>">

Moet dat niet gewoon $PHP_SELF zijn ?


Nee hoor $_SERVR["PHP_SELF"]; is net het het zelfde $_HTTP_POST_VARS

Superglobals dus
<?
if($submit){
if(strlen($_POST["voornaam"] )==0){
$error_msg[] = "Uw moet een geldige voornaam opgeven!<br>";
}
if((strlen($_POST["voornaam"] )!=0) && (strlen($_POST["voornaam"] ) < 3)){
$error_msg[] .= "U voornaam moet minimaal uit 3 tekens bestaan!<br>";
}
if(strlen($_POST["achternaam"] )==0){
$error_msg[] = "Uw moet een geldige achternaam opgeven!<br>";
}
if((strlen($_POST["achternaam"] )!=0) && (strlen($_POST["voornaam"] ) < 3)){
$error_msg[] .= "U achternaam moet minimaal uit 3 tekens bestaan!<br>";
}
if(strlen($_POST["email"] l)==0){
$error_msg[] .= "Vul astublief een geldig e-mail adres in!<br>";
}
if((strlen($_POST["email"] )!=0) && (!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $_POST["email"] ))){ // email moet geldige constructie hebben, bv [email protected]
$error_msg[] .= "E-mail adres is ongeldig, vul dit correct in!<br>";
}
if(strlen($_POST["bijdrage"] t)==0){
$error_msg[] .= "Vul een bericht in!<br>";
}
if((strlen($_POST["bijdrage"] )!=0) && (strlen($_POST["bijdrage"] ) < 5)){
$error_msg[] .= "Het bericht moet minimaal uit 5 tekens bestaan!<br>";
}
if($error_msg){ // als dingen niet correct zijn ingevult
echo "<font face=verdana size=1>";
echo "Uw bericht kon niet verzonden worden vanwege de volgende redenen: <br><br>";
for($i = 0, $j = 1; $i < 4; $i++, $j++){
if($error_msg[$i]){
echo $j . ". " . $error_msg[$i];
}
}
echo "<br>Ga <a href=javascript:history.go(-1)>terug</a> om het probleem te verhelpen.";
echo "</font>";
}else{
?>
De website word niet gecontroleerd, weet de code niet meer van http:// controle
Hopelijk is de rest duidelijk genoeg, je moet het zelf wel ff inbouwen
Ik heb het er tussen geplaatst, maar het werkt dus niets (waarschijnlijk mijn fout, ben maar een n00b).
Hier is het, waar staat het verkeerd?

<?php

include("inc_connect.php");

if (empty($_POST)){
//bekijk of de pagina net geopend word,
// of er al bericht is gepost
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Gastenboek</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<h2>Teken het gastenboek!</h2>
<form name="form1" method="post" action="<? echo($_SERVER["PHP_SELF"]); ?>">

<table border="0">
<tr align="left" valign="top">
<td align="right">Voornaam</td>
<td>
<input name="voornaam" type="text" id="voornaam" size="30"></td>
</tr>
<tr align="left" valign="top">
<td align="right">Achternaam</td>
<td>
<input name="achternaam" type="text" id="achternaam" size="30"></td>
</tr>
<tr align="left" valign="top">
<td align="right">e-mailadres</td>
<td>
<input name="site" type="text" id="site" size="30"></td>
</tr>
<tr align="left" valign="top">
<td align="right">Site</td>
<td>
<input name="email" type="text" id="email" size="30"></td>
</tr>
<tr align="left" valign="top">
<td align="right">Uw bijdrage:</td>
<td>
<textarea name="bijdrage" cols="45" rows="10"></textarea></td>
</tr>
<tr align="left" valign="top">
<td align="right">&nbsp;</td>
<td><input type="submit" name="Submit" value="Verzenden">
<input name="reset" type="reset" id="reset" value="Leegmaken">
<input name="datum" type="hidden" id="datum" value="<?php echo(date("$date"));?>"></td>
</tr>
</table>
</form>
<p><a href="gastenboek_lees.php">Bekijk alle bijdragen in het gastenboek</a></p>
</body>
</html>
<?
}else{

if($submit){
if(strlen($_POST["voornaam"] )==0){
$error_msg[] = "Uw moet een geldige voornaam opgeven!<br>";
}
if((strlen($_POST["voornaam"] )!=0) && (strlen($_POST["voornaam"] ) < 3)){
$error_msg[] .= "U voornaam moet minimaal uit 3 tekens bestaan!<br>";
}
if(strlen($_POST["achternaam"] )==0){
$error_msg[] = "Uw moet een geldige achternaam opgeven!<br>";
}
if((strlen($_POST["achternaam"] )!=0) && (strlen($_POST["voornaam"] ) < 3)){
$error_msg[] .= "U achternaam moet minimaal uit 3 tekens bestaan!<br>";
}
if(strlen($_POST["email"] )==0){
$error_msg[] .= "Vul astublief een geldig e-mail adres in!<br>";
}
if((strlen($_POST["email"] )!=0) && (!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $_POST["email"] ))){
}
if(strlen($_POST["bijdrage"] )==0){
$error_msg[] .= "Vul een bericht in!<br>";
}
if((strlen($_POST["bijdrage"] )!=0) && (strlen($_POST["bijdrage"] ) < 5)){
$error_msg[] .= "Het bericht moet minimaal uit 5 tekens bestaan!<br>";
}
if($error_msg){ // als dingen niet correct zijn ingevult
echo "<font face=verdana size=1>";
echo "Uw bericht kon niet verzonden worden vanwege de volgende redenen: <br><br>";
for($i = 0, $j = 1; $i < 4; $i++, $j++){
if($error_msg[$i]){
echo $j . ". " . $error_msg[$i];
}
}
}
echo "<br>Ga <a href=javascript:history.go(-1)>terug</a> om het probleem te verhelpen.";
echo "</font>";
}else{

$query="INSERT INTO gastenboek1 (voornaam, achternaam, email, site, bijdrage, datum) ";
$query .= "VALUES ('";
$query .= $_POST["voornaam"] ."', '" ;
$query .= $_POST["achternaam"] ."', '" ;
$query .= $_POST["email"] ."', '" ;
$query .= $_POST["site"] ."', '" ;
$query .= $_POST["bijdrage"] ."', '";
$query .= $_POST["datum"] . "');" ;
$result = mysql_query($query) or die ("FOUT: " . mysql_error());

/*Emailadressen uit db halen */

$resultaat = mysql_query("SELECT email FROM users1") or die ("FOUT: ".mysql_error());

/* emailadressen in 1 variabele zetten gescheiden door komma's */
$i = 0 ;
while ($row = mysql_fetch_array($resultaat)){
if ($i == 0){
$emailadressen = $row['email'];
} else {
$emailadressen .= ", ".$row['email'];
}
$i++;
}

/* mailtje versturen */

$checkmail = mail("".$emailadressen."","Bericht in Gastenboek geplaatst door: ".$_POST['voornaam']." ".$_POST['achternaam']."","".$_POST['bijdrage']."");//email moet geldige constructie hebben, bv [email protected]
if (!$checkmail){
echo "Fout bij versturen van een email...";
}
echo("<h2>Bedankt voor uw bijdrage!</h2>\n");
echo("De volgende gegevens zijn ingevoegd:<br>\n");
echo("Voornaam: <b>". $_POST["voornaam"] . "</b><br>");
echo("Achternaam: <b>". $_POST["achternaam"] . "</b><br>");
echo("E-mailadres: <b>". $_POST["email"] . "</b><br>");
echo("Site: <b>". $_POST["site"] . "</b><br>");
echo("Uw bijdrage: <b>". $_POST["bijdrage"] . "</b><br>");
echo("<hr><a href=\"gastenboek_schrijf.php\">Nog een bijdrage schrijven</a> |
<a href=\"gastenboek_lees.php\">Overzicht van alle bijdragen</a>");
}
}
?>
}else{

if($submit){
if(strlen($_POST["voornaam"] )==0){

$submit moet $Submit worden zie:
<input type="submit" name="Submit" value="Verzenden">
Nu werkt het al beter, alleen zegt het nu steeds:
Ga terug om het probleem te verhelpen.
Zonder een melding van de fout zelf bij te plaatsen.
ik heb het uit geprobeerd op mijn eigen site. Hij doet het gewoon, alleen er word geen achternaam bij mij neergezet. Ik denk wel bij jouw:
Ik weet niet of ik iets heb veranderd dus hier de code:

<?php
include("inc_connect.php");


if (empty($_POST)){
//bekijk of de pagina net geopend word,
// of er al bericht is gepost
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Gastenboek</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<h2>Teken het gastenboek!</h2>
<form name="form1" method="post" action="<? echo($_SERVER["PHP_SELF"]); ?>">

<table border="0">
<tr align="left" valign="top">
<td align="right">Voornaam</td>
<td>
<input name="voornaam" type="text" id="voornaam" size="30"></td>
</tr>
<tr align="left" valign="top">
<td align="right">Achternaam</td>
<td>
<input name="achternaam" type="text" id="achternaam" size="30"></td>
</tr>
<tr align="left" valign="top">
<td align="right">e-mailadres</td>
<td>
<input name="site" type="text" id="site" size="30"></td>
</tr>
<tr align="left" valign="top">
<td align="right">Site</td>
<td>
<input name="email" type="text" id="email" size="30"></td>
</tr>
<tr align="left" valign="top">
<td align="right">Uw bijdrage:</td>
<td>
<textarea name="bijdrage" cols="45" rows="10"></textarea></td>
</tr>
<tr align="left" valign="top">
<td align="right">&nbsp;</td>
<td><input type="submit" name="Submit" value="Verzenden">
<input name="reset" type="reset" id="reset" value="Leegmaken">
<input name="datum" type="hidden" id="datum" value="<?php echo(date("$date"));?>"></td>
</tr>
</table>
</form>
<p><a href="gastenboek_lees.php">Bekijk alle bijdragen in het gastenboek</a></p>
</body>
</html>
<?
}else{

if($submit){
if(strlen($_POST["voornaam"] )==0){
$error_msg[] = "Uw moet een geldige voornaam opgeven!<br>";
}
if((strlen($_POST["voornaam"] )!=0) && (strlen($_POST["voornaam"] ) < 3)){
$error_msg[] .= "U voornaam moet minimaal uit 3 tekens bestaan!<br>";
}
if(strlen($_POST["achternaam"] )==0){
$error_msg[] = "Uw moet een geldige achternaam opgeven!<br>";
}
if((strlen($_POST["achternaam"] )!=0) && (strlen($_POST["achteraam"] ) < 3)){
$error_msg[] .= "U achternaam moet minimaal uit 3 tekens bestaan!<br>";
}
if(strlen($_POST["email"] )==0){
$error_msg[] .= "Vul astublief een geldig e-mail adres in!<br>";
}
if((strlen($_POST["email"] )!=0) && (!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $_POST["email"] ))){
}
if(strlen($_POST["bijdrage"] )==0){
$error_msg[] .= "Vul een bericht in!<br>";
}
if((strlen($_POST["bijdrage"] )!=0) && (strlen($_POST["bijdrage"] ) < 5)){
$error_msg[] .= "Het bericht moet minimaal uit 5 tekens bestaan!<br>";
}
if($error_msg){ // als dingen niet correct zijn ingevult
echo "<font face=verdana size=1>";
echo "Uw bericht kon niet verzonden worden vanwege de volgende redenen: <br><br>";
for($i = 0, $j = 1; $i < 4; $i++, $j++){
if($error_msg[$i]){
echo $j . ". " . $error_msg[$i];
}
}
}
echo "<br>Ga <a href=javascript:history.go(-1)>terug</a> om het probleem te verhelpen.";
echo "</font>";
}else{

$query="INSERT INTO gastenboek1 (voornaam, achternaam, email, site, bijdrage, datum) ";
$query .= "VALUES ('";
$query .= $_POST["voornaam"] ."', '" ;
$query .= $_POST["achternaam"] ."', '" ;
$query .= $_POST["email"] ."', '" ;
$query .= $_POST["site"] ."', '" ;
$query .= $_POST["bijdrage"] ."', '";
$query .= $_POST["datum"] . "');" ;
$result = mysql_query($query) or die ("FOUT: " . mysql_error());

/*Emailadressen uit db halen */

$resultaat = mysql_query("SELECT email FROM user1") or die ("FOUT: ".mysql_error());

/* emailadressen in 1 variabele zetten gescheiden door komma's */
$i = 0 ;
while ($row = mysql_fetch_array($resultaat)){
if ($i == 0){
$emailadressen = $row['email'];
} else {
$emailadressen .= ", ".$row['email'];
}
$i++;
}

/* mailtje versturen */

$checkmail = mail("".$emailadressen."","Bericht in Gastenboek geplaatst door: ".$_POST['voornaam']." ".$_POST['achternaam']."","".$_POST['bijdrage']."");//email moet geldige constructie hebben, bv [email protected]
if (!$checkmail){
echo "Fout bij versturen van een email...";
}
echo("<h2>Bedankt voor uw bijdrage!</h2>\n");
echo("De volgende gegevens zijn ingevoegd:<br>\n");
echo("Voornaam: <b>". $_POST["voornaam"] . "</b><br>");
echo("Achternaam: <b>". $_POST["achternaam"] . "</b><br>");
echo("E-mailadres: <b>". $_POST["email"] . "</b><br>");
echo("Site: <b>". $_POST["site"] . "</b><br>");
echo("Uw bijdrage: <b>". $_POST["bijdrage"] . "</b><br>");
echo("<hr><a href=\"gastenboek_schrijf.php\">Nog een bijdrage schrijven</a> |
<a href=\"gastenboek_lees.php\">Overzicht van alle bijdragen</a>");
}
}
?>
Hetgene wat jij hebt geplaatst, plaatst wel her bericht in de databse, maar doet geen controle op velden meer... :-s
Wat je anders kan doen, is dat je er 2 pagina's van maakt. 1 met het formulier en de ander met controle en verzending

Reageren