Velden controleren.

Hoi,

Ik ben een leek in php, en ben nu aan het zoeken hoe ik velden kan controleren.
Ik weet al dat het gaat met de " if - else " structuur…
Maar als ik dat daarmee doe, krijgen de mensen eerst te zien dat ze bedankt zijn, en daarboven staat dan dat ze het opnieuw moeten doen!
En anders moet ik ze eerst naar een pagina sturen waar alles wordt gecontroleerd, en dan pas door naar de pagina waar de gegevens pas worden verzonden! Of gaat dit makkelijker in java of zo?
Dit had ik ook al geprobeerd, en dan kreeg ik telkens een tekstballonnetje met " U hebt uw naam niet ingevuld" maar als je dan op ok klikte, ging je wel door naar de volgende pagina!

Dit is dan het if-gedeelte in php:

[code:1:ca28ef09e8]if ($_POST["naam"]=="") {
echo " Gelieve uw naam in te vullen " ;
}[/code:1:ca28ef09e8]

Maar hoe kan je dan bij het “else” gedeelte zetten dat als er iets niet goed is, dat ie dan terug moet gaan naar de vorige pagina?

Je kunt beter een clientside validatie doen middels JavaScript. Nog voordat het formulier verstuurd wordt, wordt dan gecontroleerd of bijv. de verplichte velden zijn ingevuld.

Kijk bijvoorbeeld hier.

Stijn

Dus, ff de code overlopen

[code:1:721b7b0c5e]
<!-- Begin Validate Form
function checkform (form)
{
if (form.name.value == "" ) { alert( "Please enter your name." );
form.name.focus();
return false; }
if (form.question1.value == "" ) { alert( "Please answer question 1." );
form.question1.focus();
return false; }
if (form.question2.value == "" ) { alert( "Please answer question 2." );
form.question2.focus();
return false; }
if (form.question3.value == "" ) { alert( "Please answer question 3." );
form.question3.focus();
return false; }
// ** End checkform **
return true;
}
[/code:1:721b7b0c5e]

Hier kijkt hij dus of de velden zijn ingeculd, zo niet, geeft ie een boodschapje.

[code:1:721b7b0c5e]
<!-- Begin Disable Form
function disableForm(theform) {
if (document.all || document.getElementById) {
for (i = 0; i < theform.length; i++) {
var tempobj = theform.elements[i];
if (tempobj.type.toLowerCase() == “submit”)
tempobj.disabled = true;
}
setTimeout(‘alert(“Your responses have been received. We appreciate your time and effort in completing the IRS Procurement Employee Suggestion Program Form. Thank You. Please select close window to exit.”)’, 1000);
return true;
}
}
// End Disable Form–>
</script>
[/code:1:721b7b0c5e]

En wat gebeurd er hier?

Clientside ? Ga voor serverside !

Wat als die persoon JavaScript heeft uitstaan ?

Ok, dan serverside hé... Want met javascript lukt het me wel de velden te controleren, en een ballonnetje te geven, maar als je dan op ok drukt, verstuurd hij het fompje toch nog!

Konijn, moet ik dan de velden van het formulier naar een pagina “controle.php” sturen, daar de velden controleren. Als het dan goed is, nog eens doorsturen naar de pagina waar alles wordt verzonden naar FileMaker.
En als het niet goed is, weergeven wat er niet ingevuld is, en dan laten teruggaan naar de vorige pagina?
Ben jij al zo gevorderd met php dat je dit kan?

[code:1:49dcc00785] <?php if ($actie == "verzend"){ mail(); }else{ ?>

	&lt;form method=&quot;post&quot; action=&quot;&lt;? $_SERVER&#91;'PHP_SELF'&#93; ?&gt;&quot;&gt;
   
	&lt;p&gt;Naam&#58;&lt;br&gt;
	&lt;input type=&quot;text&quot; name=&quot;naam&quot; value=&quot;&quot;&gt;
	&lt;/p&gt;
	
	&lt;p&gt;Email&#58;&lt;br&gt;
	&lt;input type=&quot;text&quot; name=&quot;email&quot; value=&quot;&quot;&gt;
	&lt;/p&gt;
	&lt;p&gt;Bericht&#58;&lt;br&gt;
    &lt;textarea name=&quot;bericht&quot; cols=&quot;30&quot; rows=&quot;6&quot;&gt;&lt;/textarea&gt;
   	&lt;/p&gt;
    
   	&lt;p&gt;
    &lt;input type=&quot;submit&quot; name=&quot;verzend&quot; value=&quot;Submit&quot;&gt;
    &lt;/p&gt;
    &lt;/form&gt;

<?
}
?>
[/code:1:49dcc00785]
Een controlestructuur zal je zelf wel kunnen bouwen.
Ik heb niet echt de tijd om het zelf aan te vullen.

@konijn: beter kan Deform gelijk aanwennen om geposte data gelijk met $_POST['veldnaam'] op te pakken.

op mensen niet opnieuw het veld in te laten vullen:
<input type=“text” name=“email” value="<?php echo $_POST[‘email’]; ?>">

Klopt.

Noot: Validatie dient altijd aan de kant van de server te gebeuren, zoniet valt het wel te omzeilen. Wil je een extra stap tot gebruiksvriendelijkheid zetten, dan kun je eventueel opteren om JavaScript aan te wenden ter pre-validatie. Zodat de gebruiker het formulier niet hoeft te submitten om op zijn fouten gewezen te worden.