使用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 (如果值已设置,则返回truetrue始终>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) > 0isset($variable) < # 。 由于isset()返回truefalse (或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