Ik gebruik het volgende script om een mail formulier te valideren, maar voor een mij onbekende reden krijg ik de volgende error:

PHP Notice: Undefined variable: errors in register.php on line 34

Hierbij het script:

<?

if ($_POST['name']=='' || strlen($_POST['name'])<3)
{
$errors[] = 'Your full name is required.';
}

if ($_POST['id']=='' || strlen($_POST['id'])<5)
{
$errors[] = 'Associate ID consists at least out of five numbers.';
}

if ($_POST['id']=='' || is_numeric($_POST['id'])!=TRUE)
{
$errors[] = 'Please use only numbers for your Associate ID.';

}

if ($_POST['noguest']=='' || strlen($_POST['noguest'])<1)
{
$errors[] = 'Please enter the number of guests.';
}

if ($_POST['nameguest']=='' || strlen($_POST['nameguest'])<4)
{
$errors[] = 'Please provide the names of your guests.';
}

if (valid_email($_POST['mail'])==FALSE)
{
$errors[] = 'Please supply a valid e-mail address';
}

if(is_array($errors))
{
echo '<p class="error"><b>Please provide us with more information. Your registration has not been processed.</b></p>';
while (list($key,$value) = each($errors))
{

echo '<span class="error">'.$value.'</span><br />';
}
} ?>


Iemand een idee?
Het is op zich geen foutmelding die een script zou doen laten stoppen, het is een melding dat je dus een variabele, nou goed in dit geval een array gebruikt genaamt $errors die blijkbaar op dat moment nog leeg is.

Ofwel je formulier is goed ingevuld, daardoor worden er geen foutmeldingen in je array gestopt en blijft die dus leeg.

Ik denk dat als je boven aan plaatst:

$error = array();

Het wel goed komt...
Je voegt iets toe aan een array die niet bestaat. Maar daarna zul je nog wel wat dingen tegenkomen, ik mis een isset, een !empty en ipv een is_array() kan je beter een andere oplossing zoeken want het is altijd een array. Verder kun je die $errors beter weergeven met een foreach.
Ik ben mail niet vergeten, maar dat is een aparte functie :) Leek me overbodig om dat toe te voegen.

Ik heb $errors = array(); helemaal bovenaan gezet, maar nu zegt het script dat er velden vergeten zijn, maar meldt niet welke velden, en ik ben geen velden vergeten... :(
Daar zit ook nog een logica achter, is_array kijkt naar de inhoud of deze een Array is, dat is hij ook wel en vervolgens gaat hij door naar je while() lus en
ga je de informatie parsen.

Maar er is geen informatie aanwezig en dus een NOTICE

De voorwaarde die jij wilt hebben is dat als de $error Array éen of meerdere regels aan foutmeldingen bevat, dan pas wordt verwerkt en getoond, correct?

Dus je zou met $aantal=count($error) kunnen werken.

Indien $aantal > 1 , dan pas je while() lus.

Reageren