Jump to content

Form errors in an array


soycharliente

Recommended Posts

Hola.

 

I'm processing a form and putting the errors in an array. empty($errors) doesn't seem to do the trick when trying to check to see if the array is empty. Is my understanding of empty() incorrect? Each item is the array is either a string, the error message, or FALSE.

 

Can anyone help me figure out how to move into my if statement?

 

<?php
// check fields
$errors = array();
$errors['the_date'] = (empty($the_date)) ? '<span class="error">Please choose a date.</span>' : FALSE;
$errors['first_name'] = (empty($first_name)) ? '<span class="error">Please fill in your first name.</span>' : FALSE;
$errors['last_name'] = (empty($last_name)) ? '<span class="error">Please fill in your last name.</span>' : FALSE;
$errors['email'] = (empty($email) || !preg_match("/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(([,]|[,])\s*\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*$/", $email)) ? '<span class="error">Please fill in a valid email address.</span>' : FALSE;
$errors['phone'] = (empty($phone)) ? '<span class="error">Please provide your phone number.</span>' : FALSE;
$errors['emergency_contact'] = (empty($emergency_contact)) ? '<span class="error">Please provide an emergency contact.</span>' : FALSE;
$errors['emergency_phone'] = (empty($emergency_phone)) ? '<span class="error">Please provide an emergency phone number.</span>' : FALSE;
$errors['major_interest'] = (empty($major_interest)) ? '<span class="error">Please pick a major of interest.</span>' : FALSE;
$errors['activity1'] = (empty($activity1)) ? '<span class="error">Please select a morning activity.</span>' : FALSE;
$errors['activity2'] = (empty($activity2)) ? '<span class="error">Please select a morning activity.</span>' : FALSE;
$errors['activity3'] = (empty($activity3)) ? '<span class="error">Please select an afternoon activity.</span>' : FALSE;
$errors['activity4'] = (empty($activity4)) ? '<span class="error">Please select an afternoon activity.</span>' : FALSE;
$errors['interests'] = (empty($interests)) ? '<span class="error">Please list your interests.</span>' : FALSE;
$errors['accomodations'] = (empty($accomodations)) ? '<span class="error">Please answer.</span>' : FALSE;
$errors['acknowledgement'] = (!(strcmp($acknowledgement, 'I understand') == 0)) ? '<span class="error">Please type the indicated response.</span>' : FALSE;

// does the email exist? did they already register?
$errors['checkEmail'] = checkEmail($email);

//print_r($errors);
if (empty($errors))
{
	header('Location: thankyou.php');
	exit();
	//$sql = "INSERT INTO ...";
}
?>

Link to comment
Share on other sites

Return Values

Returns FALSE if var has a non-empty and non-zero value.

 

The following things are considered to be empty:

"" (an empty string)

0 (0 as an integer)

"0" (0 as a string)

NULL

FALSE

array() (an empty array)

var $var; (a variable declared, but without a value in a class)

 

So even though FALSE is listed as something that will return true for the function, the value of FALSE in this case doesn't work when it's an array value?

Link to comment
Share on other sites

You think the best thing to do is change to regular if statements with only array addition inside so it only adds the error string and not the FALSE value? Unless there is something else I can set it to besides FALSE that would change the outcome, but based on your answers it sounds like that's not possible.

Link to comment
Share on other sites

Yeah. I looked at looping and filtering with a splice or something. But this is faster.

 

Thanks.

 

<?php
// check fields
$errors = array();
if (empty($the_date)) { $errors['the_date'] = '<span class="error">Please choose a date.</span>'; }
if (empty($first_name)) { $errors['first_name'] = '<span class="error">Please fill in your first name.</span>'; }
if (empty($last_name)) { $errors['last_name'] = '<span class="error">Please fill in your last name.</span>'; }
if (empty($email) || !preg_match("/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(([,]|[,])\s*\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*$/", $email)) { $errors['email'] = '<span class="error">Please fill in a valid email address.</span>'; }
if (empty($phone)) { $errors['phone'] = '<span class="error">Please provide your phone number.</span>'; }
if (empty($emergency_contact)) { $errors['emergency_contact'] = '<span class="error">Please provide an emergency contact.</span>'; }
if (empty($emergency_phone)) { $errors['emergency_phone'] = '<span class="error">Please provide an emergency phone number.</span>'; }
if (empty($major_interest)) { $errors['major_interest'] = '<span class="error">Please pick a major of interest.</span>'; }
if (empty($activity1)) { $errors['activity1'] = '<span class="error">Please select a morning activity.</span>'; }
if (empty($activity2)) { $errors['activity2'] = '<span class="error">Please select a morning activity.</span>'; }
if (empty($activity3)) { $errors['activity3'] = '<span class="error">Please select an afternoon activity.</span>'; }
if (empty($activity4)) { $errors['activity4'] = '<span class="error">Please select an afternoon activity.</span>'; }
if (empty($interests)) { $errors['interests'] = '<span class="error">Please list your interests.</span>'; }
if (empty($accomodations)) { $errors['accomodations'] = '<span class="error">Please answer.</span>'; }
if (!(strcmp($acknowledgement, 'I understand') == 0)) { $errors['acknowledgement'] = '<span class="error">Please type the indicated response.</span>'; }
?>

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.