Re: Required fields in a form?
| From: | Erica Douglass | Date: | Sun, 15 Oct 2000 01:01:42 +0000 |
| Subject: | Re: Required fields in a form? | ||
| References: | 1 2 3 4 5 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-20182@lists.php.net to get a copy of this message | ||
Agh... still having problems...
Alright. Following Joe's example, I rewrote the code to get the required fields from the database. That works fine. My problem is that when a field is blank, nothing is written into the value part of the array for that key, so I get a PHP warning when trying to submit my form. For reference purposes, $f is my form field array. $f works just fine. It just doesn't set values for blank fields.
Here is my code:
$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);
};
function check_for_errors($f){
while(list($key,$val) = each($f)) {
if(!strlen($val) && in_array($key,$required_fields)) {
$errors[$key] = '**Required';
}
}
if(is_array($errors)){
# temporary messages
print "there are errors";
}
else {
print "no errors found!";
};
};
This error message pops up for every field that is blank: Warning: Wrong datatype for second argument in call to in_array() in /path/to/file on line 139
I tried the suggestion listed in the PHP manual to declare the array before adding values to it, but that returned no output.
I have everything else working. If I can get this one thing fixed, it's on to bigger and better problems. ;) Can someone help me out? (I do have plans to post some free scripts when this is all done, if that is any sort of motivator!!)
Erica
At 06:54 AM 10/14/2000 -0700, Joe Stump wrote:
Ok then - just build the $required array from your DB - the code will work just the same. So before you call check_for_errors create the array like this: <?while($row = mysql_fetch_array($r)){ // $is_required is your test if($is_required){ $required[] = $row['required_field']; } }?> At 04:51 PM 10/13/2000 -0700, Joe Stump wrote:$required = array('fname','lname','wphone');The values cannot be hard-coded. The database specifies which ones are supposed to be required. (I'm not going to rewrite any PHP just so someone can add a form field.) Note that in the sample I pulled from the database below, wphone is not required. Therefore, a database call to see which rows are required is necessary. Perhaps a while ($row == mysql_fetch_array($result)) array_push is necessary here. Suggestions?// f is your form array - so inputs would be // named f[fname], f[lname], f[wphone] function check_for_errors($f){Below I use $HTTP_POST_VARS. Is it necessary to have these values in an array called $f as well?while(list($key,$val) = each($f)){ if(!strlen($val) && in_array($key,$required)){ $errors[$key] = '**Required'; } }if(is_array($errors)){ return $errors; }else{ return 0; }}if(strlen($f['button']) && !($errors = check_for_errors($f))){Still being somewhat of a newbie at this, I don't understand what this bit of code is doing. Is the "add a line" part where I am supposed to print my error message? BTW, I put the form values in an array called $add and tried this code, and I still can't get it to work. I'm stuck somewhere on this part:// add a line}$query = "select field_name from form_fields where required=\"yes\""; $result = mysql_query ($query) or die ("The server is down. Here'swhat MySQL said: " . mysql_error());$required_fields = array(); while ($row == mysql_fetch_array($result)) { $field_name = $row["field_name"]; array_push ($required_fields, $field_name); };The while loop does not seem to work, although MySQL returns 12 row values from the query. Still lost... thanks in advance for any help any of you can provide. Rewrite suggestions are welcome as well. A Very Exhausted Erica--Joe On Fri, Oct 13, 2000 at 04:33:45PM -0700, Erica Douglass wrote:evaluated asI am trying to build a form that checks if certain required fields are filled out. Not all fields are required, hence my problems. The form calls from a table called "form_fields" that, very simplified, looks like this:field_name | required__________________________fname | yes lname | yes wphone | noThe form is pulled from the same table. Form value names are<inputfield_name from the database. Hence, a text field asking for the user's first name looks like this when initially called from the database:required=\"yes\"";type="text" name="fname" size="30" value=""> The code I am using to check for required fields looks like this:# check to make sure required fields are filled in $query = "select field_name from form_fields where(regardless of$result = mysql_query ($query) or die ("The server is down.Here's whatMySQL said: " . mysql_error());$required_fields = mysql_fetch_array($result); while(list($key,$val) = each($required_fields)) { if ($HTTP_POST_VARS[$key] == "") { echo "$key is blank!"; } else { echo "$key is not blank!"; }; };I am using the echo statements as placeholders for now. This code, when put to use, gives back the following output-- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net For additional commands, e-mail: php-general-help@lists.php.net To contact the list administrators, e-mail: php-list-admin@lists.php.netwhether the form fields are actually blank or not): 0 is blank!field_name is blank! What on earth am I doing wrong? I have a feeling that I have the right idea, but that my code is off. Please help! :) Erica/*****************************\ * Joe Stump * * www.Care2.com * * Office: 650.328.0198 * * Extension: 122 * \*****************************/http://www.miester.org/Joe/Stump/Joe_Stump_resume.html -----BEGIN GEEK CODE BLOCK----- Version: 3.12 GB/E/IT d- s++:++ a? C++++ UL++$ P+ L+++$ E----! W+++$ N+@ o? K? w---! O-@ M+@ V-! P(++) PE(+) Y+@ PGP+++@ t+@ 5? R-! tv@ b+ DI++@ D(++++) G++@ e+@ h@ r+! z(+++++**)! ------END GEEK CODE BLOCK------