статическая программа торгового автомата Stack Overflow

поэтому я делаю эту программу на 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
{

Какие-нибудь мысли? Я планировал поставить статические на сумму $?
Спасибо.

0

Решение

На основе примера кода, который вы устанавливаете $total к нулю после каждого раза, когда форма отправлена.

Вам либо нужно установить промежуточный итог в сеансе, чтобы его можно было получать после каждого поста (лучшее решение)

или же

Вы можете добавить скрытый элемент в форму, которая содержит промежуточную сумму, а затем извлечь его с помощью $_POST["running_total"] когда ваша форма отправлена.

3

Другие решения

Как указано выше, вы должны использовать сеансы. Вот быстрый пример.

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

Я также позволил себе изменить некоторую структуру кода, отображающего форму (что вы всегда хотели бы видеть правильно?)

2