2009-11-17 3 views
0

У меня есть следующая форма, которая позволяет пользователю выбрать даты и номера для бронирования отеля.Передача переменных в URL-адрес с php

<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> 

Вот PHP, который должен обрабатывать переменные, переданные из формы и передать их через URL к провайдеру бронирования. Ничего не происходит, когда форма отправляется только на белый экран без ошибок.

<?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"; 
} 

} 

?> 

Может ли кто-нибудь увидеть то, что мне не хватает?

Заранее спасибо ..

Dan

+0

Попробуйте var_dump ($ _ POST); – Greg

ответ

1

Если запустить свой код через пух проверку в PHP (PHP -l), вы увидите, у вас есть синтаксическая ошибка в строке 62 (последняя строка)

Вам просто не хватает фигурной скобки, которая должна закрыть начальное выражение «если».

+0

Спасибо, это тоже помогло! –

3

Линия

header('Location: $url'); 

должен быть

header("Location: $url"); 

Переменные не оцениваются в одинарные кавычки.

+0

+1 от меня, но я был всего лишь минут назад, хочу +1 меня: p – Lizard

+0

Спасибо, это помогло! –

0

Вопрос может быть

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

Либо попробовать

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

или

header("Location: $url"); 
exit(); 
# using the double quotes will parse the $url variable 
0

Разве вы не можете просто использовать этот URL в атрибуте действия вашей формы и установить метод GET?

<form action="https://portals.uk.rezlynx.net/DHPPORTAL/wfrmpakquery.aspx?SiteID=DHOLDHALL" method="get"> 
    [...] 
</form> 
+0

Я никогда не думал об этом! - Я попробовал и получил страницу с ошибкой apache. Поставщик утверждает, что URL-адрес должен быть в следующем формате: https://portals.uk.rezlynx.net/DHPPORTAL/wfrmpakquery.aspx?SiteID=DHOLDHALL&arrdate=12/11/2009&non=2&norooms=3 любые идеи ? –

+0

Как выглядит «неправильный» URL-адрес? Я полагаю, что они либо не ладят с дополнительными полями URL, которые прошли (что не имеет смысла), либо что браузер использует знак вопроса для первого параметра вместо '&', что вызовет проблемы, потому что есть уже один параметр в URL-адресе действия. В последнем случае добавьте в URL следующее поле: '' – Franz

+0

PS: И, очевидно, удалить параметр из URL-адреса действия ... – Franz

Смежные вопросы