формы — PHP Самостоятельная ссылка скрипт

Я пытаюсь встроить самоссылающийся скрипт PHP в форму HTML со следующим кодом:

Неопределенный индекс: conv

<form action = "<?php $_SERVER['PHP_SELF'] ?>" method = "post">
<input type = "number" id = "temp2" name = "temperature2" placeholder = "28">
<label for = "temp2"> degrees </label>

<select>
<option name = "conv" value = "f"> Fahrenheit </option>
<option name = "conv" value = "c"> Celsius </option>
</select>

<input type = "submit" value = "equals">

<?php
$type = $_POST["conv"];
$tmp = $_POST["temperature2"];
if ($type == "f") {
$newTmp = (9/5 * $tmp) + 32;
echo $newTmp . " degrees Celsius.";
}
elseif ($type == "c") {
$newTmp = (5 * ($tmp - 32)) / 9;
echo $newTmp . " degrees Fahrenheit.";
}
?>

</form>

И я получаю эти сообщения:

Примечание: неопределенный индекс: conv
Примечание: неопределенный индекс: температура2

Все работало нормально, когда скрипт PHP был в другом файле.
Кто-нибудь знает, что я делаю не так?

0

Решение

Вы должны убедиться, что вы отправили страницу и $ _POST существует. И исправьте выбранный элемент

<form action = "<?php $_SERVER['PHP_SELF'] ?>" method = "post">
<input type = "number" id = "temp2" name = "temperature2" placeholder = "28">
<label for = "temp2"> degrees </label>

<select name = "conv">
<option  value = "f"> Fahrenheit </option>
<option  value = "c"> Celsius </option>
</select>

<input type = "submit" value = "equals">

<?php

if(isset($_POST["temperature2"])) {

$type = $_POST["conv"];
$tmp = $_POST["temperature2"];
if ($type == "f") {
$newTmp = (9/5 * $tmp) + 32;
echo $newTmp . " degrees Celsius.";
}
elseif ($type == "c") {
$newTmp = (5 * ($tmp - 32)) / 9;
echo $newTmp . " degrees Fahrenheit.";
}
}
?>

</form>
0

Другие решения

Переменная ($type = $_POST["conv"];) не устанавливается, пока форма не будет обработана. Делать

if (!empty($_POST["conv"])) {
$type = $_POST["conv"];
}
1

Ваш код PHP будет работать каждый время загрузки страницы, а не только когда кто-то нажимает отправить. Это означает, что он ищет там $_POST['conv'] а также $_POST['temperature2'] но ничего не находит, потому что форма не была опубликована.

Вам нужно назвать свою кнопку отправки и затем окружить всю вашу обработку PHP if как это:

<input type = "submit" name="mysubmit" value = "equals">

<?php
if (@$_POST['mysubmit']) {
$type = $_POST["conv"];
$tmp = $_POST["temperature2"];
if ($type == "f") {
$newTmp = (9/5 * $tmp) + 32;
echo $newTmp . " degrees Celsius.";
}
elseif ($type == "c") {
$newTmp = (5 * ($tmp - 32)) / 9;
echo $newTmp . " degrees Fahrenheit.";
}
}
?>

Теперь он будет смотреть на этот код PHP только тогда, когда кто-то действительно что-то отправил. Помещение @ перед @ $ _ POST [‘mysubmit’] делает так, чтобы вы не получили ту же ошибку, что и раньше, для этого нового ключа массива.

-1
По вопросам рекламы [email protected]