Page 1 of 1

request a quote form

Posted: Wed May 13, 2009 1:21 am
by ramib
Hello,
I've created a request a quote form in php but i cant get it to do what i want. My validation on the form works but i would like to have the errors display under the appropriate field. for eg. if a user does not enter a name the error "Name is required" is displayed outside the form, I would like it to display under the name label and i would like to do the same for all fields that have validation.

here's my code:

Code: Select all

 
<?php
/* A PHP contact form. */
 
define('YOUR_EMAIL', 'ramibalaa@yahoo.com');
if (isset($_POST['mail'])) {
    $errors = array();
      // check to see if a name was entered
      if (!$_POST['name'])
         $errors[] = "Name is required";
    // Validate their e-mail address.
    if (!preg_match('/^[a-z0-9._-]+@[a-z0-9._-]+\.([a-z]{2,4})($|\.([a-z]{2,4})$)/i', $_POST['email'])){
        $errors[] = "<font color=\"red\">Invalid e-mail address.</font>";
    }
        
 
    if (count($errors)) {
        for ($i = 0; $i < count($errors); $i++) {
            printf('<div class="error">%s</div>', $errors[$i]);
        }
    } else {
    $subject = "Request a Quote";
         $from = stripslashes($_POST['name']);
         $msg = "Message sent by $from\n";
         $email =$_POST['email']; 
        $msg.="\nEmail: $email";
         $company =$_POST['Company']; 
        $msg.="\nCompany: $company";
         $existingwebsite =$_POST['ExistingWebsite']; 
         $msg.="\nExisting Website: $existingwebsite";
         $telephone =$_POST['Telephone']; 
         $msg.="\nTelephone: $telephone";
         $business =$_POST['Business']; 
         $msg.="\nType of Business: $business";
         $country =$_POST['country']; 
         $msg.="\nCountry: $country";
         $projectdescription =$_POST['projectdescription']; 
         $msg.="\nProject Description: $projectdescription";
         $ecommerce =$_POST['ecommerce'];
         $msg.="\nE-Commerce: $ecommerce";
         switch($_POST['Ecommerce']){
         case 'yes':
         $msg.= 'yes';
         break;
         case 'no':
         $msg.= 'no';
         case 'notsureyet':
         $msg.= 'notsureyet';
         break;
         }
         $site1 =$_POST['site1'];
         $msg.="\nSite 1: $site1";
         $site2 =$_POST['site2'];
         $msg.="\nSite 2: $site2";
         $site3 =$_POST['site3'];
         $msg.="\nSite 3: $site3";
         $budget =$_POST['budget']; 
         $msg.="\nBudget: $budget";
         $date =$_POST['date']; 
         $msg.="\nDate: $date";
         $foundusby =$_POST['foundusby']; 
         $msg.="\nFound Us By: $foundusby";
         $contactmeby =$_POST['contactmeby']; 
         $msg.="\nContact Me By: $contactmeby";
         $msg.="\n".stripslashes($_POST['MsgBody'])."\n";
         
       
        
        if (mail(YOUR_EMAIL, $subject, $msg)) {
        header( 'Location: thankyou.php' ) ;
       
        } 
    }
}
?>
 
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
</head>
<body>
<form name="form1" method="post" action="company-request-a-quote.php">
   <table border="0" align="center" cellpadding="5" cellspacing="0">
   <tr>
    <td colspan="2"><h3 style=" margin-bottom:0px;">Customer Information</h3></td>
    </tr>
      <tr>
         <td align="right" valign="middle">Name:</td><br />
         
         <td><input name="name" type="text" size="40">
         </td>
      </tr>
      <tr>
         <td align="right" valign="middle">Email:</td>
         <td><input name="email" type="text" size="40">
         </td>
      </tr>
      <tr>
         <td align="right" valign="middle">Company:</td>
         <td><input name="Company" type="text" size="40">
         </td>
      </tr>
      <tr>
         <td align="right" valign="middle">Existing Website:</td>
         <td><input name="ExistingWebsite" type="text" size="40" value="http://www.">
         </td>
      </tr>
      <tr>
         <td align="right" valign="middle">Telephone:</td>
         <td><input name="Telephone" type="text" size="40">
         </td>
      </tr>
      <tr>
         <td align="right" valign="middle">Type of Business:</td>
         <td><input name="Business" type="text" size="40">
         </td>
      </tr>
      <tr>
    <td align="right" valign="middle">Country:</td>
      <td><select name="country" id="country">
        <option value="Afghanistan">Afghanistan </option>
        <option value="Albania">Albania </option>
        <option value="Algeria">Algeria </option>
        <option value="Andorra">Andorra </option>
        <option value="Angola">Angola </option>
        <option value="Anguilla">Anguilla </option>
        <option value="Antarctica">Antarctica </option>
        <option value="Antigua & Barbudo">Antigua & Barbudo </option>
        <option value="Argentina">Argentina </option>
        <option value="Armenia">Armenia </option>
        <option value="Aruba">Aruba </option>
        <option value="Australia">Australia </option>
        <option value="Austria">Austria </option>
        <option value="Azerbaijan">Azerbaijan </option>
        <option value="Bahamas">Bahamas </option>
        <option value="Bahrain">Bahrain </option>
        <option value="Bangladesh ">Bangladesh </option>
        <option value="Barbados ">Barbados </option>
        <option value="Belarus ">Belarus </option>
        <option value="Belize ">Belize </option>
        <option value="Benin ">Benin </option>
        <option value="Bermuda ">Bermuda </option>
        <option value="Bhutan ">Bhutan </option>
        <option value="Bolivia ">Bolivia </option>
        <option value="Bosnia & Herzegovina ">Bosnia & Herzegovina </option>
        <option value="Botswana ">Botswana </option>
        <option value="Bouvet Island ">Bouvet Island </option>
        <option value="Brazil ">Brazil </option>
        <option value="British Indian Ocean Territories ">British Indian Ocean Territories </option>
        <option value="Brunei Darussalam ">Brunei Darussalam </option>
        <option value="Bulgaria ">Bulgaria </option>
        <option value="Burkina Faso ">Burkina Faso </option>
        <option value="Burundi ">Burundi </option>
        <option value="Cambodia ">Cambodia </option>
        <option value="Cameroon ">Cameroon </option>
        <option value="Canada " selected="selected">Canada </option>
        <option value="Cape Verde ">Cape Verde </option>
        <option value="Cayman Islands ">Cayman Islands </option>
        <option value="Central African Republic ">Central African Republic </option>
        <option value="Chad ">Chad </option>
        <option value="Chile ">Chile </option>
        <option value="China ">China </option>
        <option value="Christmas Island ">Christmas Island </option>
        <option value="Cocos (Keeling) Islands ">Cocos (Keeling) Islands </option>
        <option value="Colombia ">Colombia </option>
        <option value="Comoros ">Comoros </option>
        <option value="Congo ">Congo </option>
        <option value="Cook Islands ">Cook Islands </option>
        <option value="Costa Rica ">Costa Rica </option>
        <option value="Cote D'ivoire">Cote D'ivoire </option>
        <option value="Croatia ">Croatia </option>
        <option value="Cuba ">Cuba </option>
        <option value="Cyprus ">Cyprus </option>
        <option value="Czech Republic ">Czech Republic </option>
        <option value="Denmark ">Denmark </option>
        <option value="Djibouti ">Djibouti </option>
        <option value="Dominica ">Dominica </option>
        <option value="Dominican Republic ">Dominican Republic </option>
        <option value="East Timor ">East Timor </option>
        <option value="Ecuador ">Ecuador </option>
        <option value="Egypt ">Egypt </option>
        <option value="El Salvador ">El Salvador </option>
        <option value="Equatorial Guinea ">Equatorial Guinea </option>
        <option value="Eritrea ">Eritrea </option>
        <option value="Estonia ">Estonia </option>
        <option value="Ethiopia ">Ethiopia </option>
        <option value="Falkland Islands (Malvinas) ">Falkland Islands (Malvinas) </option>
        <option value="Faroe Islands ">Faroe Islands </option>
        <option value="Fiji ">Fiji </option>
        <option value="Finland ">Finland </option>
        <option value="France ">France </option>
        <option value="France, Metropolitan ">France, Metropolitan </option>
        <option value="French Guiana ">French Guiana </option>
        <option value="French Polynesia ">French Polynesia </option>
        <option value="French Southern Territories ">French Southern Territories </option>
        <option value="Gabon ">Gabon </option>
        <option value="Gambia ">Gambia </option>
        <option value="Georgia ">Georgia </option>
        <option value="Germany ">Germany </option>
        <option value="Ghana ">Ghana </option>
        <option value="Gibraltar ">Gibraltar </option>
        <option value="Greece ">Greece </option>
        <option value="Greenland ">Greenland </option>
        <option value="Grenada ">Grenada </option>
        <option value="Guadeloupe ">Guadeloupe </option>
        <option value="Guam ">Guam </option>
        <option value="Guatemala ">Guatemala </option>
        <option value="Guinea ">Guinea </option>
        <option value="Guinea-Bissau ">Guinea-Bissau </option>
        <option value="Guyana ">Guyana </option>
        <option value="Haiti ">Haiti </option>
        <option value="Heard and Mcdonald Islands ">Heard and Mcdonald Islands </option>
        <option value="Honduras ">Honduras </option>
        <option value="Hong Kong ">Hong Kong </option>
        <option value="Hungary ">Hungary </option>
        <option value="Iceland ">Iceland </option>
        <option value="India ">India </option>
        <option value="Indonesia ">Indonesia </option>
        <option value="Iran ">Iran </option>
        <option value="Iraq ">Iraq </option>
        <option value="Ireland ">Ireland </option>
        <option value="Israel ">Israel </option>
        <option value="Italy ">Italy </option>
        <option value="Jamaica ">Jamaica </option>
        <option value="Japan ">Japan </option>
        <option value="Jordan ">Jordan </option>
        <option value="Kazakhstan ">Kazakhstan </option>
        <option value="Kenya ">Kenya </option>
        <option value="Kiribati ">Kiribati </option>
        <option value="Korea, Democratic People's Republic ">Korea, Democratic People's Republic </option>
        <option value="Korea, Republic of ">Korea, Republic of </option>
        <option value="Kuwait ">Kuwait </option>
        <option value="Kyrgyzstan ">Kyrgyzstan </option>
        <option value="Laos Peoples Democratic Republic of ">Laos Peoples Democratic Republic of </option>
        <option value="Latvia ">Latvia </option>
        <option value="Lebanon ">Lebanon </option>
        <option value="Lesotho ">Lesotho </option>
        <option value="Liberia ">Liberia </option>
        <option value="Libyan Arab Jamahiriya ">Libyan Arab Jamahiriya </option>
        <option value="Liechtenstein ">Liechtenstein </option>
        <option value="Lithuania ">Lithuania </option>
        <option value="Luxembourg ">Luxembourg </option>
        <option value="Macau ">Macau </option>
        <option value="Madagascar ">Madagascar </option>
        <option value="Malawi ">Malawi </option>
        <option value="Malaysia ">Malaysia </option>
        <option value="Maldives ">Maldives </option>
        <option value="Mali ">Mali </option>
        <option value="Malta ">Malta </option>
        <option value="Marshall Islands ">Marshall Islands </option>
        <option value="Martinique ">Martinique </option>
        <option value="Mauritania ">Mauritania </option>
        <option value="Mauritius ">Mauritius </option>
        <option value="Mayotte ">Mayotte </option>
        <option value="Mexico ">Mexico </option>
        <option value="Micronesia ">Micronesia </option>
        <option value="Moldova ">Moldova </option>
        <option value="Monaco ">Monaco </option>
        <option value="Mongolia ">Mongolia </option>
        <option value="Montserrat ">Montserrat </option>
        <option value="Morocco ">Morocco </option>
        <option value="Mozambique ">Mozambique </option>
        <option value="Myanmar ">Myanmar </option>
        <option value="Namibia ">Namibia </option>
        <option value="Nauru ">Nauru </option>
        <option value="Nepal ">Nepal </option>
        <option value="Netherlands ">Netherlands </option>
        <option value="Netherlands Antilles ">Netherlands Antilles </option>
        <option value="New Caledonia ">New Caledonia </option>
        <option value="New Zealand ">New Zealand </option>
        <option value="Nicaragua ">Nicaragua </option>
        <option value="Niger ">Niger </option>
        <option value="Nigeria ">Nigeria </option>
        <option value="Niue ">Niue </option>
        <option value="Norfolk Island ">Norfolk Island </option>
        <option value="Northern Mariana Islands ">Northern Mariana Islands </option>
        <option value="Norway ">Norway </option>
        <option value="Oman ">Oman </option>
        <option value="Pakistan ">Pakistan </option>
        <option value="Palau ">Palau </option>
        <option value="Panama ">Panama </option>
        <option value="Papua New Guinea ">Papua New Guinea </option>
        <option value="Paraguay ">Paraguay </option>
        <option value="Peru ">Peru </option>
        <option value="Philippines ">Philippines </option>
        <option value="Pitcairn ">Pitcairn </option>
        <option value="Poland ">Poland </option>
        <option value="Portugal ">Portugal </option>
        <option value="Puerto Rico ">Puerto Rico </option>
        <option value="Qatar ">Qatar </option>
        <option value="Reunion ">Reunion </option>
        <option value="Romania ">Romania </option>
        <option value="Russian Federation ">Russian Federation </option>
        <option value="Rwanda ">Rwanda </option>
        <option value="Saint Helena ">Saint Helena </option>
        <option value="Saint Kitts & Nevis ">Saint Kitts & Nevis </option>
        <option value="Saint Lucia ">Saint Lucia </option>
        <option value="Saint Pierre & Miquelon ">Saint Pierre & Miquelon </option>
        <option value="Saint Vincent & the Grenadines ">Saint Vincent & the Grenadines </option>
        <option value="Samoa, African ">Samoa, African </option>
        <option value="Samoa, American ">Samoa, American </option>
        <option value="San Marino ">San Marino </option>
        <option value="Sao Tome & Principe ">Sao Tome & Principe </option>
        <option value="Saudi Arabia ">Saudi Arabia </option>
        <option value="Senegal ">Senegal </option>
        <option value="Seychelles ">Seychelles </option>
        <option value="Sierra Leone ">Sierra Leone </option>
        <option value="Singapore ">Singapore </option>
        <option value="Slovakia ">Slovakia </option>
        <option value="Slovenia ">Slovenia </option>
        <option value="Solomon Islands ">Solomon Islands </option>
        <option value="Somalia ">Somalia </option>
        <option value="South Africa ">South Africa </option>
        <option value="South Georgia & Sandwich Islands ">South Georgia & Sandwich Islands </option>
        <option value="Spain ">Spain </option>
        <option value="Sri Lanka ">Sri Lanka </option>
        <option value="Sudan ">Sudan </option>
        <option value="Suriname ">Suriname </option>
        <option value="Svalbard & Jan Mayen ">Svalbard & Jan Mayen</option>
        <option value="Swaziland ">Swaziland </option>
        <option value="Sweden ">Sweden </option>
        <option value="Switzerland ">Switzerland </option>
        <option value="Syrian Arab Republic ">Syrian Arab Republic </option>
        <option value="Taiwan ">Taiwan </option>
        <option value="Tajikistan ">Tajikistan </option>
        <option value="Tanzania ">Tanzania </option>
        <option value="Thailand ">Thailand </option>
        <option value="Togo ">Togo </option>
        <option value="Tokelau ">Tokelau </option>
        <option value="Tonga ">Tonga </option>
        <option value="Trinidad & Tobago ">Trinidad & Tobago </option>
        <option value="Tunisia ">Tunisia </option>
        <option value="Turkey ">Turkey </option>
        <option value="Turkmenistan ">Turkmenistan </option>
        <option value="Turks and Caicos Islands ">Turks and Caicos Islands </option>
        <option value="Tuvalu ">Tuvalu </option>
        <option value="Uganda ">Uganda </option>
        <option value="Ukraine ">Ukraine </option>
        <option value="United Arab Emirates ">United Arab Emirates </option>
        <option value="United Kingdom ">United Kingdom </option>
        <option value="United States ">United States </option>
        <option value="United States Minor Outlying Islands ">United States Minor Outlying Islands </option>
        <option value="Uruguay ">Uruguay </option>
        <option value="Uzbekistan ">Uzbekistan </option>
        <option value="Vanuatu ">Vanuatu </option>
        <option value="Vatican City State ">Vatican City State </option>
        <option value="Venezuela ">Venezuela </option>
        <option value="Vietnam ">Vietnam </option>
        <option value="Virgin Islands (British) ">Virgin Islands (British)</option>
        <option value="Virgin Islands (U.S.) ">Virgin Islands (U.S.) </option>
        <option value="Wallis & Futuna Islands ">Wallis & Futuna Islands </option>
        <option value="Western Sahara ">Western Sahara </option>
        <option value="Yemen ">Yemen </option>
        <option value="Yugoslavia ">Yugoslavia </option>
        <option value="Zaire ">Zaire </option>
        <option value="Zambia ">Zambia </option>
        <option value="Zimbabwe">Zimbabwe</option>
      </select></td>
    </span>
  </tr>
  <tr>
    <td colspan="2" align="left" valign="top">&nbsp;</td>
    </tr>
  <tr>
  <tr>
    <td colspan="2"><h3 style=" margin-bottom:0px;">Project Information</h3></td>
    </tr>
     <tr>
    <td align="right" >Project Description: </td>
    <td><textarea name="projectdescription"  id="projectdescription"></textarea></td>
    </tr>
    <tr>
    <td align="right" > E-Commerce?</td>
    <td align="left" >
      <label style="margin-left:8px;">Yes
      <input name="ecommerce" type="radio" value="Yes" checked="CHECKED" />
      </label>
      <label style="margin-left:25px;">No
      <input name="ecommerce" type="radio" value="No" />
      </label>
      <label style="margin-left:25px;">Not Sure Yet
      <input name="ecommerce" type="radio" value="Not Sure Yet" />
      </label>
    </span></td>
  </tr>
  <tr>
    <td align="right">Top three sites you<br />like most </td>
    <td><input name="site1" type="text" class="formfield" id="site1" value="http://www." /></td>
  </tr>
   <tr>
    <td>&nbsp;</td>
    <td><input name="site2" type="text" class="formfield" id="site2" value="http://www." /></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input name="site3" type="text" class="formfield" id="site2" value="http://www." /></td>
  </tr>
  <tr>
    <td align="right">Budget</td>
    <td align="left" valign="top">
      <select name="budget" class="formfield" id="budget">
        <option selected="selected">Please Choose</option>
        <option value="Under $699">Under $699</option>
        <option value="$699 - $999">$699 - $999</option>
        <option value="$999 - $2000">$999 - $2000</option>
        <option value="$2,000 - 5,000">$2,000 - 5,000</option>
        <option value="$5,000 - $10,000">$5,000 - $10,000</option>
        <option value="$10,000+">$10,000+</option>
      </select>
    </td>
  </tr>
  <tr>
    <td align="right">Project Deadline</td>
    <td align="left" valign="top"><input name="date" type="text" class="formfield" id="projectdeadline" value="Enter the date on wich the project needs to be completed" /></td>
  </tr>
  <tr>
    <td colspan="2" align="left" valign="top">&nbsp;</td>
    </tr>
  <tr>
    <td align="left"><strong>Other Information </strong></td>
    <td align="left" valign="top">&nbsp;</td>
  </tr>
  <tr>
    <td align="right">Found Us By</td>
    <td>
      <select name="foundusby" class="formfield" id="foundusby" style="margin-bottom:10px;">
        <option selected="selected">Please Choose</option>
        <option value="Searh Engine">Searh Engine</option>
        <option value="Link from other site">Link from other site</option>
        <option value="Referred By Friend">Referred By Friend</option>
        <option value="Directory Search">Directory Search</option>
        <option value="Other">Other</option>
      </select>
    </td>
    <tr>
    <td align="right">Contact Me By</td>
    <td><select name="contactmeby" class="formfield" id="contactmeby">
      <option selected="selected">Please Choose</option>
      <option value="Email">Email</option>
      <option value="Telephone">Telephone</option>
      <option value="Either">Either</option>
    </select></td>
  </tr>
  </tr>
  
      
     
    
      <tr>
         <td> </td>
         <td><input type="submit" name="mail"
               value="Submit">
         </td>
      </tr>
   </table>
    </form>
 
</body>
</html>
 
here's the link to this page:
http://ramibalaa.com/company-request-a-quote.php


any help would be appreciated.
thank you.

Re: request a quote form

Posted: Wed May 13, 2009 2:20 am
by Griven
Wow, that's a lot of code. Be sure to put your code in between code blocks next time. :wink:

I'm not going to pick through all of it, but I'll point you in the right direction.

There are two ways you can accomplish what you want: JavaScript, and session variables.

JavaScript:
Pro: Works instantaneously--you don't have to reload the page. This provides a richer user experience.
Con: Can be stripped out client-side, and must be backed up by server-side validation.

Session variables:
Pro: It's all on the server, which leaves the client out of the validation process.
Con: If it's a long form, you should take extra steps to re-insert the user's previously typed data, as a form submittal and subsequent redirect will wipe out what they typed. On long forms, this can be a major headache.

As I don't know much JavaScript, I'll give you a short example of how to do this with a session variable.
Note: There are other ways of doing this, I'm sure. This is just one example.

Code: Select all

 
<?php
session_start();
?>
<form method="post" action="submittedform.php">
Name: <input type="text" name="name" />
<?php
      [color=#BFBF00]/* Check to see if the error message is set. */[/color]
  if (isset($_SESSION['nameError'])) 
  { 
    echo '<div>', $_SESSION['nameError'] ,'</div>';
      [color=#BFBF00]/* Clear the error message so it goes away after a page refresh--else it'll stay until the session is destroyed. */[/color]
    unset($_SESSION['nameError'];  
  }
?>
</form>
 
You would set that particular session variable in your "submittedform.php" page, after checking for a valid value for "Name".

Your best bet is to use a combination of Javascript and server-side validation.

Re: request a quote form

Posted: Wed May 13, 2009 7:25 pm
by ramib
thank you for your help! I'm still a beginner in php (and programming over all) I'll do what you suggested.
Hopefully it works!
:?