使用PHP,我如何根据表单中的总数回显不同的输出?
我有一个表格可以使用Javascript计算总数。 Javascript的代码是从这里获取的。
一旦用户提交表格,他将被带到下一页。 在下一页中,PHP再次显示总表格(此部分工作),然后根据总数介于两者之间的数字范围显示不同的输出。
例如,如果总数在1 - 250之间(比如100),那么应该显示X. 如果总数在251 - 500之间(比如350),那么应该显示Y. 目前,无论总数是多少,它都会显示相同的输出。
你可以在这里看到这个表单。
这里是我使用的PHP代码(这将在用户被重定向到的页面上:
<?php session_start();
if ($_POST && !empty($_POST['TOTAL'])) {
$_SESSION['TOTAL'] = $_POST['TOTAL'];
} ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Untitled 1</title>
</head>
<body>
<?php
if (isset($_SESSION['TOTAL'])) {
echo 'Your total volume is ' . round($_SESSION['TOTAL']) . ' Cubic Feet. The total price for your shipment is:';
} else {
echo 'You did not fill out any details. Please go back.';
}
if (isset($_SESSION['TOTAL']) > 0 && isset($_SESSION['TOTAL']) <= 250) { echo ' $1,000';}
if (isset($_SESSION['TOTAL']) > 250 && isset($_SESSION['TOTAL']) <= 500) { echo ' $2,000';}
if (isset($_SESSION['TOTAL']) > 501 && isset($_SESSION['TOTAL']) <= 1000) { echo ' $4,000';}
else { echo 'Sorry, we do not have a price for that.';}
?>
</body>
先谢谢你。
不要在您的方程中使用isset
(如果值已设置,则返回true
, true
始终>0
且<250
)。 所以,而不是
if (isset($_SESSION['TOTAL']) > 0 && isset($_SESSION['TOTAL']) <= 250) { echo ' $1,000';}
说
if ($_SESSION['TOTAL'] > 0 && $_SESSION['TOTAL'] <= 250) { echo ' $1,000';}
另外使用elseif
来确保只执行一个块:
if ($_SESSION['TOTAL'] > 0 && $_SESSION['TOTAL'] <= 250) {
echo ' $1,000';
} elseif ($_SESSION['TOTAL'] > 0 && $_SESSION['TOTAL'] <= 500) {
echo ' $2,000';
} elseif ($_SESSION['TOTAL'] > 0 && $_SESSION['TOTAL'] <= 1000) {
echo ' $4,000';
} else {
echo 'Sorry, we do not have a price for that.';
}
注意:
这是DerVO第一次修订的扩展。 现在这在很大程度上是不必要的,但我将它留给子孙后代。
这是DerVO的答案的扩展:
你正在测试isset($variable) > 0
和isset($variable) < #
。 由于isset()
返回true
或false
(或null
,尽管有时可以将它视为false
,就像你的情况一样),但PHP会试图理解下面的比较(这是你的归结):
true > 0 && true <= 250
在PHP中,作为松散类型的语言, true
通常被解释为1
。 所以PHP问这个问题, is 1 larger than 0 AND smaller than 250?
。 它发现答案是yes
并打印你的第一个陈述。
所有其他陈述发现它是错误的,所以它跳过。
尝试在外部块中检查isset()
:
if( isset($_SESSION['TOTAL']) )
{
}
并在该块内执行输出,跳过任何isset()
部分。
在第3行,我建议你改变
$_SESSION['TOTAL'] = $_POST['TOTAL'];
至
$_SESSION['TOTAL'] = intval($_POST['TOTAL']);
这应该消除任何猜测脚本是否将Javascript的输入视为字符串。 然后,我会从下面删除issets,这是搞砸你的比较。 你正在比较一个整数
链接地址: http://www.djcxy.com/p/58575.html上一篇: Using PHP, how do I echo a different output based on the total number in a form?
下一篇: objectify query filter by list in entity contains search parameter