Форма HTML / PHP - переменная устанавливается в 0 без причины

Ладно, я достаточно пригнулся, пора попросить о помощи.

Я новичок в PHP, я пытаюсь выполнить некоторые вычисления со значениями, предоставленными в форме HTML, и одна из моих функций не работает. Забавно то, что другая функция, написанная в основном идентичным образом, работает нормально.

Вот мой PHP-код:

//For passing values around
    $area = 50;
    $plants = 0;
    $pi = 3.14;

    //Calculate the area
    function calcsquare($len, $wid) {
        $a = (double) $len * (double) $wid;
        return $a;
    }

    function calccirc($rad, $pi) {
        $a = (double) $rad * (double) $pi;
        return $a;
    }

    //Make the buttons do stuff
    if ($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['calcarea_button']))
    {
        if ($POST["radius"] == "") {
            $area = calcsquare((double) $_POST["length"], (double) $_POST["width"]);
        } else {
            //$area = calccirc((double) $_POST["radius"], (double) $pi);
            //$area = $_POST["radius"];
            //$area = 3.14;
            $area = "Seriously wtf.";
        }
    }

(Я знаю, что не добавил никакой обработки ошибок. Это проблема Future Me.)

А вот соответствующий HTML:

<div class = "calcarea">
    <!--Calculate the area-->
    <form action = "calc_plants.php" method = "post">
        Length: <input name = "length" type = "text" /> ft.<br>
        Width: <input name = "width" type = "text" /> ft.<br>
        Radius: <input name = "radius" type = "text" /> ft.</br>
        <input type = "submit" value = "Calculate" name = "calcarea_button">
    </form>
</div>

И $ area возвращается этим кодом в другом месте страницы:

<?php echo $area; ?> sq. ft.<br>

Бит, в котором $ area заполняется с помощью calcsquare, работает именно так, как я предполагал, но независимо от того, что я делаю, случай else возвращает 0. (Я изначально установил его на 50 в качестве меры по устранению неполадок, поэтому я знаю, что он изменяется на 0 вместо того, чтобы вообще не изменяться.) Функция calccirc - это то, что я на самом деле пытаюсь выполнить, но вы можете увидеть все закомментированные вещи, которые я использовал, чтобы попытаться заставить $ area сказать что-то другое, кроме 0. У меня нет идея, откуда это вообще взялось. Опять же, calcsquare отлично работает каждый раз, когда я его пробую, поэтому я знаю, что он должен работать!

Опять же, очень новичок в PHP, пожалуйста, будьте осторожны. Объясни это, как своей маме.

$_POST, а не $POST.
Jonnix 16.01.2019 00:18

Это $POST опечатка или ваш настоящий код? Если да, то на закрытие менее 2 голосов. 1) Как опечатка. 2) Неопределенный индекс / переменная.

Funk Forty Niner 16.01.2019 00:23

К вашему сведению, дубликат. Я решил забить это, чтобы избежать возможных ответов, пока вопрос был еще открытым.

Funk Forty Niner 16.01.2019 00:26

Добро пожаловать в SO! В качестве вашего первого вопроса, если не считать опечатки и некоторых ненужных предложений, это был хорошо написанный вопрос. Удачи в изучении PHP.

Will B. 16.01.2019 00:34

Итак, почему опечатка привела к тому, что $area был равен 0: $POST["radius"] не определен. PHP обрабатывает неопределенные переменные как имеющие значение null. При сравнении с ==, а не с ===, null считается равным "". Таким образом, он будет входить только в часть if, поэтому он всегда будет выполнять calcsquare, даже если вы только разместили радиус. (Я предполагаю, что если вы разместите длину и ширину, а также радиус, вы больше не получите ноль). Что на ужин?

Don't Panic 16.01.2019 00:38

О, СЫН - .... ладно, это определенно моя ошибка, и спасибо, что заметили ее, но как, черт возьми, это работает? Бит с $ POST ["радиус"] действительно работает! Другое дело, что этого не происходит! Мне нужно бежать на работу, поэтому я не могу сейчас проверить это, я сообщу позже.

tiltingatwindmills 16.01.2019 10:18

хорошо, да, это сработало. Спасибо и извините.

tiltingatwindmills 16.01.2019 19:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
7
27
0

Другие вопросы по теме