переменные — PHP расчет из HTML-формы

Я создал страницу бронирования для веб-сайта ресторана с формой для бронирования на ужин. Он содержит раскрывающийся список, который позволяет пользователю выбрать количество людей, которые будут ужинать в их группе. Он также содержит радиокнопку, позволяющую пользователю выбирать, хотят ли они сидеть в зоне VIP (Да / Нет).

Каждый участник вечеринки должен заплатить дополнительно 5 фунтов стерлингов за свою плату за бронирование, и если он желает разместиться в VIP-зоне, с него будет взиматься дополнительная плата в размере 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);
}
?>

Кто-нибудь знает, как я могу включить в расчет только дополнительные 5 фунтов стерлингов за размещение в VIP-зоне, если пользователь выбрал «Да»? Я новичок в веб-языках, поэтому любая помощь будет оценена. Спасибо!

2

Решение

Ваше троичное заявление в настоящее время только проверяет, $_SESSION['vip'] установлено. Проблема в том, что он устанавливается независимо от того, что выберет пользователь («да» или «нет»), потому что в той части, где вы устанавливаете переменную сеанса, условный оператор устанавливает переменную сеанса, если $_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);
}
?>
1

Другие решения

Нет необходимости усложнять ваш код сессиями. Просто используйте $ _POST:

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

вам нужно повторить расчет и добавить переменную стоимости VIP. что-то вроде

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

затем добавьте стоимость каждого человека и добавьте $ vip_cost

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