Problem: Certain form fields should be required, but we don't want to
hard-code these in as an array. We want to pull the required field names
from a database so our code is more extensible. Then, we want to check each
form field submitted, see if it is required, and if so, generate an error
message if that required field is blank.
Solution: There are several parts to the solution. First of all, create a
database table with all of the form field names, and whether or not they
are required. (I went further and created type of form field, default
value, etc. so I could generate the entire form from a database.) Here's a
basic table with what you need:
field_name required
fname yes
lname yes
wphone no
Next, create your form with ALL form field names being an array. For this
example, I use the array add[]. A sample form field pulled from a database
would look like this:
Here is the code that parses the form and checks for required fields:
# check to make sure required fields are filled in
$query = "select field_name from form_fields where
required=\"yes\"";
$result = mysql_query ($query) or die ("The server is down. Here's
what
MySQL said: " . mysql_error());
$required_fields = array();
while ($row = mysql_fetch_array ($result)) {
$field_name = $row['field_name'];
array_push ($required_fields, $field_name);
};
while(list($key,$val) = each($required_fields)) {
if (!strlen($add[$val])) {
$errors[$key] = "$val is a required field.";
# above line will store the form field name,
e.g. "fname is a required
field."
};
}; # END WHILE
if(is_array($errors)) {
while(list($key,$val) = each($errors)) {
print "Error! $val <br>";
# for every field that is blank, above line
will print "Error:
$field_name is a required field."
# this part can be easily customized.
};
}
else {
# here's where you put the "success" message, add
entries to database, etc.
};
I hope this helps those of you who want to make your forms extensible. I
owe most of this to the PHP mailing list! You guys ROCK!