Dede
Dede

Reputation: 55

php form values not showing

My form won't show the values unless I add them to the required = array and not everything is required. So the firname, lasname, and email will show in the email that's sent but it won't show the phone and message (I have other fields to add too).

Here is my code:

<?php

if(!$_POST) exit;

$email = $_POST['email'];

//$error[] = preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS';
if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email )){
    $error.="Invalid email address entered";
    $errors=1;
}

if($errors==1) echo $error;
else{
    $values = array('firname','lasname','email','phone','message');
    $required = array('firname','lasname','email',);

    $your_email = "[email protected]";
    $email_subject = "Reservations Form: ".$_POST['subject'];
    $email_content = "new reservation:\n";

    foreach($values as $key => $value){
        if(in_array($value,$required)){
            if ($key != 'subject' && $key != '') {
                if( empty($_POST[$value]) ) { echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; }
            }
            $email_content .= $value.': '.$_POST[$value]."\n";
        }
    }

    if(@mail($your_email,$email_subject,$email_content)) {
        header('Location: http://www.example.com/test/reservation-submission.html');
    } else {
        echo 'ERROR!';
    }
}
?>`

<form action="reservations.php" method="post" id="contactform">
      <ol>
        <li><label>First Name *</label>
          <input id="firname" name="firname" class="text" value="" />
        </li>
         <li><label>Last Name *</label>
          <input id="lasname" name="lasname" class="text" value="" />
        </li>
        <li><label>Email *</label>
          <input id="email" name="email" class="text" type="email" value="" />
        </li>
        <li><label>Phone Number *</label>
          <input id="phone" name="phone" class="text" value="" />
        </li>
        <li><label>Best Time To Call</label>
          <select name="best time to call" id="call" class="drop">
        <option selected="selected" value="Morning">Morning</option>
        <option value="Afternoon">Afternoon</option>
        <option value="Evening">Evening</option>
                </select>
        </li>
        <br />
        <li><label>Age</label>
          <select name="age" id="age" class="drop">
        <option selected="selected" value="25+">25+</option>
        <option value="21-24">21-24</option>
                </select>
        </li>
        <br />
        <li> <label> Rental *</label>
        <select name="rental" id="rental" class="drop">
        <option selected="selected" value="12 Passenger Van">12 Passenger Van</option>
        <option value="15 Passenger Van">15 Passenger Van</option>
        <option value="Cargo Van">Cargo Van</option>
                </select> </li>
                <br />
                <li> <label> Pick up Location *</label>
        <select name="location" id="location" class="drop">
        <option selected="selected" value="Select Location">Select Location</option>
        <option value="U-Save JFK">U-Save JFK</option>
        <option value="U-Save LGA">U-Save LGA</option>
                </select> </li>
                <br />
        <li><label>Estimated Mileage</label>
        <select name="mileage" id="mileage" class="drop">
        <option selected="selected" value="Under 100">Under 100</option>
        <option value="100-500">100-500</option>
        <option value="500+">500+</option>
                </select>
        </li>
        <br />
        <li><label>Pick Up Date *</label>
          <input id="pick-up-date" name="pick-up-date" class="date" value="MM/DD/YY" /> <a href="javascript:showCal('Calendar1')"><img class="cal" align="absmiddle" src="cal/cal.gif" border="0" alt="Calendar"></a> 
        </li>
        <br />
        <li><label>Pick Up Time *</label>
          <select class="drop" name="pick up time" id="Pick Up Time">
    <option value="12:00 am">12:00 am</option> <option value="12:30 am">12:30 am</option>
    <option value="01:00 am">01:00 am</option> <option value="01:30 am">01:30 am</option>
    <option value="02:00 am">02:00 am</option> <option value="02:30 am">02:30 am</option>
    <option value="03:00 am">03:00 am</option> <option value="03:30 am">03:30 am</option>
    <option value="04:00 am">04:00 am</option> <option value="04:30 am">04:30 am</option>
    <option value="05:00 am">05:00 am</option> <option value="05:30 am">05:30 am</option>
    <option value="06:00 am">06:00 am</option> <option value="06:30 am">06:30 am</option>
    <option value="07:00 am">07:00 am</option> <option value="07:30 am">07:30 am</option>
    <option value="08:00 am">08:00 am</option> <option value="08:30 am">08:30 am</option>
    <option value="09:00 am">09:00 am</option> <option value="09:30 am">09:30 am</option>
    <option value="10:00 am">10:00 am</option> <option value="10:30 am">10:30 am</option>
    <option value="11:00 am">11:00 am</option> <option value="11:30 am">11:30 am</option>
    <option value="12:00 pm">12:00 pm</option> <option value="12:30 pm">12:30 pm</option>
    <option value="01:00 pm">01:00 pm</option> <option value="01:30 pm">01:30 pm</option>
    <option value="02:00 pm">02:00 pm</option> <option value="02:30 pm">02:30 pm</option>
    <option value="03:00 pm">03:00 pm</option> <option value="03:30 pm">03:30 pm</option>
    <option value="04:00 pm">04:00 pm</option> <option value="04:30 pm">04:30 pm</option>
    <option value="05:00 pm">05:00 pm</option> <option value="05:30 pm">05:30 pm</option>
    <option value="06:00 pm">06:00 pm</option> <option value="06:30 pm">06:30 pm</option>
    <option value="07:00 pm">07:00 pm</option> <option value="07:30 pm">07:30 pm</option>
    <option value="08:00 pm">08:00 pm</option> <option value="08:30 pm">08:30 pm</option>
    <option value="09:00 pm">09:00 pm</option> <option value="09:30 pm">09:30 pm</option>
    <option value="10:00 pm">10:00 pm</option> <option value="10:30 pm">10:30 pm</option>
    <option value="11:00 pm">11:00 pm</option> <option value="11:30 pm">11:30 pm</option>
        </select>
        </li>
        <br />
        <li><label>Drop Off Date *</label>
          <input id="drop-off-date" name="Drop Off Date" class="date" value="MM/DD/YY" /> <a href="javascript:showCal('Calendar2')"><img class="cal" align="absmiddle" src="cal/cal.gif" border="0" alt="Calendar" /></a> 
        </li>
        <br />
        <li><label>Drop Off Time *</label>
          <select class="drop" name="Drop Off Time" id="Drop Off Time">
    <option value="12:00 am">12:00 am</option> <option value="12:30 am">12:30 am</option>
    <option value="01:00 am">01:00 am</option> <option value="01:30 am">01:30 am</option>
    <option value="02:00 am">02:00 am</option> <option value="02:30 am">02:30 am</option>
    <option value="03:00 am">03:00 am</option> <option value="03:30 am">03:30 am</option>
    <option value="04:00 am">04:00 am</option> <option value="04:30 am">04:30 am</option>
    <option value="05:00 am">05:00 am</option> <option value="05:30 am">05:30 am</option>
    <option value="06:00 am">06:00 am</option> <option value="06:30 am">06:30 am</option>
    <option value="07:00 am">07:00 am</option> <option value="07:30 am">07:30 am</option>
    <option value="08:00 am">08:00 am</option> <option value="08:30 am">08:30 am</option>
    <option value="09:00 am">09:00 am</option> <option value="09:30 am">09:30 am</option>
    <option value="10:00 am">10:00 am</option> <option value="10:30 am">10:30 am</option>
    <option value="11:00 am">11:00 am</option> <option value="11:30 am">11:30 am</option>
    <option value="12:00 pm">12:00 pm</option> <option value="12:30 pm">12:30 pm</option>
    <option value="01:00 pm">01:00 pm</option> <option value="01:30 pm">01:30 pm</option>
    <option value="02:00 pm">02:00 pm</option> <option value="02:30 pm">02:30 pm</option>
    <option value="03:00 pm">03:00 pm</option> <option value="03:30 pm">03:30 pm</option>
    <option value="04:00 pm">04:00 pm</option> <option value="04:30 pm">04:30 pm</option>
    <option value="05:00 pm">05:00 pm</option> <option value="05:30 pm">05:30 pm</option>
    <option value="06:00 pm">06:00 pm</option> <option value="06:30 pm">06:30 pm</option>
    <option value="07:00 pm">07:00 pm</option> <option value="07:30 pm">07:30 pm</option>
    <option value="08:00 pm">08:00 pm</option> <option value="08:30 pm">08:30 pm</option>
    <option value="09:00 pm">09:00 pm</option> <option value="09:30 pm">09:30 pm</option>
    <option value="10:00 pm">10:00 pm</option> <option value="10:30 pm">10:30 pm</option>
    <option value="11:00 pm">11:00 pm</option> <option value="11:30 pm">11:30 pm</option>
        </select>
        </li>
        <br />

        <li><label>Additional Infomation</label>
          <textarea id="message" name="message" rows="6" cols="50"></textarea>
        </li>
        <li class="button1">
          <input type="image" name="imageField" id="imageField" src="images/reserve-now-btn.png" class="send" />
          <div class="clr"></div>
        </li>
      </ol>
    </form>

Upvotes: 4

Views: 1139

Answers (3)

Veger
Veger

Reputation: 37905

You have placed a { at the wrong location, which results in the non-required field being ignored all together.

foreach($values as $key => $value){
  if(in_array($value,$required)){
    if ($key != 'subject' && $key != '') {
      if( empty($_POST[$value]) ) { echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; }
    }
  } // <- Good
  $email_content .= $value.': '.$_POST[$value]."\n";
//  } <- Wrong
}

Upvotes: 0

Chris
Chris

Reputation: 3338

Change this section:

foreach($values as $key => $value){
  if(in_array($value,$required)){
    if ($key != 'subject' && $key != '') {
      if( empty($_POST[$value]) ) { echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; }
    }
    $email_content .= $value.': '.$_POST[$value]."\n";
  }
}

to...

foreach($values as $key => $value){
  if(in_array($value,$required)){
    if ($key != 'subject' && $key != '') {
      if( empty($_POST[$value]) ) { echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; }
    }
  }
  $email_content .= $value) .': '.$_POST[$value])."\n";
}

To oversimplify, you are taking each item in your $values array and searching for it in the form. If it is in the $required list, then you check if it is blank. If it is blank, then it shows an error message. Otherwise, you want to add it to the message that will be sent by mail ($email_content).

Previously, the "add it to the email content" part was only executed within the "if it is required" loop. I moved it down, so that it is a part of the "for each value loop.

Upvotes: 3

jtheman
jtheman

Reputation: 7491

You should move out the $email_content part from the if(in_array($value,$required)){ clause. One level up:

foreach($values as $key => $value){
   if(in_array($value,$required)){
     if ($key != 'subject' && $key != '') {
       if( empty($_POST[$value]) ) { echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; }
     }
     // from here
   }
   $email_content .= $value.': '.$_POST[$value]."\n";  // to here
}

Because you want not only required fields to be added to the contents

Upvotes: 2

Related Questions