2014-11-22 49 views
2

我創建了一個餐廳網站的預訂頁面,其中有一張表格用於預訂晚餐預訂。它包含一個下拉框,允許用戶選擇在聚會中用餐的人數。它還包含一個單選按鈕,允許用戶選擇是否要在貴賓區就座(是/否)。從html表格的PHP計算

參加聚會的每個人都需要額外支付5英鎊的預訂費,如果他們想要在貴賓區就座,他們將被收取額外的5英鎊。一旦表單驗證成功,用戶將被髮送到一個確認頁面,在那裏他們輸入的預訂詳細信息將顯示給他們。

目前我在我的網站的確認頁面上有一個計算,它正確地計算了派對的大小成本,但我的問題是,即使VIP區域選擇是「否」,它仍然增加了5英鎊費用就好像用戶選擇了「是」一樣。

這是我的預訂頁面上的相關的html代碼:

<?php 
session_start(); 
if (isset($_POST['submit'])) { 
    $_SESSION['party'] = $_POST['party']; 
} 

if (!empty($_POST['vip'])) 
    $_SESSION['vip'] = $_POST['vip']; 
?> 

... 

<strong>Select Party Size* :</strong> 
<br> 
<select name="party" id="party" value="<?php echo $party;?>"> 
<option value="">Please Select</option> 
<option <?php if (isset($party) && $party=="1") echo "selected";?> value="1">1 Person (+£5)</option> 
<option <?php if (isset($party) && $party=="2") echo "selected";?> value="2">2 People (+£10)</option> 
<option <?php if (isset($party) && $party=="3") echo "selected";?> value="3">3 People (+£15)</option> 
<option <?php if (isset($party) && $party=="4") echo "selected";?> value="4">4 People (+£20)</option> 
<option <?php if (isset($party) && $party=="5") echo "selected";?> value="5">5 People (+£25)</option> 
<option <?php if (isset($party) && $party=="6") echo "selected";?> value="6">6 People (+£30)</option> 
<option <?php if (isset($party) && $party=="7") echo "selected";?> value="7">7 People (+£35)</option> 
<option <?php if (isset($party) && $party=="8") echo "selected";?> value="8">8 People (+£40)</option> 
<option <?php if (isset($party) && $party=="9") echo "selected";?> value="9">9 People (+£45)</option> 
<option <?php if (isset($party) && $party=="10") echo "selected";?> value="10">10+ People (+£50)</option> 
</select> 

<strong> VIP area* : </strong> <br><br> 
Yes (+£5) <input type="radio" name="vip" <?php if (isset($vip) && $vip=="Yes") echo "checked";?> value="Yes"> 
<br><span id="vip" class="error"><?php echo $vipErr;?></span><br> 
No <input type="radio" name="vip" <?php if (isset($vip) && $vip=="No") echo "checked";?> value="No"> 

這裏是確認頁面上的相關計算:

<b>Total Reservation Costs: </b><br><br> £ 
<?php 
    if (isset($_SESSION['party']) && is_numeric($_SESSION['party'])) { 
     $party = (int)$_SESSION['party']; 
     $vip = isset($_SESSION['vip']) ? 5 : 0; 
     echo (($party * 5) + $vip); 
    } 
?> 

有誰知道我可以使計算只如果用戶選擇了「是」,那麼爲VIP區域座位增加5英鎊?我是網絡語言新手,所以任何幫助將不勝感激。謝謝!

+1

您可以通過添加一個循環「爲」從1到10,讓您的

回答

1

你三元說法目前僅檢查。問題在於,無論用戶選擇什麼(「是」或「否」),都會設置它,因爲在設置會話變量的部分中,如果$_POST['vip']不爲空,條件語句將設置會話變量。

嘗試檢查它是否等於「是」這樣的:

<b>Total Reservation Costs: </b><br><br> £ 
<?php 
    if (isset($_SESSION['party']) && is_numeric($_SESSION['party'])) { 
     $party = (int)$_SESSION['party']; 
     $vip = (isset($_SESSION['vip']) && $_SESSION['vip'] === 'Yes') ? 5 : 0; 
     echo (($party * 5) + $vip); 
    } 
?> 
0

您需要重做計算並添加一個變量作爲VIP的成本。像

if ($vip =='Yes'){$vip_cost = +5)}else{$vip_cost=0} 

然後加上每個人的成本和添加$ vip_cost

+0

能給我一個更好的例子?我是新來的PHP,這是我很難理解對不起 – Oscar 2014-11-22 14:51:32

1

沒有必要對你的代碼與會話複雜化。只需使用$ _ POST:如果$_SESSION['vip']設置

<?php 

$options = array(
    1 => '1 Person (+£5)', 
    2 => '2 Person (+£10)', 
    3 => '3 Person (+£15)', 
    ... 
    10 => '1 Person (+£50)', 
); 
?> 
... 

<select name="party" id="party"> 
    <option value="-1">Please select</option> 
    <?php 
     foreach ($options as $persons => $text) { 
      $selected = isset($_POST['party'] && $_POST['party'] == $persons) ? ' selected' : ''; 
      echo '<option value="'.$persons.'".'.$selected.'>'.$text.'</option>'; 
     } 
    ?> 
</select> 
... 
Yes <input type="radio" value="1" name="vip" id="vip_yes" <?php if (isset($_POST['vip']) && $_POST['vip'] == 1) { echo 'checked' } ?> /> 
No <input type="radio" value="0" name="vip" id="vip_no" <?php if (isset($_POST['vip']) && $_POST['vip'] == 0) { echo 'checked' } ?> /> 


... 
<?php 
    if (isset($_POST['party']) && is_numeric($_POST['party'])) { 
     $price = $_POST['party'] * 5; 
     if (isset($_POST['vip']) && $_POST['vip'] == 1) $price += 5; 
    }else{ 
     //-- no post  
     $price = 0; 
    } 

    if ($price == 0) { 
     echo 'Please select your options..'; 
    }else{ 
     echo 'Your price is £' . $price; 
    } 
?> 
+0

感謝您的反饋,有沒有辦法與會議做到這一點?我只問,因爲我沒有很多時間來更改我的代碼,並且除了這一個計算之外,我還有一切功能: – Oscar 2014-11-22 14:50:58

0
<?php 
$form = '<form action="'.$_SERVER['PHP_SELF'].'" method="post"> 
<select name="party" id="party" > 
    <option value="">--Select People--</option>  
    <option value="1">1 People (+£5)</option>   
    <option value="2">2 People (+£10)</option>  
    <option value="3">3 People (+£15)</option>  
    <option value="4">4 People (+£20)</option>  
    <option value="5">5 People (+£25)</option>  
    <option value="6">6 People (+£30)</option>  
    <option value="7">7 People (+£35)</option>  
    <option value="8">8 People (+£40)</option>  
    <option value="9">9 People (+£45)</option> 
    <option value="10">10People (+£50)</option> 
</select><br /><br /> 

<strong> VIP area* : </strong> <br><br> 
Yes (+£5) <input type="radio" name="vip" value="Yes"> 
No <input type="radio" name="vip" value="No"><br /><br /> 

<input type="submit" value="Submit" name="submit" />'; 


if (isset($_POST['submit'])){ 
if (isset($_POST['party'])){ 
    $cost = ($_POST['party'] *5); 
    if ($_POST['vip'] =='Yes'){$vip_cost = 5; $vip_text='with vip';}else{$vip_cost=0; $vip_text='';} 
$total = ($cost+$vip_cost); 
$display = 'Your reservation for '.$_POST['paty'].' '.$vip_text.' will cost '.$total; 
} 
    else{ 
$display = 'Please Select How Many People<br />'.$form;} 

}else{ 

$display=$form; 
} 

?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 

<body> 
<?php echo $display;?> 
</body> 
</html>