Расчет 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-зоны, если пользователь выбрал «Да»? Я новичок в веб-языках, поэтому любая помощь будет оценена по достоинству. Спасибо!

Ваш тернарный оператор в настоящее время проверяет только $_SESSION['vip'] . Проблема в том, что он задан независимо от того, какой пользователь выбирает («да» или «нет»), потому что в той части, где вы устанавливаете переменную сеанса, условная инструкция устанавливает переменную сеанса, если $_POST['vip'] isn ' t пусто.

Попробуйте проверить, равно ли оно «Да», как это:

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

Нет необходимости усложнять свой код сеансами. Просто используйте $ _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; } ?> 

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

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

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

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