I set that in previously called php code. I know that it does get set since I displayed the contents of $errors['deadline'], and it had been filled in with the msg I set.
Note: I left out most of the body of code to simplify your review.
RW
I had the same question as Bobby and then figured the "..." meant you left code out. I suggest pasting the full code somewhere such as paste2.org and posting the link.
OK, If you want to see the code, here it comes. Not sure how much it will help, tho...
Start your code here:
add_filter('frm_validate_entry', 'validate_my_form', 20, 2); function validate_my_form($errors, $values){ if ($values['form_id'] == 7){ $email = wp_eMember_get_user_details("email"); include "/home/customer/www/nepta.com/public_html/mysql_connect.php"; $recital = $_POST['item_meta']['448']; // if today is between Jan 1 and before March 2, renew date must be lastyear-0101 thru lastyear-09-30 // If today is betweeen Oct 15 and Dec 31,t then renew date must be thisyear-0101 thru this year-09-30 $today = date("Ymd"); $thisyear = date("Y"); $lastyear = $thisyear - 1; $JanDate = $lastyear . "-01-00"; $OctDate = $lastyear . "-10-01"; $JanDate2 = $thisyear . "-01-00"; $OctDate2 = $thisyear . "-10-01"; // Set and check deadlines $dlj1 = "20221211"; $dlj2 = "20221225"; $dlint1 = "20230101"; $dlint2 = "20230108"; $dlcomjz20 = "20230115"; $dlens = "20230305"; $dlsen = "20230208"; $dlfrei = "20230319"; $dlham = "20230326"; $dladult = "20230305"; $dlhalloween = "20221006"; $dlmushope = "20221023"; //Get date parms here $today1 = date("md"); $roger = "About to call editdata"; include "/home/customer/www/nepta.com/public_html/members/editData.php"; // Set and Check Oversubscription include "/home/customer/www/nepta.com/public_html/members/teacherchk.php"; // Return Errors if ($deadline == "Y") { $errors['deadline'] = '<strong style="font-size:1.1em;">The deadline for this application has passed</strong>'; } if ($overlimit == "Y") { $errors['overlimit'] = '<strong style="font-size:1.1em;">You have already reached your student limit</strong>'; } } // end form id = 7 // echo "Error: " . $errors['deadline']; return $errors; }
I still don't see $deadline being declared with a default value prior to the check of if ($deadline == "Y") {
I have to ask the boring questions, right?!? 🙂
Is "validate_my_form" being declared for any other function?
At least for me, this is going to be really hard to debug "at a distance". If you want to pay someone to debug, I would hope someone could do that. Otherwise, the only things I can think of are
1. Manually set $errors to something like $errors['xxx] = 'XXX' to eliminate the possibility that the HTML is messing something up.
2. Verify you have no other frm_validate_entry that's being run and overriding it.
3. Check your form settings for something odd
4. Check the java console for an error
5. Turn error checking on and check your WP log for errors.
Thank you for all your input. So, I deactivated the 2 snippets that were using the same function (frm_validate_entry) and it worked fine. So, now that we've narrowed down the problem, how do I activate these 2 snippets and be sure they all work? I have already shared the snippet in question. I will display the other 2 below and perhaps one of you can see my error.
add_filter('frm_validate_entry', 'validate_username6', 20, 2); function validate_username6($errors, $values){ if ($values['form_id'] == 6){ $dbc = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); //Check connection if (mysqli_connect_errno()) { echo 'Could not connect to MySQL: ' . mysqli_connect_error() ; } mysqli_select_db ($dbc, DB_NAME ); $memberdb = "wphq_wp_eMember_members_tbl"; $user = $_POST['item_meta']['765']; $email = $_POST['item_meta']['173']; $check = mysqli_query($dbc,"SELECT * FROM $memberdb WHERE email = '$email'"); $rowcount = mysqli_num_rows($check); if ($rowcount != 0) {// email has been found - error $errors['my_error'] = 'This email already exists.'; return $errors; } $check = mysqli_query($dbc,"SELECT * FROM $memberdb WHERE user_name = '$user'"); $rowcount = mysqli_num_rows($check); if ($rowcount != 0) {// user name has been found - error $errors['my_error'] = 'This user name already exists.'; return $errors; } } }
/* Validate email address exists */ add_filter('frm_validate_entry', 'validate_email27', 20, 2); function validate_email27($errors, $values){ if ($values['form_id'] == 27){ $dbc = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); //Check connection if (mysqli_connect_errno()) { echo 'Could not connect to MySQL: ' . mysqli_connect_error() ; } mysqli_select_db ($dbc, DB_NAME ); $memberdb = "wphq_wp_eMember_members_tbl"; // $user = $_POST['item_meta']['741']; $email = $_POST['item_meta']['772']; $check = mysqli_query($dbc,"SELECT * FROM $memberdb WHERE email = '$email'"); $rowcount = mysqli_num_rows($check); if ($rowcount == 0) { // email has not been found - error $errors['my_error'] = 'This email does not exist.'; return $errors; } } }
My guess is that the other two functions don't return $errors as a default, so when the code drops through, nothing is returned. My suggestion is to put them all in one function, like this https://paste2.org/vyDHvLfP and that will make debugging a lot easier. And make sure to always return $errors.
And if you are comfortable in doing so, write up a post in the appropriate forum sharing your code and what it does such that it might help someone else.
Please login or Register to submit your answer