php - 如何制作 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">√</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';
}
解决方案
要使用会话,首先您可以使用 $_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"] = [];
}
推荐阅读
- pandas - 熊猫在重新采样日期内取每日平均值
- javascript - React Native如何从firebase中的数组中获取数据
- python - 在 Python 中使用字符串调用类函数
- javascript - Chrome 扩展程序无法从内容脚本中 console.log OnMessage
- laravel - 在 Laravel 中注册的垃圾邮件和随机用户
- sql - 在 Azure 上使用正则表达式将列破坏为多列?
- excel - Excel公式获取一个单元格中的所有值
- linux - Bash 在后台运行不会返回提示
- android - Android - 从 Firebase Storage 获取所有下载链接后无法更新 RecyclerView
- javascript - 捕获语法错误的 Visual Studio 代码