如何使PHP计算器存储和显示历史



我对PHP还很陌生,我的整个PHP计算器都完成了,除了我需要进行的5次计算需要存储在一个名为"日志";。我知道我必须在_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_start((的$_SESSION启动任何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"] = [];
}

最新更新