views:

219

answers:

1

Hello there,

I've created a complex php contact form that I'm looking to implement into my contact page, but for some reason expression engine isn't recognizing the php code even though I've enabled it in my preferences.

Here's what the form looks like, I've tried a few things like embedding the file instead of pasting the actual code on the page - but nothing has worked yet.

    <?php
if($_POST && $_POST['submit'])
{
    // Put form posts into varibles
     $name = $_POST['name'];
     $mainphone = $_POST['mainphone'];
     $email = $_POST['email'];
     $altphone = $_POST['altphone'];
     $contacttime = $_POST['contacttime'];
     $airport = $_POST['airport'];
     $departdate = $_POST['departdate'];
     $departdateflex = $_POST['departdateflex'];
     $duration = $_POST['duration'];
     $prefcountry = $_POST['prefcountry'];
     $prefresort = $_POST['prefresort'];
     $hotels = $_POST['hotels'];
     $numadults = $_POST['numadults'];
     $numunder12 = $_POST['numunder12'];
     $numunder2 = $_POST['numunder2'];
     $roomarrange = $_POST['roomarrange'];
     $maxbudget = $_POST['maxbudget'];
     $addreq = $_POST['addreq'];

    // Set Errors To None
     $errors = false;

    // Validate Form
     if(!$mainphone)
     {
      $errors = true;
      $errMsgs .= "<li>Please enter your phone number</li>";
     }

     if(!$email)
     {
      $errors = true;
      $errMsgs .= "<li>Please enter your email address</li>";
     }  

     if(!$airport)
     {
      $errors = true;
      $errMsgs .= "<li>Please select the airport in which you would like to depart from</li>";
     }   

     if(!$departdate)
     {
      $errors = true;
      $errMsgs .= "<li>Please enter the date you would like to depart</li>";
     }

     if(!$duration)
     {
      $errors = true;
      $errMsgs .= "<li>Please enter the duration of your stay</li>";
     }     

     if(!$prefcountry)
     {
      $errors = true;
      $errMsgs .= "<li>Please enter the preferred country you wish to visit</li>";
     }  

     if(!$numadults)
     {
      $errors = true;
      $errMsgs .= "<li>Please enter the number of adults travelling</li>";
     }    
    // Check For Errors
     if($errors)
     {
      // Errors Found
       $foundErrors = $errMsgs;
     }
     else
     {
      // No Errors Found || Process the form

      // Create Email
       $emailMsg = "<html><body>";
       $emailMsg .= "<p>";
       $emailMsg .= "<strong>Name:</strong> $name <br />";
       $emailMsg .= "<strong>Main Phone:</strong> $mainphone <br />";
       $emailMsg .= "<strong>Email:</strong> $email <br />";
       $emailMsg .= "<strong>Alternate Phone:</strong> $altphone <br />";
       $emailMsg .= "<strong>Contact Time:</strong> $contacttime <br />";
       $emailMsg .= "<strong>Airport's:</strong> <br />";
       foreach($airport as $v)
       {
        $emailMsg .= '- '.$v."<br />";
       }
       $emailMsg .= "<strong>Depart Date:</strong> $departdate <br />";
       $emailMsg .= "<strong>Departure Flexible By:</strong> $departdateflex <br />";
       $emailMsg .= "<strong>Duration:</strong> $duration <br />";
       $emailMsg .= "<strong>Preferred Country:</strong> $prefcountry <br />";
       $emailMsg .= "<strong>Preferred Resort:</strong> $prefresort <br />";
       $emailMsg .= "<strong>No. Adults:</strong> $numadults <br />";
       $emailMsg .= "<strong>No. Under 12's:</strong> $numunder12 <br />";
       $emailMsg .= "<strong>No. Under 2's:</strong> $numunder2 <br />";
       $emailMsg .= "<strong>Room Arrangements:</strong> $roomarrange <br />";
       $emailMsg .= "<strong>Max Budget:</strong> $maxbudget <br />";
       $emailMsg .= "<strong>Additional Requirements:</strong> $addreq <br /></p>";
       $emailMsg .= "</body></html>";

       $Name = "$name"; //senders name
       $email = "$email"; //senders e-mail adress
       $recipient = "[email protected]"; //recipient
       $mail_body = "$emailMsg"; //mail body
       $subject = "Web enquiry form"; //subject
       $header = "From: ". $Name . " <" . $email . ">\r\n" . "Content-type: text/html; charset=iso-8859-1"; //optional headerfields

       ini_set('sendmail_from', '[email protected]'); //Suggested by "Some Guy"

       mail($recipient, $subject, $mail_body, $header); //mail command :)
     }
}
?>

<div class="errors">
    <h2>Sorry but your enquiry could not be sent</h2>
    <p>There were problems with the following fields:</p>

    <ul>
     <?php echo $foundErrors; ?>
    </ul>
</div>
<form name="form" method="post" action="">
    <legend>x</legend>
    <fieldset>
     <label for="name">
      Name:
      <input type="text" name="name" value="<?= $name; ?>">
     </label>

     <label for="mainphone">
      Main Contact Phone Number:<span class="required">*</span>
      <input type="text" name="mainphone" value="<?= $mainphone; ?>">
     </label>

     <label for="email">
      Email Address:<span class="required">*</span>
      <input type="text" name="email" value="<?= $email; ?>">
     </label>

     <label for="altphone">
      Alternative Contact Phone Number:
      <input type="text" name="altphone" value="<?= $altphone; ?>">
     </label>
    </fieldset>
    <fieldset>
     <label for="contacttime">Preferred Contact Time:</label>

     <label for="contacttime">
      <input type="radio" name="contacttime" <?php if($contacttime == '10am-12pm') { echo 'checked'; } ?> value="10am-12pm"/>
      10am - 12pm
     </label>

     <label for="contacttime">
      <input type="radio" name="contacttime" <?php if($contacttime == '12pm-2pm') { echo 'checked'; } ?> value="12pm-2pm"/>
      12pm - 2pm
     </label>

     <label for="contacttime">
      <input type="radio" name="contacttime" <?php if($contacttime == '2pm-4pm') { echo 'checked'; } ?> value="2pm-4pm"/>
      2pm - 4pm
     </label>

     <label for="contacttime">
      <input type="radio" name="contacttime" <?php if($contacttime == '4pm-6pm') { echo 'checked'; } ?> value="4pm-6pm"/>
      4pm - 6pm
     </label>

     <label for="contacttime">
      <input type="radio" name="contacttime" <?php if($contacttime == '6pm-7pm') { echo 'checked'; } ?> value="6pm-7pm"/>
      6pm - 7pm
     </label> 
    </fieldset>
    <fieldset>
     <label for="airport">Preferred Departure Airport:</label>

     <label for="airport">
      <input type="checkbox" name="airport[0]" <?php if($airport[0]) { echo 'checked'; } ?> value="Heathrow"/>
      Heathrow
     </label>

     <label for="airport">
      <input type="checkbox" name="airport[1]" <?php if($airport[1]) { echo 'checked'; } ?>  value="Gatwick"/>
      Gatwick
     </label>

     <label for="airport">
      <input type="checkbox" name="airport[2]" <?php if($airport[2]) { echo 'checked'; } ?> value="Manchester"/>
      Manchester
     </label>

     <label for="airport">
      <input type="checkbox" name="airport[3]" <?php if($airport[3]) { echo 'checked'; } ?> value="Birmingham"/>
      Birmingham
     </label>

     <label for="airport">
      <input type="checkbox" name="airport[4]" <?php if($airport[4]) { echo 'checked'; } ?> value="Glasgow"/>
      Glasgow
     </label>
    </fieldset>
    <fieldset>
     <label for="departdate">
      Departure Date: <span class="required">*</span>
      <input type="text" name="departdate" value="<?= $departdate; ?>">
     </label>

     <label for="departdateflex">Departure Date Flexibility:</label>
     <select name="departdateflex">
      <option <?php if($departdateflex == '+/- 0 days') { echo 'selected'; } ?> value="+/- 0 days">+/- 0 days</option>
      <option <?php if($departdateflex == '+/- 1 days') { echo 'selected'; } ?> value="+/- 1 days">+/- 1 days</option>
      <option <?php if($departdateflex == '+/- 2 days') { echo 'selected'; } ?> value="+/- 2 days">+/- 2 days</option>
      <option <?php if($departdateflex == '+/- 3 days') { echo 'selected'; } ?> value="+/- 3 days">+/- 3 days</option>
      <option <?php if($departdateflex == '+/- 4 days') { echo 'selected'; } ?> value="+/- 4 days">+/- 4 days</option>
      <option <?php if($departdateflex == '+/- 5 days') { echo 'selected'; } ?> value="+/- 5 days">+/- 5 days</option>
      <option <?php if($departdateflex == '+/- 6 days') { echo 'selected'; } ?> value="+/- 6 days">+/- 6 days</option>
      <option <?php if($departdateflex == '+/- 7 days') { echo 'selected'; } ?> value="+/- 7 days">+/- 7 days</option>
     </select>

     <label for="duration">Duration:</label>
     <select name="duration">
      <option <?php if($duration == '1 night') { echo 'selected'; } ?> value="1 night">1 night</option>
      <option <?php if($duration == '2 nights') { echo 'selected'; } ?> value="2 nights">2 nights</option>
      <option <?php if($duration == '3 nights') { echo 'selected'; } ?> value="3 nights">3 nights</option>
      <option <?php if($duration == '4 nights') { echo 'selected'; } ?> value="4 nights">4 nights</option>
      <option <?php if($duration == '5 nights') { echo 'selected'; } ?> value="5 nights">5 nights</option>
      <option <?php if($duration == '6 nights') { echo 'selected'; } ?> value="6 nights">6 nights</option>
      <option <?php if($duration == '7 nights') { echo 'selected'; } ?> value="7 nights">7 nights</option>
      <option <?php if($duration == '8 nights') { echo 'selected'; } ?> value="8 nights">8 nights</option>
      <option <?php if($duration == '9 nights') { echo 'selected'; } ?> value="9 nights">9 nights</option>
      <option <?php if($duration == '10 nights') { echo 'selected'; } ?> value="10 nights">10 nights</option>
      <option <?php if($duration == '11 nights') { echo 'selected'; } ?> value="11 nights">11 nights</option>
      <option <?php if($duration == '12 nights') { echo 'selected'; } ?> value="12 nights">12 nights</option>
      <option <?php if($duration == '13 nights') { echo 'selected'; } ?> value="13 nights">13 nights</option>
      <option <?php if($duration == '14 nights') { echo 'selected'; } ?> value="14 nights">14 nights</option>
      <option <?php if($duration == '15 nights') { echo 'selected'; } ?> value="15 nights">15 nights</option>
      <option <?php if($duration == '15+ nights') { echo 'selected'; } ?> value="15+ nights">15+ nights</option>
      <option <?php if($duration == '21 nights') { echo 'selected'; } ?> value="21 nights">21 nights</option>
      <option <?php if($duration == '28 nights') { echo 'selected'; } ?> value="28 nights">28 nights</option>
     </select>

     <label for="prefcountry">
      Preferred Destination Country:<span class="required">*</span>
      <input type="text" name="prefcountry" value="<?= $prefcountry; ?>">
     </label>

     <label for="prefresort">
      Preferred Destination Resort:
      <input type="text" name="prefresort" value="<?= $prefresort; ?>">
     </label>

     <label for="hotels">
      Name of hotel(s) of interest:
      <textarea rows="5" cols="20" name="hotels"><?= $hotels; ?></textarea>
     </label>

     <label for="numadults">
      Number of adults:<span class="required">*</span>
      <input type="text" name="numadults" value="<?= $numadults; ?>">
     </label>

     <label for="numunder12">
      Number of Children under 12:
      <input type="text" name="numunder12" value="<?= $numunder12; ?>">
     </label>

     <label for="numunder2">
      Number of Infants under 2:
      <input type="text" name="numunder2" value="<?= $numunder2; ?>">
     </label>

     <label for="roomarrange">Room Arrangements:</label>
     <select name="roomarrange">
      <option <?php if($roomarrange == 'single (sleeps 1)') { echo 'selected'; } ?> value="single (sleeps 1)">single (sleeps 1)</option>
      <option <?php if($roomarrange == 'twin (sleeps 2)') { echo 'selected'; } ?> value="twin (sleeps 2)">twin (sleeps 2)</option>
      <option <?php if($roomarrange == 'double (sleeps 2)') { echo 'selected'; } ?> value="double (sleeps 2)">double (sleeps 2)</option>
      <option <?php if($roomarrange == 'twin plus child (above 2 years)') { echo 'selected'; } ?> value="twin plus child (above 2 years)">twin plus child (above 2 years)</option>
      <option <?php if($roomarrange == 'double plus child (above 2 years)') { echo 'selected'; } ?> value="double plus child (above 2 years)">double plus child (above 2 years)</option>
      <option <?php if($roomarrange == 'family plan 2 adults &amp; 2 children') { echo 'selected'; } ?> value="family plan 2 adults &amp; 2 children">family plan 2 adults & 2 children</option>
      <option <?php if($roomarrange == 'family plan 2 adults &amp; 3 children') { echo 'selected'; } ?> value="family plan 2 adults &amp; 3 children">family plan 2 adults & 3 children</option>
      <option <?php if($roomarrange == 'triple (sleeps 3)') { echo 'selected'; } ?> value="triple (sleeps 3)">triple (sleeps 3)</option>
      <option <?php if($roomarrange == 'triple plus child (above 2 years)') { echo 'selected'; } ?> value="triple plus child (above 2 years)">triple plus child (above 2 years)</option>
      <option <?php if($roomarrange == 'quad/villas/homes (sleeps 4+)') { echo 'selected'; } ?> value="quad/villas/homes (sleeps 4+)">quad/villas/homes (sleeps 4+)</option>
     </select>

     <label for="maxbudget">
      Maximum Budget per person &pound;:
      <input type="text" name="maxbudget" value="<?= $maxbudget; ?>">
     </label>

     <label for="addreq">
      Additional Requirements:
      <textarea rows="5" cols="20" name="addreq"><?= $addreq; ?></textarea>
     </label>
    </fieldset>
    <fieldset>
     <input type="submit" value="submit" name="submit">
    </fieldset>
</form>

If anyone can help, it would be appreciated - thanks.

+3  A: 

First you need to enable PHP on the template. The PHP Parsing Stage I'm set to is Input, granted it might not matter. I'll bet that your POST data is empty. That's because EE shoves those into a global object. To get to em, here's what you have to do:

// Declare the global $IN to get access to POST variables
global $IN;

// Check for submit
$submit = $IN->GBL('submit', 'POST');

// Setup the post variables
$name = $IN->GBL('name', 'POST');
$mainphone = $IN->GBL('mainphone', 'POST');
$email = $IN->GBL('email', 'POST');
$altphone = $IN->GBL('altphone', 'POST');
$contacttime = $IN->GBL('contacttime', 'POST');
$airport = $IN->GBL('airport', 'POST');
$departdate = $IN->GBL('departdate', 'POST');
$departdateflex = $IN->GBL('departdateflex', 'POST');
$duration = $IN->GBL('duration', 'POST');
$prefcountry = $IN->GBL('prefcountry', 'POST');
$prefresort = $IN->GBL('prefresort', 'POST');
$hotels = $IN->GBL('hotels', 'POST');
$numadults = $IN->GBL('numadults', 'POST');
$numunder12 = $IN->GBL('numunder12', 'POST');
$numunder2 = $IN->GBL('numunder2', 'POST');
$roomarrange = $IN->GBL('roomarrange', 'POST');
$maxbudget = $IN->GBL('maxbudget', 'POST');
$addreq = $IN->GBL('addreq', 'POST');

Having said all that, if you haven't tried out Freeform, then you should. It integrates well with EE and should meet most of your needs.

Wes Baker