Ладно, я достаточно пригнулся, пора попросить о помощи.
Я новичок в 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 опечатка или ваш настоящий код? Если да, то на закрытие менее 2 голосов. 1) Как опечатка. 2) Неопределенный индекс / переменная.
К вашему сведению, дубликат. Я решил забить это, чтобы избежать возможных ответов, пока вопрос был еще открытым.
Добро пожаловать в SO! В качестве вашего первого вопроса, если не считать опечатки и некоторых ненужных предложений, это был хорошо написанный вопрос. Удачи в изучении PHP.
Итак, почему опечатка привела к тому, что $area был равен 0: $POST["radius"] не определен. PHP обрабатывает неопределенные переменные как имеющие значение null. При сравнении с ==, а не с ===, null считается равным "". Таким образом, он будет входить только в часть if, поэтому он всегда будет выполнять calcsquare, даже если вы только разместили радиус. (Я предполагаю, что если вы разместите длину и ширину, а также радиус, вы больше не получите ноль). Что на ужин?
О, СЫН - .... ладно, это определенно моя ошибка, и спасибо, что заметили ее, но как, черт возьми, это работает? Бит с $ POST ["радиус"] действительно работает! Другое дело, что этого не происходит! Мне нужно бежать на работу, поэтому я не могу сейчас проверить это, я сообщу позже.
хорошо, да, это сработало. Спасибо и извините.






$_POST, а не$POST.