PHP: хранить результаты калькулятора HTML-формы в массиве и отображать все сохраненные результаты каждый расчет - PullRequest
0 голосов
/ 22 сентября 2019

Назначение гласит следующее: вы будете изменять калькулятор для отображения ВСЕХ предыдущих вычислений, выполненных во время веб-сеанса.Используйте переменные $ _SESSION.

Вот файл index.php, который запускает страницу:

<?php
require("header.php");
require("lib.php");

echo "<h1>Welcome to the PHP Calculator</h1>";
if($_SERVER["REQUEST_METHOD"] == "POST"){
    if (isset($_SESSION["calculator"])){
        $old_calculator = unserialize($_SESSION["calculator"]);
    }
    $calculator = new calculator($_POST["num1"], $_POST["num2"], $_POST["op"]);
    $calculator->calculate();
    $calculator->print_result();
    $_SESSION["calculator"] = serialize($calculator);
    if (isset($old_calculator)){
        echo "<h3>The prior calculation was:</h3>";
        $old_calculator->print_result();
    }
    echo "<br/><br/><h3>Perform another calculation:</h3>";
}
?>

<form action="index.php" method="post">
Operand 1: <input type="text" name="num1"><br/>
Operand 2: <input type="text" name="num2"><br>
Operation (+,-,/,*): <input type="text" name="op"><br>
<input type="submit" value="Calculate">
</form>
<?php require("footer.php"); ?>

В файле lib.php происходят все вычисления:

<?php


class calculator {

    private $result;
    private $op;
    private $num1;
    private $num2;
    private $error;

    public function __construct($num1, $num2, $op){
        $this->num1 = $num1;
        $this->num2 = $num2;
        $this->op = $op;
    }

    protected function add(){
        return $this->num1 + $this->num2;
    }

    protected function sub(){
        return $this->num1 - $this->num2;
    }

    protected function div(){
        return $this->num1/$this->num2;
    }

    protected function mult(){
        return $this->num1*$this->num2;
    }

    public function get_result(){
        return $this->result;
    }

    public function calculate(){
        switch ($this->op){
            case "+":
            $this->result = $this->add();
            break;

            case "-":
            $this->result = $this->sub();
            break;

            case "/":
            $this->result = $this->div();
            break;

            case "*":
            $this->result = $this->mult();
            break;

            default:
            $this->error = true;
        }
    }

    function print_result(){
        echo "<h4>Calculator results:</h4>";
        if($this->error)
            echo "Error! Invalid operator \"" . $this->op . "\"";
        else
            echo $this->num1 . " " . $this->op . " " . $this->num2 . " = " . $this->result;
    }
}

?>

Какя должен идти о сохранении вычислений от пользовательских данных в массив и печатать массив каждый раз, когда форма отправлена ​​??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...