0

所以我在 php 上做这个程序。这是一个简单的自动售货机程序,有 3 张图片。

逻辑:在 $total 变量中累积每次点击图像的价格。然后,点击显示总价,它应该显示总价。

然而,我的只显示一个流行音乐的价格。当我单击每个图像两次时,它只显示一个流行音乐的价格,第一个。?

这是我到目前为止所拥有的:

        $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 上?非常感谢。

4

2 回答 2

3

根据$total每次提交表单后您设置为零的代码示例。

您要么需要在会话中设置运行总计,以便可以在每次发布后检索它(更好的解决方案)

或者

您可以在包含运行总计的表单中添加一个隐藏元素,然后$_POST["running_total"]在提交表单时检索它。

于 2016-03-01T21:48:06.480 回答
2

如前所述,您应该使用会话。这是一个简单的例子。

<?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>

我还冒昧地更改了显示表单的代码的某些结构(这是您一直想要的,对吗?)

于 2016-03-01T21:56:29.340 回答