PHP ver gevorderde |
|
je moet i.p.v. isset() -> empty() gebruiken. Het is namelijk zo dat als je isset() gebruikt, je postvar wel kan bestaan, maar nog geen waarde heeft en toch zal hij true retourneren! empty() daarintegen test wel degelijk of de var een waarde heeft en zal op basis daarvan true of false retourneren
edit: dus zo:
<?php
//Als er op de Submit knop is gedrukt van het formulier
if (isset($_POST['Verzenden']))
{
if (empty($_POST['naam'])) {
$error = "Naam is niet ingevuld <br>";
}
if (empty($_POST['email'])) {
$error .= "E-mail adres is niet ingevuld <br>";
}
if (empty($_POST['onderwerp'])) {
$error .= "Geen onderwerp ingevuld <br>";
}
if (empty($_POST['bericht'])) {
$error .= "Geen bericht geschreven";
}
if (isset($error)) { //Als er een $error bestaat wordt deze weergegeven
echo $error;
}
else {
echo "Dit is gewoon niets want ik bespaar jullie de rest van het script want dat is niet nodig in dit topic bij deze vraag"; //Geen error gevonden
}
}
<?php //Als er op de Submit knop is gedrukt van het formulier if (isset($_POST['Verzenden'])) { if (empty($_POST['naam'])) { $error = "Naam is niet ingevuld <br>"; } if (empty($_POST['email'])) { $error .= "E-mail adres is niet ingevuld <br>"; } if (empty($_POST['onderwerp'])) { $error .= "Geen onderwerp ingevuld <br>"; } if (empty($_POST['bericht'])) { $error .= "Geen bericht geschreven"; } if (isset($error)) { //Als er een $error bestaat wordt deze weergegeven } else { echo "Dit is gewoon niets want ik bespaar jullie de rest van het script want dat is niet nodig in dit topic bij deze vraag"; //Geen error gevonden } }
en er klopt nog iets niet. bij elke foutmelding buiten $error = "Naam is niet ingevuld gebruik je $error .= "foutmelding hier"; wel als hij de gebruiker nu wel degelijk een naam heeft ingevuld, maar bv. geen email kan je een een notice : Undefined variable: error op r ... van php krijgen dat $error nog niet bestaat( snap je? omdat je dan eigenlijk de foutmelding-string optelt bij een var die niet bestaat) dus als ik van jou was zou ik het zo doen :
<?php
//Als er op de Submit knop is gedrukt van het formulier
$error=NULL;//maak de variable aan met NULL
if (isset($_POST['Verzenden']))
{
if (empty($_POST['naam'])) {
$error .= "Naam is niet ingevuld <br>";
}
if (empty($_POST['email'])) {
$error .= "E-mail adres is niet ingevuld <br>";
}
if (empty($_POST['onderwerp'])) {
$error .= "Geen onderwerp ingevuld <br>";
}
if (empty($_POST['bericht'])) {
$error .= "Geen bericht geschreven";
}
if (isset($error)) { //!!Omdat $error nu al bestaat, wil dat niet zeggen dat hij hem hier gaat afdrukken omdat NULL bij de isset()-functie FALSE retourneert! handig toch ;)
echo $error;
}
else {
echo "Dit is gewoon niets want ik bespaar jullie de rest van het script want dat is niet nodig in dit topic bij deze vraag"; //Geen error gevonden
}
}
<?php //Als er op de Submit knop is gedrukt van het formulier $error=NULL;//maak de variable aan met NULL if (isset($_POST['Verzenden'])) { if (empty($_POST['naam'])) { $error .= "Naam is niet ingevuld <br>"; } if (empty($_POST['email'])) { $error .= "E-mail adres is niet ingevuld <br>"; } if (empty($_POST['onderwerp'])) { $error .= "Geen onderwerp ingevuld <br>"; } if (empty($_POST['bericht'])) { $error .= "Geen bericht geschreven"; } if (isset($error)) { //!!Omdat $error nu al bestaat, wil dat niet zeggen dat hij hem hier gaat afdrukken omdat NULL bij de isset()-functie FALSE retourneert! handig toch ;) } else { echo "Dit is gewoon niets want ik bespaar jullie de rest van het script want dat is niet nodig in dit topic bij deze vraag"; //Geen error gevonden } }
(het laaste stuk code is dus het beste)
edit: oh ja juist, ik had gwn isset() vervangen |