我正在尝试使用以下代码在HTML表单中嵌入自引用PHP脚本:
未定义索引:转化
<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>
我收到这条消息:
Notice: Undefined index: conv Notice: Undefined index: temperature2
当PHP脚本在另一个文件中时,一切正常。 谁知道我做错了什么?
答案 0 :(得分:1)
在处理表单之前,不会设置变量($type = $_POST["conv"];
)。做
if (!empty($_POST["conv"])) {
$type = $_POST["conv"];
}
答案 1 :(得分: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>
答案 2 :(得分:0)
这是我的答案... 首先,最好验证一下是否提交了,如果调用了提交按钮,则代码继续休息。否则您会出错。此外,只有单击提交按钮,结果和变量才会显示。
<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" name="submit" value = "equals">
<?php
if(isset($_POST["submit"])) {
$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>
答案 3 :(得分:-1)
您的PHP代码将在您加载页面时每时间运行,而不仅仅是当有人按下提交时。这意味着它会查找$_POST['conv']
和$_POST['temperature2']
,但找不到任何内容,因为表单尚未发布。
您需要命名您的提交按钮,然后使用if
围绕您的所有PHP处理:
<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']之前放置@使得你不会得到你之前在这个新数组键上得到的相同错误。