Я создал страницу бронирования для веб-сайта ресторана с формой для бронирования на ужин. Он содержит раскрывающийся список, который позволяет пользователю выбрать количество людей, которые будут ужинать в их группе. Он также содержит переключатель, позволяющий пользователю выбрать, желает ли он сидеть в VIP-зоне.
После успешной проверки формы пользователь будет отправлен на страницу подтверждения, где ему будут показаны введенные данные бронирования.
Каждый участник вечеринки должен заплатить дополнительно 5 фунтов стерлингов за свою плату за бронирование, и если он желает разместиться в VIP-зоне, с него будет взиматься дополнительная плата в размере 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);
}
?>
В настоящее время никакие вычисления не отображаются, сможет ли кто-нибудь исправить мой код, чтобы я мог понять, что я сделал неправильно? Спасибо
Я думаю, что нам нужно увидеть часть приложения «пользователь отправлен на страницу подтверждения», но если вы проверите и перенаправите пользователя на новую страницу, глобальная переменная $ _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
У вас есть пара проблем, которые могут повлиять на расчет.
Во-первых, изменить
<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);