dgow13 Posted June 28, 2010 Report Share Posted June 28, 2010 On my contact us page I have a form that, when submitted, sends visitor to thank you page. I am not great at php so, how do I make all or some of the fields in the contact form required? script from both pages is below... From contact us page: <div class="contact_form" style="left: 578px; top: 318px"> <form method="post" action="thankyou.php"> <input name="first_name" style="width: 200px" type="text" /><br /> <br /> <input name="last_name" style="width: 200px" type="text" /><br /> <br /> <input name="email" style="width: 200px" type="text" /><br /> <br /> <input name="phone" style="width: 200px" type="text" /><br /> <br /> <input name="radio" value="Website Design and Development"type="radio" /><span class="style3"><strong> Website Design and Development<br /> <input name="radio" value="Graphic and Logo Designs" type="radio" /> Graphic and Logo Designs<br /> <input name="radio" value="Animation" type="radio" /> Animation<br /> <input name="radio" value="Web Hosting" type="radio" /> Web Hosting<br /> <input name="radio" value="Domain Name Registration" type="radio" /> Domain Name Registration<br /> <input name="radio" value="Search Engine Optimization" type="radio" /> Search Engine Optimization<br /> <input name="radio" value="Business Card Print Media Designs" type="radio" /> Business Card Print Media Designs<br /> <input name="radio" value="General Questions" type="radio" /> General Questions<br /> <br /> </strong></span> <textarea name="message" style="width: 300px; height: 40px"></textarea><br /> <br /> <input name="Submit" style="width: 100px" type="submit" value="Submit" /> <input name="Reset" style="width: 100px" type="reset" value="Reset" /> </form> </div> From thank you page: <?php //php form data to email code// $first_name = $_REQUEST['first_name']; $last_name = $_REQUEST['last_name']; $email = $_REQUEST['email']; $phone = $_REQUEST['phone']; $radio = $_REQUEST['radio']; $message = $_REQUEST['message']; $headers = "From: $email"; $email_message = "First Name: {$first_name}\n\rLast Name: {$last_name}\n\rEmail: {$email}\n\rPhone: {$phone}\n\rInterested In: {$radio}\n\rMessage: {$message}"; mail('dgow@simplewebs13.com',$radio,$email_message,$headers); ?> Quote Link to comment Share on other sites More sharing options...
jstern Posted June 28, 2010 Report Share Posted June 28, 2010 theres a few ways to go about something like this. I'd probably use something along the lines of if (!isset($_REQUEST['first_name'])) { $errormessage = "Please fill in the name field"; } else { $first_name = $_REQUEST['first_name']; .... you could elaborate on the if statement to include the required fields by using '&&' (ex. (!isset($_REQUEST['first_name'])) && (!isset($_REQUEST['last_name'])) && ect.. , and echo out the customer error message(s) depending on what wasn't filled in. Using the '!isset' method is like saying "if (is not set) then do this or else this". I find its best to treat things as guilty before proved innocent in php. There's a much easier way to do this in the Zend Framework / Zend Forms, and that is what I am more accustomed to nowadays, so someone else might have a better way than what I have said. Quote Link to comment Share on other sites More sharing options...
dgow13 Posted June 28, 2010 Author Report Share Posted June 28, 2010 Thank you for your suggestion. I can try this but, where do I put it... on the contact us page or the thank you page? And where on the page? Quote Link to comment Share on other sites More sharing options...
jstern Posted June 28, 2010 Report Share Posted June 28, 2010 in the php file where your declaring the values. if (!isset($_REQUEST['first_name'] && $_REQUEST['last_name'] && $_REQUEST['email'] && $_REQUEST['phone'] && $_REQUEST['radio'] && $_REQUEST['message'])) { $errormessage = 'some generic message here about not filling all required fields'; // you can check them all separately instead for a unique error message depending on which one wasn't filled in. } else { $first_name = $_REQUEST['first_name']; $last_name = $_REQUEST['last_name']; $email = $_REQUEST['email']; $phone = $_REQUEST['phone']; $radio = $_REQUEST['radio']; $message = $_REQUEST['message']; .... } Quote Link to comment Share on other sites More sharing options...
dgow13 Posted June 28, 2010 Author Report Share Posted June 28, 2010 Ok. I copied and pasted your suggestion in the correct place, it's where I thought it should actually go, but it did not work. When I leave the first name area blank on the contact us page and then click "Submit", it brings up a blank page. Here is the updated code: <?php //php form data to email code// if (!isset($_REQUEST['first_name'] && $_REQUEST['last_name'] && $_REQUEST['email'] && $_REQUEST['phone'] && $_REQUEST['radio'] && $_REQUEST['message'])) { $errormessage = 'Please fill in the required fields'; } else { $first_name = $_REQUEST['first_name']; $last_name = $_REQUEST['last_name']; $email = $_REQUEST['email']; $phone = $_REQUEST['phone']; $radio = $_REQUEST['radio']; $message = $_REQUEST['message']; $headers = "From: $email"; $email_message = "First Name: {$first_name}\n\rLast Name: {$last_name}\n\rEmail: {$email}\n\rPhone: {$phone}\n\rInterested In: {$radio}\n\rMessage: {$message}"; mail('dgow@simplewebs13.com',$radio,$email_message,$headers); ?> Quote Link to comment Share on other sites More sharing options...
jstern Posted June 29, 2010 Report Share Posted June 29, 2010 well you still need to echo out the $errormessage to the screen, or the confirmation, depending on if the fields were submitted successfully or not. Quote Link to comment Share on other sites More sharing options...
dgow13 Posted June 29, 2010 Author Report Share Posted June 29, 2010 Ok, but I'm not sure how to do that. I haven't done a lot of php... more of a web & graphic designer, not so much writing script. I am trying to learn every chance I get. Quote Link to comment Share on other sites More sharing options...
jstern Posted June 29, 2010 Report Share Posted June 29, 2010 I haven't tested any of this to ensure it works properly. And normally I wouldn't be throwing echo's to the screen like this, but like I said, I am used to Zend Framework where I can utilize the views a little differently, but this might be what your looking for, at least the barebones. <?php //php form data to email code// if (!isset($_REQUEST['first_name'] && $_REQUEST['last_name'] && $_REQUEST['email'] && $_REQUEST['phone'] && $_REQUEST['radio'] && $_REQUEST['message'])) { $errormessage = 'Please fill in the required fields'; echo $errormessage; } else { $first_name = $_REQUEST['first_name']; $last_name = $_REQUEST['last_name']; $email = $_REQUEST['email']; $phone = $_REQUEST['phone']; $radio = $_REQUEST['radio']; $message = $_REQUEST['message']; $headers = "From: $email"; $email_message = "First Name: {$first_name}\n\rLast Name: {$last_name}\n\rEmail: {$email}\n\rPhone: {$phone}\n\rInterested In: {$radio}\n\rMessage: {$message}"; mail('dgow@simplewebs13.com',$radio,$email_message,$headers); echo "Successfully submitted!"; ?> Quote Link to comment Share on other sites More sharing options...
dgow13 Posted June 29, 2010 Author Report Share Posted June 29, 2010 Still getting blank page. The script is on the thank you page and not really associated with the contact us page. To me, if a field is not filled in, once you hit submit it has no idea that you haven't filled in all the required fields. I would think, what little knowledge I have about script, that the required info needs to be on the page that is getting filled out. Quote Link to comment Share on other sites More sharing options...
bishwadeep Posted June 30, 2010 Report Share Posted June 30, 2010 Hi, You can use javascript validation in that case. Here is a sample for javascript validation. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script language="javascript"> function Formvalidation(form){ if(form.fname.value==""){ alert("Please Enter First Name"); form.fname.focus(); return false; } if(form.lname.value==""){ alert("Please Enter Last Name"); form.lname.focus(); return false; } //if(form.otherfield.value=="") //continue................. } </script> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <form id="form1" name="form1" method="post" action=""> <table width="100%" border="0" cellspacing="0" cellpadding="3"> <tr> <td width="23%">First Name</td> <td width="77%"><label for="name"></label> <input type="text" name="fname" id="fname" /></td> </tr> <tr> <td>Last Name</td> <td><label for="email"></label> <input type="text" name="lname" id="lname" /></td> </tr> <tr> <td><input type="submit" name="button" id="button" value="Submit" onclick="return Formvalidation(this.form);"/></td> <td> </td> </tr> </table> </form> </body> </html> Quote Link to comment Share on other sites More sharing options...
falkencreative Posted June 30, 2010 Report Share Posted June 30, 2010 I just added a 5 part video tutorial to the KS University covering Javascript/PHP based form validation. Take a look if you're a KS University subscriber and think it might help. In regards to Bishwadeep's comments above, using Javascript is fine (I'm a fan of the jQuery Validate plugin: http://docs.jquery.com/Plugins/Validation) but keep in mind that it doesn't mean that you shouldn't have PHP validation as well. Javascript can easily be turned off by the visitor, and you don't want validation to be disabled if that is the case. Quote Link to comment Share on other sites More sharing options...
dgow13 Posted July 11, 2010 Author Report Share Posted July 11, 2010 I finally had time to review those video tutorials you suggested... excellent. Just what I needed. Worked great and now I have the validation I wanted for my contact form. I must say... all of your videos are really user friendly, easy to understand and follow along with for those of us that are not experts. Well worth the monthly cost of being involved in the university. Thank again. Quote Link to comment Share on other sites More sharing options...
falkencreative Posted July 11, 2010 Report Share Posted July 11, 2010 I must say... all of your videos are really user friendly, easy to understand and follow along with for those of us that are not experts. Glad to hear that. If there is anything I can do better, or if you have any questions about anything I talked about in the video, let me know. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.