gastenboek forumlier controleren

Status
Niet open voor verdere reacties.

tresan

Gebruiker
Lid geworden
25 apr 2004
Berichten
20
Ik wil graag dat mijn formulier bij het gastenboek gecontroleerd word (en aangeeft wanneer er velden niet zijn ingevuld), maar dit heb ik al op een aantal manieren geprobeerd en het wil steeds maar niet lukken. Het is me wel al eens gelukt met een ander script, maar niet met deze.


Het gaat om het volgende script:

<html>
<head>
<title>gastenboek</title>
</head>
<body>
<body background="body.jpg" link="#B3B373" vlink="#B3B373" alink="#B3B373">
<font face="Garamond, Simsun" color="#333301" size="4">
<b>
<center>
<br>
<H1>Gastenboek</H1>
<font face="garamond,simsun" color="#333301" size="4">
<form action="plaats.php" method="post" accept-charset="iso-8859-1">
<p>
Klik <a href="gastenboek.php">hier</a> om het Gastenboek te lezen.
</p>
<p>
Naam: <br>
<input name="naam" type="text" size="30" tabindex="1000">
</p>
<p>
E-mail: <br>
<input name="email" type="text" size="30" tabindex="1001">
</p>
<p>
Woonplaats: <br>
<input name="woonplaats" type="text" size="30" tabindex="1003">
</p>
<p>
Uw bericht: <br>
<textarea name="bericht" rows="8" cols="40" tabindex="1004"></textarea>
</p>
<p>
<input type="reset" value="Wissen">
<input type="submit" name="submit" value="Verstuur" title="Verstuur dit formulier" tabindex="1005">
<br><br><br>
</p>
</b>
</form>
</center>
</font>
</body>
</html>
 
Laat maar zitten! Ik ben er blijkbaar nog niet goed genoeg in!:o :(
 
Laatst bewerkt:
in plaats.php moet je dan even deze regels toevoegen voor je de query uitvoert.

PHP:
if ($_POST['name'] == "")
{
echo"Je bent vergeten een naam in te vullen!<br>";
}
if($_POST['email'] == "")
{
echo"Je bent vergeten een email adres in te vullen!<br>";
}
if($_POST['woonplaats'] == "")
{
echo"Je bent vergeten een woonplaats in te vullen!<br>";
}
if($_POST['bericht'] == "")
{
echo"Je bent vergeten een bericht in te vullen!<br>";
}
else
{
 // hier zet je dan de query neer.
}

Het kan dacht ik ook korter, maar die code is mij even ontgaan:(
 
Parse error: parse error, unexpected ':', expecting ',' or ';' in index.php on line 30

deze foutmelding krijg ik nu.
index.php is het door mij hierboven genoemde script.
 
Volgens mij klopt die 2e index die gepost is helemaal niet, aangezien de geplaatste gegevens (naam, email, woonplaats en bericht) naar plaats.php gaan
<form action="plaats.php" method="post" accept-charset="iso-8859-1">
dus moet je ook daar de controle uitvoeren.
 
Om even lekker z**kerig te doen, steeloxp: je script is best ranzig, evenals de (fout)meldingen die je aan de gebruiker toont. Erg op de persoon afgespeeld (wat gebruikers niet fijn vinden om te zien: 'tis jouw schuld !'), niet erg consistent (dan weer u, dan weer je) en er worden ranzige technieken in gebruikt (ereg* functies). Verder laat je HTML ook wat te wensen over. Maar je bent nog een beginner, dus opzich mag 't dan nog ... :rolleyes:

Tha Devil: Die simpele controle kan niet veel korter. Je kan wel een geavanceerd invoercontrolesysteem schrijven die alles voor je controleerd, maar da's alleen maar meer werk en meestal bied dit niet een al te geweldige uitkomst, laat staan praktisch.

En kan men in het vervolg de
PHP:
 tags gebruiken ?[/size]
 
Ik meende dat er een 1 script regel is die alle lege velden in een keer controleerd is dat niet zoiets als dit:

PHP:
if ($_POST == "")
{
echo"U bent vergeten iets in te vullen.";
}
else
{
$query = ...
}

maar idd als je iets in script doet gebruik dan
PHP:
 tags[/b]
 
oke tha davil, ik begrijp je nu.

Sorry ik had je bericht gelezen na het bericht van steeloxp, en had niet helemaal door dat het daar geen reactie op was. Ik vond het al zo dubbel allemaal.

Maar met jou antwoord kan ik al meer geloof ik. ik krijg iid een fout melding als ik niks in vul, maar als ik (wel) een naam invul krijg ik ook een foutmelding dat ik het NIET heb in gevuld.
Dit geld niet voor het e-mail adres, de woonplaats en het bericht.
Wel is het zo dat wanneer ik een het bericht vak invul, hij het bericht, of ik nou wel of niet de andere velden heb ingevuld, gaat plaatsen. Er veranderd dan dus niks aan de situatie zoals ie was.

Het laaste (super korte) scriptje dat je net stuurde werk geloof ik niet. Ik heb het er ook even ingezet en er gebeurde niks.
 
Ik zie al dat ik een klein foutje heb gemaakt:
PHP:
if ($_POST['naam'] == "")
{
echo"Je bent vergeten een naam in te vullen!<br>";
}
if($_POST['email'] == "")
{
echo"Je bent vergeten een email adres in te vullen!<br>";
}
if($_POST['woonplaats'] == "")
{
echo"Je bent vergeten een woonplaats in te vullen!<br>";
}
if($_POST['bericht'] == "")
{
echo"Je bent vergeten een bericht in te vullen!<br>";
}
else
{
 // hier zet je dan de query neer.
}

Dit is de goede code, ik had per ongeluk name i.p.v naam ingetypt (automatisme omdat ik mijn eigen scripts met enige regelmaat in het engels maak:rolleyes: )
 
Laatst bewerkt:
hihi, ik was er net achter.

En idd nu doet ie dat wel goed. Alleen is het nog wel steeds zo dat wanneer ik een bericht type. Hij (ook wanneer ik de andere velden leeg laat) het bericht wel gaat plaatsen. Heel raar, want ik kan wel zien dat ie de fout herkent, maar hij linkt toch direct door naar het gastenboek.

Als je wilt zien wat ik bedoel, moet je maar even testen in het gastenboek van www.de-kliek.nl
(zet dan wel even als tekst 'test')
 
Tha Devil, denk nog eens over je code na. Wat als ik geen naam invul maar wel een bericht ? ;)
 
Als je geen naam invult maar wel een bericht...

Nou aangezien als naam niets bevat hij dan de echo "Je bent vergeten een naam in te vullen" uitvoert neem ik aan dat hij dan dus na de naam controle niets verder doet :confused: maar aangezien jij mij er op attendeerd zal het wel niet kloppen...:rolleyes:

Ik heb nog ff snel die "korte" code opgezocht in het boek.

Dit is em:
PHP:
foreach ($_POST as $value)
{
if ( $value  == "" )
{
echo "Je hebt niet alle velden ingevult!<br>/n";
exit();
}
}
echo "Welkom"; // hier komt dan natuurlijk de query (neem ik aan)
 
Geplaatst door Tha Devil
Nou aangezien als naam niets bevat hij dan de echo "Je bent vergeten een naam in te vullen" uitvoert neem ik aan dat hij dan dus na de naam controle niets verder doet
Test deze code voor de gein eens, het komt ongeveer overeen met jouw code ;)
PHP:
<?
if(1 == 1)
{
echo 'Naam niet ingevuld';
}

if(1 == 2)
{
echo 'E-mail niet ingevuld';
}

if(1 == 3)
{
echo 'Bericht niet ingevuld';
}
else
{
echo 'Querys worden hier uitgevoerd';
}
?>
In deze situatie wordt naam zogenaamd niet ingewild, maar bericht en email wel.
En toch worden de zogenaamde query's wel uitgevoerd ;)
 
Brr, hier begint mijn hoofd van te tollen:8-0:

Ik snap er nu helemaal niets meer van :confused:

Misschien als je het aan de hand van een voorbeeld zonder php-code uitlegt dat ik er dan meer oog op krijg (en ik er dan ook wat van leer):o
 
Geplaatst door Tha Devil
Brr, hier begint mijn hoofd van te tollen:8-0:
Mooi :D
Misschien als je het aan de hand van een voorbeeld zonder php-code uitlegt dat ik er dan meer oog op krijg (en ik er dan ook wat van leer):o
Ok, mijn eerdere voorbeeld in tekstvorm :)

Als het cijfer 1 gelijk is aan het cijfer 1, print dan 'Naam niet ingevuld'.

Als het cijfer 1 gelijk is aan het cijfer 2, print dan 'E-mail niet ingevuld'.

Als het cijfer 1 gelijk is aan het cijfer 3, print dan 'Bericht niet ingevuld'.
Is het cijfer 1 wel gelijk aan het cijfer 3, voer dan de query('s) uit.

Oftewel, wat je doet is drie verschillende if-statements maken. Die else helemaal onderaan hangt alleen af van is 1 gelijk aan 3, niet van of 1 gelijk is aan 1 noch of 1 gelijk is aan 2.

Dit zou wat beter werken:
PHP:
if($_POST['naam'] == '')
{
echo 'Je bent vergeten een naam in te vullen! <br />';
}
elseif($_POST['email'] == '')
{
echo 'Je bent vergeten een email adres in te vullen! <br />';
}
elseif($_POST['woonplaats'] == '')
{
echo 'Je bent vergeten een woonplaats in te vullen! <br />';
}
elseif($_POST['bericht'] == '')
{
echo 'Je bent vergeten een bericht in te vullen! <br />';
}
else
{
// Query
}
Succes ... :p
 
Aha, kijk weer iets op gestoken:)

Laat ik nu snel mijn eigen script maar eens aangaan passen ;)
 
wow!!! goed bezig mensen. Ik ben al helemaal blij :D

Ik vind alleen niet dat het echt mooi word weer gegeven. Is het ook mogelijk om het bericht (je bent .. vergeten in te vullen) in een appart schermpje te laten verschijnen, die je weer weg kan klikken?
Of is het anders mogelijk om de layout van de pagina waar het bericht komt te staan aan te passen?

Of word ik nu heel erg lastig?:o
 
ipv alleen Je bent ... vergeten in te vullen maak je een tabelletje met kleurtjes ofzo.

Code:
<table width=75%>
 <tr>
  <td bg-color=000000>& nbsp;</td>
 </tr>
 <tr>
  <td bg-color=FFFFFF><center>Je bent ... vergeten in te vullen</center></td>
 </tr>
 <tr>
  <td bg-color=FFFFFF><a href='#' onClick='history.go(-1)'>Terug</a></td>
 </tr>
 <tr>
  <td bg-color=000000>& nbsp;</td>
 </tr>
</table>

Als je een "pop-up" wil dan moet je zoeken naar de javascript code "alert" ik weet helaas niet hoe je deze ism php laat werken... (komt verandering in, boeken gevraagd)

[edit]
& nbsp; moet aan elkaar, maar omdat als ik dat hier doe er niets komt te staan je het niet snapt ;)
 
Laatst bewerkt:
Over het korter schrijven gesproken. Via een ander forum kwam iemand met het volgende:

<? if (empty($_POST['naam']) || empty($_POST['email']) || empty($_POST['woonplaats']){ echo 'Je hebt niet alle velden ingevuld.'; } ?>
 
Geplaatst door Tha Devil
Ik heb nog ff snel die "korte" code opgezocht in het boek.

Dit is em:
PHP:
foreach ($_POST as $value)
{
if ( $value  == "" )
{
echo "Je hebt niet alle velden ingevult!<br>/n";
exit();
}
}
echo "Welkom"; // hier komt dan natuurlijk de query (neem ik aan)

Deze lijkt mij handiger, aangezien je bij die andere steeds in de "controle" alle $_POST gegevens moet invoeren en bij deze hoef je dat alleen maar in het formulier zelf te doen en niet in de controle want deze gaat alle $_POST's bijlangs om te kijken of ze leeg zijn.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan