所以我在php上做这个程序。这是一个简单的自动售货机程序,有3张图片。
逻辑:在$total变量中每点击一次图片就累积他们的价格。然后,单击display total price,它应该会显示总价格。
然而,我的只显示一个pop的价格。当我点击每个图片两次时,它只显示第一个pop的价格。
这是我到目前为止所知道的:
$total = 0;
display_form();
if(!isset($_POST['submit']))
{
display_form();
if(isset($_POST['coke'])) //test for when coke-image is clicked
{
$total += 2.00;
}
else if(isset($_POST['rootbeer'])) //test for when rootbeer-image is clicked
{
$total += 2.00;
}
else if(isset($_POST['lemonlime'])) //test for when lemon lime-image is clicked
{
$total += 1.00;
}
else if(isset($_POST['submit']))
{
trackPrice($total);
}
}
else
{
display_form();
}
function trackPrice($total)
{
echo "Your price is $total.";
}
function display_form() //displays actual form
{有什么想法吗?我是不是打算在$total上放静电?非常感谢。
发布于 2016-03-02 05:48:06
根据代码示例,您可以在每次提交表单后将$total设置为零。
您需要在会话中设置运行总数,以便可以在每次发布后检索它(更好的解决方案)
或
您可以在表单中添加一个包含汇总的隐藏元素,然后在提交表单时使用$_POST["running_total"]检索它。
发布于 2016-03-02 05:56:29
如前所述,您应该使用会话。这里有一个简单的例子。
<?php
session_start();
//Select and uncomment either one of the two.
//1. $_SESSION['total'] = $_SESSION['total'] ?? 0; // PHP 7+;
//2. $_SESSION['total'] = isset($_SESSION['total']) ? $_SESSION['total'] : 0; // PHP < 7.
if(!isset($_POST['submit'])){
if(isset($_POST['coke'])){ //test for when coke-image is clicked
$_SESSION['total'] += 2.00;
} elseif(isset($_POST['rootbeer'])){ //test for when rootbeer-image is clicked
$_SESSION['total'] += 2.00;
} elseif(isset($_POST['lemonlime'])){ //test for when lemon lime-image is clicked
$_SESSION['total'] += 1.00;
}
}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<label>Total Price: <?php echo $_SESSION['total']; ?></label>
<input> .... </input>
<input> .... </input>
<input> .... </input>
</form>我还随意更改了显示表单的代码结构(这是您一直想要的,对吧?)
https://stackoverflow.com/questions/35734111
复制相似问题