#php #if-statement
#php #if-оператор
Вопрос:
Есть ли какая-либо причина, по которой мой приведенный ниже if statment в php не работает? При выборе правильного переключателя цена не вычисляется. Он постоянно отображает цену как «49»
<td width="236" height="25" align="left">Booking Period:</td>
</tr>
<tr>
<td height="10" align="right" class="align_left">One Day: ₤49 </td>
<td>
<input type="radio" name="duration" id="oneday" value="One Day Rental"/>
</td>
</tr>
<tr>
<td height="30" align="right" class="align_right">Two Day: ₤69</td>
<td>
<input type="radio" name="duration" id="two" value="Two Day Rental"/>
</td>
</tr>
<tr>
<td height="30" align="right" class="align_right">Weekend: ₤79</td>
<td>
<input type="radio" name="duration" id="weekend" value="Weekend Rental"/>
</td>
</tr>
$price = 0;
if ($duration=="oneday")
$price = 49;
elseif ($duration=="two")
$price = 69;
elseif ($duration=="weekend")
$price = 79;
else
$price = 49;
if (empty($_POST['extras'])) {
$price = $price;
} else {
if($extra == "Deodoriser"){
$price = $price 7;
} elseif($extra == "Carpet Protector (5 litre)"){
$price = $price 39;
} elseif($extra == "Carpet Repair Tools"){
$price = $price 9;
} elseif($extra == "Furniture Moving Equipment"){
$price = $price 7;
} elseif($extra == "Furniture Tabs"){
$price = $price 2;
} elseif($extra == "Urine Decontamination Treatment"){
$price = $price 17; }
else
$price = $price;
}
Ответ №1:
Кстати, вам не следует проверять идентификатор. Вы должны проверить значения значений html-тегов.
$price = 0;
if ($duration == "One Day Rental")
$price = 49;
else if ($duration == "Two Day Rental")
$price = 69;
else if ($duration == "....")
$price = 79;
else
$price = 49;
Я думаю, это ваша проблема…
Отправив
<input type="radio" name="duration" id="weekend" value="Weekend Rental"/>
в Post массиве duration (имя) будет с его значением (value), идентификатор здесь значения не имеет.
Комментарии:
1. ждал обратного отсчета! 🙂
Ответ №2:
Вы должны использовать массив $ _POST, как в if (empty($_POST['extras'])) {
if ($_POST['duration']=="oneday") ...
Комментарии:
1. Просто чтобы внести ясность в @Emmerman, вы, похоже, создали переменную
$duration
по крайней мере, похоже, что она не была инициализирована в коде. Похоже, вы пытались получить доступ к'duration'
элементу из$_POST
2. да, теперь я понимаю. Огромное спасибо, ребята. Я пришел к тому, что ничего не знал о php и разработал его за две недели
Ответ №3:
просто измените эти строки в своем коде
$price = 0;
$duration = $_POST['duration'];
if ($duration=="One Day Rental")
{ $price = 49; }
elseif($duration=="Two Day Rental")
{ $price = 69; }
elseif ($duration=="Weekend Rental")
{ $price = 79; }
else
{ $price = 49; }
Ответ №4:
$_POST['extras']
Существует ли и имеет ли оно значения?? Вы должны проверить с помощью var_dump($_POST['extras'])
, чтобы увидеть, какое содержимое там на самом деле.
В противном случае, насколько я могу судить, этот код должен работать нормально.
Ответ №5:
- Я не вижу
<?php ?>
это ошибка вставки? Если да, пожалуйста, исправьте 🙂 В противном случае они должны быть у вас в вашем php. - проверьте, что
$duration
есть. Если это переменная post, используйте ее как$_POST[]
, а не просто так. - Рассмотрите возможность добавления
{
и}
вокруг ваших ifs: это намного понятнее, что происходит - $price= $price ничего не делает. Почему это там?
Комментарии:
1. это ошибка вставки. price= цена я просто хотел, чтобы он ничего не делал, если массив был пуст