tags:

views:

456

answers:

5

Hi,

I have the following form which allows a user to select dates/rooms for a hotel reservation.

<form action="booking-form.php" method="post">
  <fieldset>
    <div class="select-date">
      <label>Arrival Date</label>
      <select name="arrd" class="day">
        <option value="1" >1</option>
        ... snip ...
        <option value="24" selected="selected">24</option>
      </select>

      <select name="arrm" class="month">
        <option value="01" >January</option>
        ... snip ...
        <option value="11" selected="selected">November</option>
      </select>
      <select name="arry" class="year">
        <option value="2009" selected="selected">2009</option>
        ... snip ...
      </select>
    </div>
    <div class="more">
    <div class="info">
      <label>Days</label>
      <select name="days">
        <option value="1">01</option>
        ... snip ...
        <option value="7" selected="selected">07</option>
      </select>
    </div>
    <div class="info">
      <label>Rooms</label>
      <select name="rooms">
        <option value="1">01</option>
        ... snip ...
      </select>
    </div>
    </div>
    <input type="submit" value="Check availabilty"/>
    <input type="hidden"  name="submitted" value="TRUE"/>
  </fieldset>
</form>

Here is the php which is supposed to process the variables passed from the form and pass them via a url to the booking provider. Nothing happens when the form is submitted just a white screen with no errors.

<?php

 ini_set ('display_errors',1);  
 error_reporting (E_ALL & ~ E_NOTICE);  

 if (isset($_POST['submitted'])){

  $errors = array();

  // A bunch of if's for all the fields and the error messages.


  if (empty($_POST['arrd'])) {
 $errors[] = 'Please select a day';
} else{
 $arrd = ($_POST['arrd']);
}

if (empty($_POST['arrm'])) {
 $errors[] = 'Please select a month';
} else{
 $arrm = ($_POST['arrm']);
}

if (empty($_POST['arry'])) {
 $errors[] = 'Please select a year';
} else{
 $arry = ($_POST['arry']);
}

if (empty($_POST['non'])) {
 $errors[] = 'Please choose a number of nights';
} else{
 $non = ($_POST['non']);
}


if (empty($_POST['norooms'])) {
 $errors[] = 'Please choose a number of rooms';
} else{
 $norooms = ($_POST['norooms']);
}


if (empty($errors)){
$arrdate = $arrd . " " . $arrm ."" . $arry; 

$url ="https://portals.uk.rezlynx.net/DHPPORTAL/wfrmpakquery.aspx?SiteID=DHOLDHALL&amp;arrdate=$arrdate&amp;non=$non&amp;norooms=$norooms";
 header('Location: $url');
exit();

 }

 else{
 foreach($errors as $msg){

 echo"-msg<br/>\n";
 }

 }

 ?>

Can anyone see what I am missing?

Thanks in advance..

Dan

+1  A: 

If you run your code through PHP's lint checker (php -l), you'll see you have a syntax error at line 62 (the last line)

You're simply missing the curly brace that needs to close the initial "if" statement.

Matt
Thanks this helped too!
Dan C
+3  A: 

The line

header('Location: $url');

should be

header("Location: $url");

Variables aren't evaluated within single-quotes.

Greg
+1 from me, but I was only a min or so behind you, wanna +1 me :p
Lizard
Thanks this helped!
Dan C
A: 

The issue could be

header('Location: $url');
exit();

Either try

header('Location: '.$url);
exit();

or

header("Location: $url");
exit();
# using the double quotes will parse the $url variable
Lizard
+1  A: 

Can't you just use that URL in your form's action attribute and set the method to GET?

<form action="https://portals.uk.rezlynx.net/DHPPORTAL/wfrmpakquery.aspx?SiteID=DHOLDHALL" method="get">
    [...]
</form>
Franz
Dan C
Franz
P.S.: And obviously remove the parameter from the action URL...
Franz
A: 

Anyone please help.

I try to create my url variable to write into my form.

I use a variable like this: mydomain.com/[email protected]

..and I put a code on the form value, like this

value=""

I try to run this url with variable (mydomain.com/[email protected]), but my form value still empty.

How To Write The Variable Into My Form?

I,m very appreciated for any answer on here, and onto my email at esaulreview @ gmail[.] com

Thanking you.

Esaul ND