0

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&arrdate=$arrdate&non=$non&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

0

4 Answers 4

3

The line

header('Location: $url');

should be

header("Location: $url");

Variables aren't evaluated within single-quotes.

Sign up to request clarification or add additional context in comments.

1 Comment

+1 from me, but I was only a min or so behind you, wanna +1 me :p
1

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.

Comments

0

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

Comments

0

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>

3 Comments

I never thought of that! - I tried it and got an apache error page. The provider states that the url has to be in the following format... portals.uk.rezlynx.net/DHPPORTAL/… any ideas?
What exactly does the "wrong" URL look like? I suppose that they either don't get along with additional URL fields passed along (which wouldn't make sense) or that the browser uses a question mark for the first parameter instead of the &, which will cause problems, because there's already one parameter in the action URL. In latter case, add the following field to the URL: <input type="hidden" name="SiteID" value="DHOLDHALL" />
-1 If you use the GET method, the form data will override the query string in your form action

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.