首页 > 解决方案 > 如何制作 PHP 计算器存储和显示历史记录

问题描述

我对 PHP 很陌生,我的整个 PHP 计算器已经完成,除了我需要将最近的 5 次计算存储在一个名为“Logs”的 div 中。我知道我必须在_SESSIONS中工作,但我不知道从哪里开始以及如何设置它。我敢肯定,对于很多人来说,这是一个非常基本的东西,但我不知道如何设置它。

有两件事要记住。有一个重置按钮应该销毁 SESSION,因此这些过去的计算不必永远存储。在用户关闭浏览器或按下重置按钮后,它们需要消失。

任何帮助将不胜感激!

表单 HTML 代码:

<div class="calculator">
        <form action="Index.php" method="POST">
            <ul>
                <!-- First number -->
                <li>
                    <label for="numberOne"><strong>Number one:</strong></label>
                    <input class="inputNumbers" type="number" name="numberOne" placeholder="Enter a number">
                </li>

                <!-- Operation -->
                <li>
                    <label for="operation"><strong>Operation:</strong></label>
                    <select class="inputNumbers" name="operation" id="operator-list">
                        <option value="+">+</option>
                        <option value="-">-</option>
                        <option value="x">x</option>
                        <option value="/">/</option>
                        <option value="sqrt">^</option>
                        <option value="pow">√&lt;/option>
                    </select>
                </li>

                <!-- Second number -->
                <li id="second-input">
                    <label for="numberTwo"><strong>Number two:</strong></label>
                    <input class="inputNumbers" type="number" name="numberTwo" placeholder="Enter a number">
                </li>

                <!-- Decimal Slider -->
                <li>
                    <label><strong>Decimal: </strong><span id="value_slider"></span></label>
                    <input type="range" name="slidebar" min="0" max="10" value="0" id="slider" class="slider_style input">
                </li>

                <!-- Calculate & Reset button -->
                <li>
                    <input class="btn-calculate" type="submit" name="btnCalculate" value="Calculate">
                    <button class="btn-reset" type="reset" name="resetForm" onclick="btnReset()">Reset</button>
                </li>
            </ul>
        </form>
    </div>

    <!-- Logs -->
    <div class="logs-container">
        <div class="logs-title">Logs</div>
            <div class="logs">
                <!-- LOG LATEST 5 CALCULATIONS -->
            </div>
    </div>

计算.PHP代码:

$Result = 0;

if (isset ($_POST['btnCalculate']) ) {

$numberOne = $_POST['numberOne'];
$operation = $_POST['operation'];
$numberTwo = $_POST['numberTwo'];

if ($operation == '+') {
    $Result = ((int)$numberOne + (int)$numberTwo);
}

else if ($operation == '-') {
    $Result = ((int)$numberOne - (int)$numberTwo);
} 

else if ($operation == 'x') {
    $Result = ((int)$numberOne * (int)$numberTwo);
}

else if ($operation == '/') {
    if ($numberOne and $numberTwo > 0)
    {
        $Result = $numberOne / $numberTwo;
    } else {
        echo "<script>alert('Cannot divide by 0');</script>";
    }
}
   
else if ($operation == 'sqrt') {
    $Result = sqrt($numberOne);
}

else if ($operation == 'pow') {
    if ($numberOne and $numberTwo > 0)
    {
        $Result = pow($numberOne, $numberTwo);
    } else {
        echo "<script>alert('Please enter a number in both fields');</script>";
    }
}

else $Result = 'Unknown';
}

标签: php

解决方案


要使用会话,首先您可以使用 $_SESSION 和session_start()启动任何 PHP 脚本:

<?php

session_start();

然后您可以使用以下命令初始化数组结果存储:

if (!isset($_SESSION['results'])){
  $_SESSION["results"] = [];
}

并使用添加存储值:

$_SESSION["results"][]="New result";

例如,您可以存储计算后的运算结果,如下所示:

if ($operation == '+') {
    $Result = ((int)$numberOne + (int)$numberTwo);
    $_SESSION["results"][]="$numberOne + $numberTwo = $Result";
}

如果需要,您可以使用任何字符串/数字/数组值以更结构化的方式存储结果。然后您可以将保存的结果添加到 HTML 表单页面(必须是.php文件,而不是.html),例如:

<div class="logs">
    <?php echo implode("<br>",$_SESSION["results"]); ?>
</div>

要清理/重置结果数组,您可以添加一个新的“重置”操作或类似的操作:

if ($operation == 'reset'){
    $_SESSION["results"] = [];
}

推荐阅读