根据用户选择添加变量

时间:2014-11-21 18:31:49

标签: php forms addition

我已经为一家餐馆网站创建了一个预订页面,其中包含一个预订晚餐预订的表格。它包含一个下拉框,允许用户选择将在他们的聚会中用餐的人数。它还包含一个单选按钮,允许用户选择是否希望坐在VIP区域。

表单验证成功后,用户将被发送到确认页面,其中将显示他们输入的预订详细信息。

派对中的每个人都需要额外支付5英镑的预订费用,如果他们希望坐在贵宾区,他们将额外收取5英镑。

我希望将这两个因素加在一起,并在确认页面上向用户显示总预订费用,但我目前的代码并未执行此操作。

以下是我的预订页面上的相关代码:

<?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> £
 <?php
 if (isset($_POST['party']) && is_numeric($_POST['party'])) {
     $party = (int)$_POST['party'];
     $vip = isset($_POST['vip']) ? 5 : 0;
     echo "Total is: " . (($party * 5) + $vip);
}
?>

目前没有回应计算,是否有人能够纠正我的代码,以便我能理解我做错了什么?谢谢

2 个答案:

答案 0 :(得分:3)

您可能会遇到一些问题,这些问题可能会导致计算被回应。

首先,改变

<select name="party" id="party" value="<?php echo $party;?>">

<select name="party" id="party">

因为您的值来自选项列表。

接下来,改变:

(isset($party) && $party=="1")

(isset($_SESSION['party']) && $_SESSION['party']=="1")

第三,你想要强化你的帖子参数..这样的事情可能是:

$_SESSION['party'] = htmlentities($_POST['party'],ENT_QUOTES);

答案 1 :(得分:0)

我认为我们需要看到“用户被发送到应用程序的确认页面”部分,但如果您验证然后将用户重定向到新页面,则$ _POST全局将为空。看来你正在把POST推入SESSION,所以也许这样的事情就这样了:

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

另外,您可能不希望将未经验证的$ POST信息推送到$ SESSION中以保证应用程序的安全性。验证$ POST信息,然后将其推送到$ SESSION