Dada78 Posted January 16, 2008 Share Posted January 16, 2008 Ok here we go again. I thought I got all this figure out last time but I guess I didn't. I have this form where you can see from this link..... http://www.mesquitechristmas.com/local/submit.php I have it submitting to a MySQL which it does fine with no problems. I have a few fields that are required before submitting but they are not throwing any errors and I am not sure where I went wrong. Here is the code for the entire file.... <?php // here, we check if the form has been submitted, because we need to handle // redirection before we handle outputting the HTML stuff. if (isset($_POST['submit'])) { if (empty($_POST['displayname']) || empty($_POST['displaytype']) || empty($_POST['description']) || empty($_POST['address']) || empty($_POST['city']) || empty($_POST['state']) || empty($_POST['postal']) || empty($_POST['country']) || empty($_POST['imagefile'])) { $error = 'Please fill in all fields.'; // here, they have not filled in all fields. Set an error. } else { } } // MAKE CONNECTION include ('db_connect.php'); $displayname = $_POST['displayname']; $displaytype = $_POST['displaytype']; $description = $_POST['description']; $address = $_POST['address']; $address2 = $_POST['address2']; $city = $_POST['city']; $state = $_POST['state']; $postal = $_POST['postal']; $country = $_POST['country']; $website = $_POST['website']; $imagefile = $_POST['imagefile']; mysql_query("INSERT INTO users (displayname, displaytype, description, address, address2, city, state, postal, country, website, imagefile) VALUES ('$displayname', '$displaytype', '$description', '$address', '$address2', '$city', '$state', '$postal', '$country', '$website', '$imagefile')")or die (mysql_error()); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="description" content="Mesquite Texas Country Christmas" /> <meta name="keywords" content="Mesquite, Texas, Country Christmas" /> <meta name="author" content="NA" /> <link rel="stylesheet" type="text/css" href="/stylesheet.css" media="screen" title="FBC" /> <script type="text/javascript" src="drop_down.js"></script> <title>A Mesquite Country Christmas</title> </head> <body> <div id="wrap"> <a href="/index.html"> <img id="frontphoto" src="/images/header.png" width="760" height="237" alt="Mesquite Country Christmas" border="0"></a> <div id="menu"> <h2 class="hide">Menu:</h2> <ul id="avmenu"> <li><a href="/index.html">Home</a></li> <li><a href="/christmasstory.html">The Christmas Story</a></li> <li><a href="/directions.html">Directions</a></li> <li><a href="#">Information</a><ul> <li><a href="/information.html">Display Facts & Info</a></li> <li><a href="/faq.html">FAQ</a></li> <li><a href="/playlist.html">2008 Playlist</a></li> <li><a href="#">Christmas History</a></li> </ul></li> <li><a href="#">Photos</a> <ul> <li><a href="/2007photos.html">2007</a></li> </ul></li> <li><a href="#">Videos</a> <ul> <li><a href="/2007videos.html">2007</a></li> </ul></li> <li><a href="/guestbook.php">Guestbook</a></li> <li><a href="/webcam.html">Web Cam</a></li> <li><a href="/webradio.html">Internet Radio</a></li> <li><a href="http://www.noradsanta.org/" TARGET="_blank">Track Santa</a></li> <li><a href="/projects.html">Projects & How Tos</a></li> <li><a href="/links.html">Links</a></li> <li><a href="/contact_us.html">Contact Us</a></li> </ul> <center><img src="images/toys_for_tots.jpg" border="0" width="110" height="153" vspace="10"><a href="http://www.toysfortots.org/" TARGET="_blank"></a></center> <center><a href="http://christmas.bronners.com/2007/house/534.html"><img src="http://christmas.bronners.com/voteforme/vote.jpg" border="0" width="110" height="153" alt="christmas decorations" vspace="10"></a></center> </div> <div id="content"> <div class="fadebox"> <h2> Submit your Lights</h2> <hr /> <p><img src="/images/christmas-lights.jpg" width="153" height="208" alt="Submit Lights" align="left" border="0" hspace="10"> Thank you for submitting your home to the Mesquites Country Christmas display finder database. There are some things you should know before submitting to make your experience a pleasant one.</p><p>First of all, we do not release your personal information to anyone for any reason. The only exception to this, obviously, is the address of the display, the website (if it has one), and a picture of the display.</p><p>Secondly, please have a picture available to use for your display. You won't be able to submit your display without one. When submitting a picture, please make sure that the file is less than one megabyte (1 Meg or 1024k), and if possible, resize it to 640x480. Please also be sure your picture is in JPG format.</p><p>Your display will not immediately be entered into the Christmas Light Finder database. We will first have to approve your submission. This is so that those unscrupulous folks out there can't submit unacceptable pictures (not family friendly). Please allow up to 48 hours to be included into the database, though, the time before insertion is usually much shorter than that.</p> </div> <div class="fadebox"> <h2> Ready to submit? Fill out the form below:</h2> <hr /> <br /> <br /> <form action="submit.php" method="post" enctype="multipart/form-data"> <table> <tr> <td>Display Name*</td><td><input name="displayname" size="40" type="text"></td></tr> <tr> <td>Display Type*</td><td><select name="displaytype"><option value="Residential">Residential</option><option value="Neighborhood">Neighborhood</option><option value="Commercial">Commercial</option><option value="City/Government">City/Government</option><option value="Sponsored">Sponsored</option></select></td></tr> <tr><td>Description*</td><td><textarea name="description" cols="30" rows="5"></textarea></td></tr> <tr><td>Address*</td><td><input name="address" size="40" type="text"></td></tr><tr><td>Address 2</td><td><input name="address2" size="40" type="text"></td></tr> <tr><td>City*</td><td><input name="city" size="30" type="text" value="Mesquite"></td></tr> <tr><td>State/Province*</td><td><input name="state" size="30" type="text" value="Texas"></td></tr> <tr><td>Postal Code*</td><td><select name="postal"><option value="75149">75149</option><option value="75150">75150</option><option value="75180">75180</option><option value="75181">75181</option><option value="75185">75185</option><option value="75187">75187</option></select></td></tr> <tr><td>Country*</td><td><input name="country" size="30" type="text" value="United States"></td></tr> <tr><td>Website</td><td><input name="website" size="50" value="http://" type="text"></td></tr> <tr><td>Picture*</td><td><input name="imagefile" size="35" type="file"></td></tr> <tr><td colspan="2" style="border-top: 1px solid black;" align="right"> <br /> <input name="submitted" value="Submit Now" type="submit"></td></tr> <tr> <td colspan="2" align="right" class="errorText"> <?PHP // then we check for the error message if (isset($error)) { echo $error . '<br />'; } ?> </td> </tr></tbody></table></form> <br>* Fields are required. <br> </div> </div> <div id="footer"> © 2007 Mesquite Country Christmas <br /> <br /> <script type="text/javascript"><!-- google_ad_client = "pub-8048181801684156"; //468x60, created 1/8/08 google_ad_slot = "0360766123"; google_ad_width = 468; google_ad_height = 60; //--></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> </div> </div> </body> </html> -Thanks Quote Link to comment Share on other sites More sharing options...
priti Posted January 16, 2008 Share Posted January 16, 2008 Hi, Have you kept javascript validation ? your code checks for the error then after populating $error on html page you should be able to show those errors to users.I will give you a rough idea if (isset($_POST['submit'])) { if (empty($_POST['displayname']) || empty($_POST['displaytype']) || empty($_POST['description']) || empty($_POST['address']) || empty($_POST['city']) || empty($_POST['state']) || empty($_POST['postal']) || empty($_POST['country']) || empty($_POST['imagefile'])) { $_SESSION['error'] = 'Please fill in all fields.'; // here, they have not filled in all fields. Set an error. $_SESSION['error_display']=1; header('Location: ');//redirect to the form exit; //you don't want to proceed further anymore becos there is a error in form field's data } else { } } above code will redirect to you on your form page .your html form page has to get convert in to .php and in start do as follow if($_SESSION['error_display']==1) { echo $_SESSION['error']; $_SESSION['error_display']=0; } This will display your error. The second way is use AJAX.I would prefer one should do javascript validation so that you can save some hit to server before form processing and in case if client is not enabled js then your server side can save you. Regards Quote Link to comment Share on other sites More sharing options...
cooldude832 Posted January 16, 2008 Share Posted January 16, 2008 Asynchronous JavaScript and XML (AJAX) uses javascript to be honest the validation of data pre submitting is only for the end users benefit not your's. This is because it allows them to fix flaws before they actually "submit" to page 2, but your page 2 will still need to verify data as you never know if a user has JS turned off. Quote Link to comment Share on other sites More sharing options...
KrisNz Posted January 16, 2008 Share Posted January 16, 2008 Your code looks like its going to insert a record every time the page loads?!? The code that does the inserting should be in that empty else{} block you have. Quote Link to comment Share on other sites More sharing options...
Dada78 Posted January 16, 2008 Author Share Posted January 16, 2008 Your code looks like its going to insert a record every time the page loads?!? The code that does the inserting should be in that empty else{} block you have. Can you please explain what you mean by this? -Thanks Quote Link to comment Share on other sites More sharing options...
KrisNz Posted January 16, 2008 Share Posted January 16, 2008 I mean that a) the code that runs the insert query isn't inside any condition, its always going to be executed. b) CUT from // MAKE CONNECTION down to (but not including!) ?> and Paste after this : else { c) change if (isset($_POST['submit'])) { //TO if (isset($_POST['submitted'])) //this is the name of your submit button Quote Link to comment Share on other sites More sharing options...
Dada78 Posted January 16, 2008 Author Share Posted January 16, 2008 b) CUT from // MAKE CONNECTION down to (but not including!) ?> and Paste after this : else { You were right it would submit on refresh. I also didn't notice the submit button was named different from the form so I changed that as suggested. I am not clear about what to cut to I just cut the else { before the // MAKE CONNECTION and paste it after that or add another else {? -Thanks Quote Link to comment Share on other sites More sharing options...
KrisNz Posted January 16, 2008 Share Posted January 16, 2008 <?php // here, we check if the form has been submitted, because we need to handle // redirection before we handle outputting the HTML stuff. if (isset($_POST['submitted'])) { if (empty($_POST['displayname']) || empty($_POST['displaytype']) || empty($_POST['description']) || empty($_POST['address']) || empty($_POST['city']) || empty($_POST['state']) || empty($_POST['postal']) || empty($_POST['country']) || empty($_POST['imagefile'])) { $error = 'Please fill in all fields.'; // here, they have not filled in all fields. Set an error. } else { // MAKE CONNECTION include ('db_connect.php'); $displayname = $_POST['displayname']; $displaytype = $_POST['displaytype']; $description = $_POST['description']; $address = $_POST['address']; $address2 = $_POST['address2']; $city = $_POST['city']; $state = $_POST['state']; $postal = $_POST['postal']; $country = $_POST['country']; $website = $_POST['website']; $imagefile = $_POST['imagefile']; mysql_query("INSERT INTO users (displayname, displaytype, description, address, address2, city, state, postal, country, website, imagefile) VALUES ('$displayname', '$displaytype', '$description', '$address', '$address2', '$city', '$state', '$postal', '$country', '$website', '$imagefile')")or die (mysql_error()); } } ?> Quote Link to comment Share on other sites More sharing options...
Dada78 Posted January 16, 2008 Author Share Posted January 16, 2008 Thank you for your help it works great now. I had forgot all about those brackets. I knew they had to go at the end but didn't know how many. I am still getting use to closing If and else statements. I am not use to PHP. I just do HTML XHTML and CSS. The guy that is suppose to be doing the PHP for this site bailed and left me to figure it out. Thanks again. 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.