Jump to content

[SOLVED] Check form feilds before submiting.


Dada78

Recommended Posts

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

 

 

Link to comment
Share on other sites

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

 

 

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

 

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

Link to comment
Share on other sites

<?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()); 
    }

}


?>

 

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.