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";

}
?>
Probeer mijn vorige post eens. Uiteraard niet gelijk je eigen stuk script weggooien natuurlijk.
Ik denk dat ie zo beter is.

<?php
if (!empty($_POST["cp_email"])){
if(!eregi("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+", $_POST['cp_email'])) {
$error = "Emailadres onjuist";
} else {
$error = "Geen emailadres ingevuld";
}
}
$form .= "
<tr>
<td class='td'>".$error." Email: </td>
<td class='td'>
<input type='text' name='cp_email' size='50' value='".$_POST["cp_email"]."'>
</td>
</tr>";
echo $form;
?>
Dit in het geheel (sorry voor de posts)

<?php
if (isset($_POST["cp_email"])){
if(!eregi("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+", $_POST['cp_email'])) {
$error = "Emailadres onjuist";
} else {
$error = "Emailadres juist";
}
}
$form .= "
<form method='POST' action='".$_SERVER['PHP_SELF']."'>
<p>".$error."</p>
<table>
<tr>
<td class='td'> Email: </td>
<td class='td'>
<input type='text' name='cp_email' size='50' value='".$_POST["cp_email"]."'>
<input type='submit' value='OK'>
</td>
</tr>
</table>
</form>";
echo $form;
?>
$error = "Geen emailadres ingevuld";

@Barman: Op bovenstaande regel komt ie nooit. Want als er niets is ingevuld komt ie niet langs de eerste if().
Dan zou je het zo moeten doen.

if (!empty($_POST["cp_email"]))
{
if(!eregi("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+", $_POST['cp_email']))
{
$error = "Emailadres onjuist";
}
}
else
{
$error = "Geen emailadres ingevuld";
}

Edit: Idem voor isset()
@SanThe: Zie mijn laatste reactie
@Barman: Idem voor isset()
@SanThe:
Bij mijn laatste reactie heb ik de zin
$error = "Geen emailadres ingevuld";
veranderd door
$error = "Emailadres juist";

Dus als er niks is ingevuld, dan gaat het ook om een onjuiste emailadres.
Barman schreef op 02.09.2005 11:32
Sorry was de uitleg vergeten, maar ik denk dat je het zelf al weet.

Ik gebruik alleen de \ als het echt moet.

Succes


Ik streef daar ook naar. Het schijnt ook nog een tikkie sneller te gaan, omdat PHP strings met dubbele aanhalingstekens nog even moet evalueren op de aanwezigheid van variabelen, bijv zo:

<?php
echo "in deze string zit een $variabele";
?>

Dus zodra een string geen variabelen bevat kun je hem volgens mij het beste tussen enkele aanhalingstekens zetten.
Mensen dit werkt allemaal niet :(

Zou iemand mij ander ffe via msn kunnen helpen ofzo?
@Nancy: Ik heb je een interne mail gestuurd, want ik weet je msn-adres niet.

Mijn laatste code werkt wel qua emailvalidatie.

<?php
if (isset($_POST["cp_email"])){
if(!eregi("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+", $_POST['cp_email'])) {
$error = "Emailadres onjuist";
} else {
$error = "Emailadres juist";
}
}
$form .= "
<form method='POST' action='".$_SERVER['PHP_SELF']."'>
<p>".$error."</p>
<table>
<tr>
<td class='td'> Email: </td>
<td class='td'>
<input type='text' name='cp_email' size='50' value='".$_POST["cp_email"]."'>
<input type='submit' value='OK'>
</td>
</tr>
</table>
</form>";
echo $form;
?>

Het ligt er aan wat er nog allemaal omheen moet gebeuren. Dus zonder de complete code kan ik je niet verder helpen.

Stuur je msn-adres even op via interne mail of in deze topic, zodat we je verder kunnen helpen.

Reageren