2009-11-17 71 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> 

這是應該處理從表單傳遞的變量並將它們通過url傳遞給預訂提供程序的php。 當表單僅提交一個沒有錯誤的白色屏幕時,沒有任何反應。

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

} 

?> 

任何人都可以看到我失蹤了嗎?

在此先感謝..

+0

嘗試var_dump($ _ POST); – Greg 2009-11-17 12:26:32

回答

1

如果通過PHP的皮棉檢查(PHP -l)運行你的代碼,你會看到你在62行(最後一行)語法錯誤

你簡直想念大括號,需要關閉最初的「if」語句。

+0

謝謝,這也有幫助! – 2009-11-17 12:36:56

3

header('Location: $url'); 

應該是

header("Location: $url"); 

變量不單引號內進行評價。

+0

從我+1,但我只有一分鐘左右,想要+1我:p – Lizard 2009-11-17 12:34:36

+0

感謝這有助於! – 2009-11-17 12:36:20

0

的問題可能是

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

可嘗試

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

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

你就不能使用該網址在表單的action屬性和方法設置成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 any ideas ? – 2009-11-17 12:42:44

+0

「錯誤」的URL究竟是什麼樣的?我想他們要麼與相關的附加URL字段不一致(這是沒有意義的),要麼瀏覽器使用第一個參數而不是'&'的問號,這會導致問題,因爲存在動作URL中已經有一個參數。在後一種情況下,將以下字段添加到URL: '' – Franz 2009-11-17 14:05:20

+0

PS:並明顯從操作URL中刪除參數... – Franz 2009-11-17 14:05:52