Waarom zie ik de eerste "echo" vanwege leeg veld niet?
Door
Johan Derks
op 17-06-2015 16:18
gewijzigd op 17-06-2015 16:33
2.802 views
Ik heb een geïntegreerd met php aanmeldformulier "compleet.php" in html gemaakt, met de gebruikelijke controles op het invullen van de velden. Hier is de structuur van het script:
<?php
if (isset($_POST['submit'])) {
if ($voornaam == "") {
echo "fout1!<br/>";
} else if ($achternaam == "") {
echo "fout2!<br/>";
} else if ($adres == "") {
echo "fout3!<br/>";
} else if ($netadres == "") {
echo "fout4!<br/>";
} else if (($aanhef = "alia") && ($aanhef1 = "")) {
echo "fout5!<br/>";
} else {bewerking van ingevoerde gegevens en mail naar mij}
?>
Dan volgt het formulier in HTML met bovenstaande velden, te verzenden naar compleet.php
Als ik niets invul in het formulier en meteen naar compleet.php post, krijg ik vermelding van fout4, terwijl ik volgens mij vermelding van fout 1 zou moeten krijgen, want $voornaam == "".
Ik ben geen beginneling, maar gebruik php-html voor mijn taal Esperanto.
Kan iemand mij alsjeblieft helpen?
Ik heb van alles geprobeerd, maar kan de foutmeldingen nog steeds niet produceren.
Als ik het volgende script gebruik (ik vermeld steeds maar twee variabelen):
<?php if (isset($_POST['submit'])) {
foreach ($_POST as $key => $value) {$inhoud .= "$key: $value\n";}; print $inhoud;
$voornaam = $_POST['voornaam'];
$achternaam = $_POST['achternaam'];
if ($voornaam == "") {$voornaamFt = "Vi ne plenigis vian personan nomon!";};
if ($achternaam == "") {$achternaamFt = "Vi ne plenigis vian familian nomon!";};
} else {
$voornaam = $achternaam = "";
}
?>
komt er, als het aanmeldformulier voor het eerst verschijnt: "Notice: Undefined variable: voornaamFt", vanwege
<input type="text" name="voornaam" value="<?php echo $voornaam;?>" size="30"/>
<span class="error">* <?php echo $voornaamFt;?></span>
in het formulier. Idem voor achternaamFt.
Als ik het script uitbreid met twee regels om de foutmeldingen op leeg te zetten:
<?php if (isset($_POST['submit'])) {
foreach ($_POST as $key => $value) {$inhoud .= "$key: $value\n";}; print $inhoud;
$voornaam = $_POST['voornaam'];
$achternaam = $_POST['achternaam'];
if ($voornaam == "") {$voornaamFt = "Vi ne plenigis vian personan nomon!";};
if ($achternaam == "") {$achternaamFt = "Vi ne plenigis vian familian nomon!";};
} else {
$voornaamFt = $achternaamFt = "";
$voornaam = $achternaam = "";
}
?>
verschijnt het aanmeldformulier zonder Notice, maar als ik het dan leeg verzend, komt er geen echo van voornaamFt en achternaamFt.
De kans dat $voornaamFt bestaat is klein.
<?php // $voornaamFt bestaat NIET
if (isset($_POST['submit'])) {
foreach ($_POST as $key => $value) {$inhoud .= "$key: $value\n";}; print $inhoud;
$voornaam = $_POST['voornaam'];
$achternaam = $_POST['achternaam'];
// $voornaamFt bestaat NIET
if ($voornaam == "") {$voornaamFt = "Vi ne plenigis vian personan nomon!";};
else // $voornaamFt bestaat NIET
if ($achternaam == "") {$achternaamFt = "Vi ne plenigis vian familian nomon!";};
} else {
// $achternaamFt bestaat NIET
$voornaam = $achternaam = "";
}
?>
Ik bedenk nu, dat het gedeelte
<?php $voornaamFt = $achternaamFt = "";
if ($voornaam == "") {$voornaamFt = "Vi ne plenigis vian personan nomon!";};
if ($achternaam == "") {$achternaamFt = "Vi ne plenigis vian familian nomon!";};
?>
, weliswaar met de voorwaarde if "(isset($_POST['submit']))", voor het formulier staat en dat het misschien pas "gefired" moet worden bij "submit".