Wat is er mis in onderstaand formulier bij het veldje email? Hij checkte eerstt gewoon alleen of het veld niet leeg was. Nu checkt ie als het goed is of het geldig emailadres is. Maar als ik zomaar wat invul bijv "reager" dan is het hele emailveld verdwenen.

Kan iemand ook uitleggen waarom het onderste niet werkte. Zodat ik het ook kan snappen en er ook van kan leren :)

Hier het code gedeelte origineel waar de "check if empty " werkte
<?php
if (isset($_POST["cp_email"]) && $_POST["cp_email"] <> "") {

$form .= "<tr>\n<td class=\"td\">\n Email:</td>\n<td class=\"td\">\n<input type=\"text\" name=\"cp_email\" size=\"50\" value=\"" . $_POST["cp_email"] . "\" /></td>\n</tr>\n";

} else {

$error = "ja";

$form .= "<tr>\n<td class=\"td\">\n<b>Geen emailadres ingevuld</b><br /> Email:</td>\n<td class=\"td\">\n<input type=\"text\" name=\"cp_email\" size=\"50\" /></td>\n</tr>\n";

}
?>
Hier de code waardoor die opeens nie werkt

<?php
if (isset($_POST["cp_email"]) && $_POST["cp_email"] <> "") {

$form .= "<tr>\n<td class=\"td\">\n Email: /td>\n<td class=\"td\">\n<input type=\"text\" name=\"cp_email\" size=\"50\" value=\"" . $_POST["cp_email"] . "\" /></td>\n</tr>\n";

} elseif(!eregi("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+", $_POST[cp_email])) {

echo "Email adres onjuist";

} else {

$error = "ja";

$form .= "<tr>\n<td class=\"td\">\n<b>Geen emailadres ingevuld</b><br /> Email /td>\n<td class=\"td\">\n<input type=\"text\" name=\"cp_email\" size=\"50\" /></td>\n</tr>\n";

}
?>
Ik zie hier een foutje
Email: /td>\n<td class=\"td\">\n

Dit moet zijn:
Email: </td>\n<td class=\"td\">\n

elseif(!eregi("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+", $_POST[cp_email])) {

maak daarvan:

elseif(!eregi("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+", $_POST['cp_email'])) {

dus quotes in de POST..
Sorry was de uitleg vergeten, maar ik denk dat je het zelf al weet.

De tag moet altijd beginnen met < en eindigen op >.

Het is trouwens ontzettend onduidelijk met al die \", maar dat vind ik persoonlijk lastig. Je kan ook met dubbele en enkele quotes werken.

Dus in plaats van:

$form .= "<tr>\n<td class=\"td\">";

Kan je ook dit doen:

$form .= "<tr>\n<td class='td'>";

Als je dit verder doorvoert, dan maakt het een stuk overzichtelijker.
Ik gebruik alleen de \ als het echt moet.

Succes
Ik zie dat
Email /td> naar Email </td>
2x verbetert moet worden
Want het staat er 2 keer in
Mmm klopt ook niet, want als ik dan op de button controleer druk is opeens m'n e-mail veld weg. Terwijl ik helemaal niets heb ingevuld daar :S

Heb nu onderstaand gebeuren.

<?php
if (isset($_POST["cp_email"]) && $_POST["cp_email"] <> "") {

$form .= "<tr>\n<td class=\"td\">\n Email: </td>\n<td class=\"td\">\n<input type=\"text\" name=\"cp_email\" size=\"50\" value=\"" . $_POST["cp_email"] . "\" /></td>\n</tr>\n";

} elseif(!eregi("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+", $_POST['cp_email'])) {

echo "Email adres onjuist";

} else {

$error = "ja";

$form .= "<tr>\n<td class=\"td\">\n<b>Geen emailadres ingevuld</b><br /> Email </td>\n<td class=\"td\">\n<input type=\"text\" name=\"cp_email\" size=\"50\" /></td>\n</tr>\n";

}
?>
Dat komt omdat je de check op de onjuiste plek hebt staan.

Als het emailadres onjuist is, dan zie je alleen de tekst Email adres onjuist.

Maar verder staat er niks in die elseif. Dus vandaar dat je je email invoervak kwijt bent.

Je kan het zo doen:
<?php
if (isset($_POST["cp_email"]) && $_POST["cp_email"] <> "") {

$form .= "<tr>\n<td class=\"td\">\n Email: </td>\n<td class=\"td\">\n<input type=\"text\" name=\"cp_email\" size=\"50\" value=\"" . $_POST["cp_email"] . "\" /></td>\n</tr>\n";

} elseif(!eregi("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+", $_POST['cp_email'])) {

echo "Email adres onjuist";
$form .= "<tr>\n<td class=\"td\">\n<b>Geen emailadres ingevuld</b><br /> Email </td>\n<td class=\"td\">\n<input type=\"text\" name=\"cp_email\" size=\"50\" /></td>\n</tr>\n";

} else {

$error = "ja";

$form .= "<tr>\n<td class=\"td\">\n<b>Geen emailadres ingevuld</b><br /> Email </td>\n<td class=\"td\">\n<input type=\"text\" name=\"cp_email\" size=\"50\" /></td>\n</tr>\n";

}
?>


Dit is trouwens nog een omslagtige manier. Je kan het veeeeeeel korter maken. Maar ik doe het even zo.
werkt ook niet, want nu checkt hij dus niet op op het geldig( @ .) emailadres is. Hij checkt nu alleen op of het veld leeg is of niet

Pff hoezo ingewikkeld :S
Ja ik zie het.

Ik had de verkeerde tekst overgehaald.

ipv
<?php
} elseif(!eregi("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+", $_POST['cp_email'])) {

echo "Email adres onjuist";
$form .= "<tr>\n<td class=\"td\">\n<b>Geen emailadres ingevuld</b><br /> Email </td>\n<td class=\"td\">\n<input type=\"text\" name=\"cp_email\" size=\"50\" /></td>\n</tr>\n";

}
?>


is het


<?php
} elseif(!eregi("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+", $_POST['cp_email'])) {

echo "Email adres onjuist";
$form .= "<tr>\n<td class=\"td\">\n Email: </td>\n<td class=\"td\">\n<input type=\"text\" name=\"cp_email\" size=\"50\" value=\"" . $_POST["cp_email"] . "\" /></td>\n</tr>\n";

}
?>
Barman schreef op 02.09.2005 12:01
Dit is trouwens nog een omslagtige manier. Je kan het veeeeeeel korter maken. Maar ik doe het even zo.

<?php
if (isset($_POST["cp_email"]) && eregi("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+", $_POST['cp_email']))
{
$foutje="";
}
else
{
$error = "ja";
$foutje="<b>Geen of ongeldig emailadres ingevuld</b><br />";
}
$form .= "<tr>\n<td class=\"td\">\n" . $foutje . " Email: </td>\n<td class=\"td\">\n<input type=\"text\" name=\"cp_email\" size=\"50\" value=\"" . $_POST["cp_email"] . "\" /></td>\n</tr>\n";
?>

Dit zou ook moeten werken en is een heel stuk korter.
Sorry maar werkt nog steeds niet. Hij checkt nu zelfs niet meer of het veld leeg is ja of nee.

Heeft het nies met die echo te maken? Ik gil maar wat hoor.

Hier m'n hele script

<?php
if (isset($_POST["cp_email"]) && $_POST["cp_email"] <> "") {

$form .= "<tr>\n<td class=\"td\">\n Email: </td>\n<td class=\"td\">\n<input type=\"text\" name=\"cp_email\" size=\"50\" value=\"" . $_POST["cp_email"] . "\" /></td>\n</tr>\n";

} elseif(!eregi("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+", $_POST['cp_email'])) {

echo "Email adres onjuist";
$form .= "<tr>\n<td class=\"td\">\n Email: </td>\n<td class=\"td\">\n<input type=\"text\" name=\"cp_email\" size=\"50\" value=\"" . $_POST["cp_email"] . "\" /></td>\n</tr>\n";

} else {

$error = "ja";

$form .= "<tr>\n<td class=\"td\">\n<b>Geen emailadres ingevuld</b><br /> Email </td>\n<td class=\"td\">\n<input type=\"text\" name=\"cp_email\" size=\"50\" /></td>\n</tr>\n";

}
?>

Reageren