我一直在尝试工作一个简单的基于形式的温度转换器,但我目前得到一个白屏幕,我看不出代码有什么问题。此外,任何关于最佳实践的想法/建议都是非常欢迎的!
<?php // convert.php
if (isset($_POST['temperature']))
$temp = sanitize_string($_POST['temperature']);
if (isset($_POST['scale']))
{
if ($_POST['scale'] == 'fah')
$conv = 'fah';
$output = intval((5 / 9) * ($temp - 32));
elseif ($_POST['scale'] == 'cel')
$conv = 'cel';
$output = intval((9 / 5) * ($temp + 32));
else
$output = '';
}
?>
<html>
<head>
<title>Temperature converter</title>
</head>
<body>
<?php
if (isset($_POST['submitted']) and isset($conv))
{
if ($conv == 'fah')
print("$temp degrees Fahrenheit is $output degrees Celcius");
elseif ($conv == 'cel')
print("$temp degrees Celcius is $output degrees Fahrenheit");
}
?>
<form method="post" action="convert.php">
<label>Temperature <input type="text" name="temperature"></label>
<label>Celcius <input type="radio" name="scale" value="cel"></label>
<label>Fahrenheit <input type="radio" name="scale" value="fah"></label>
<input type="hidden" name="submitted" value="yes">
<input type="submit">
</form>
</body>
</html>
<?php
print_r($_POST);
function sanitize_string($var)
{
$var = stripslashes($var);
$var = htmlentities($var);
$var = strip_tags($var);
return $var;
}
?>
您忘记在第11行内部if/elseif上使用大括号了。它看起来应该像这样:
if (isset($_POST['scale']))
{
if ($_POST['scale'] == 'fah') {
$conv = 'fah';
$output = intval((5 / 9) * ($temp - 32));
}
elseif ($_POST['scale'] == 'cel') {
$conv = 'cel';
$output = intval((9 / 5) * ($temp + 32));
}
else
$output = '';
}
您的$conv
变量仅在这些if语句中可见。将它的声明添加到顶部:
<?php
$conv = null;
// your code
然后检查if (isset($_POST['submitted']) && $conv !== null)
Edit:正如@halfdan所说,您缺少花括号,因为您想在if-else-子句中执行多个语句。
条件不匹配。
你得到一个空白的屏幕,因为解析你的脚本失败,你有错误报告关闭。
你的公式也不对。98.6华氏度转化为37摄氏度但32摄氏度转化为115华氏度
肯定有问题。
首先,将华氏温度转换为摄氏度,在乘以9/5之前加上32。这是错误的。你必须先把华氏温度乘以9/5;然后加上32.
所以这一行:$output = intval((9/5) * ($temp + 32));实际上应该是$output = intval((9/5) * ($temp) + 32);
我不知道你想让你的转换有多精确,但我也会避免使用"interval"。这是将转换四舍五入为整数值。
使用$searchengine查找有关"php白页"的页面,您将得到:
- http://drupal.org/node/158043
- http://php.about.com/od/troubleshooting/f/white_page_php.htm