оператор php if не работает

#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= цена я просто хотел, чтобы он ничего не делал, если массив был пуст