I'VE DONE IT! Required fields from a database
| From: | Erica Douglass | Date: | Sun, 15 Oct 2000 21:16:04 +0000 |
| Subject: | I'VE DONE IT! Required fields from a database | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-20264@lists.php.net to get a copy of this message | ||
After only about 5-6 hours of reading how-to's on arrays and posting questions to this list, plus two nights' sleep for my subconscious to mull it over, I've figured out how to pull required fields in a form from a database.
Thanks to Joe Stump for his help in this matter. He got me on the right track. Here's the problem and solution, with code included, for all of you to use.
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:
<input type=\"text\" name=\"add[$field_name]\" size=\"$size\" value=\"$default_value\">
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!
Erica