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

如何使PHP计算器存储和显示历史,php,Php,我对PHP非常陌生,我的整个PHP计算器都已经完成了,除了我需要进行的5次计算需要存储在一个名为“Logs”的div中。我知道我必须在\u课程中工作,但我不知道从哪里开始以及如何设置。我相信这是一个非常基本的东西,创造了很多人在那里,但我不知道如何设置它 有两件事要记住。有一个重置按钮,该按钮应销毁会话,因此这些过去的计算不必永远存储。在用户关闭浏览器或按下重置按钮后,它们需要消失 任何帮助都将不胜感激 表单HTML代码: <div class="calculator"

我对PHP非常陌生,我的整个PHP计算器都已经完成了,除了我需要进行的5次计算需要存储在一个名为“Logs”的div中。我知道我必须在\u课程中工作,但我不知道从哪里开始以及如何设置。我相信这是一个非常基本的东西,创造了很多人在那里,但我不知道如何设置它

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

任何帮助都将不胜感激

表单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>
$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';
}

  • 第一名:
  • 操作: + - x / ^ √
  • 第二名:
  • 十进制:
  • 重置
日志
Calculation.PHP代码:

<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>
$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';
}
$Result=0;
如果(isset($_POST['btnCalculate'])){
$numberOne=$_POST['numberOne'];
$operation=$_POST['operation'];
$numberTwo=$_POST['numberTwo'];
如果($operation=='+')){
$Result=((int)$numberOne+(int)$numberTwo);
}
else if($operation='-')){
$Result=((int)$numberOne-(int)$numberTwo);
} 
如果($operation=='x',则为else){
$Result=((int)$numberOne*(int)$numberTwo);
}
else if($operation=='/')){
如果($numberOne和$numberTwo>0)
{
$Result=$numberOne/$numberTwo;
}否则{
回显“警报('不能除以0');”;
}
}
else if($operation=='sqrt'){
$Result=sqrt($numberOne);
}
如果($operation=='pow',则为else){
如果($numberOne和$numberTwo>0)
{
$Result=pow($numberOne,$numberTwo);
}否则{
echo“警报('请在两个字段中输入一个数字');”;
}
}
else$Result='未知';
}
要使用,首先,您可以使用$\u会话启动任何PHP脚本:

并使用以下命令添加存储值:

$_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>

到目前为止,您尝试了什么?我在页面顶部用session_start和defined inputs and operator定义了变量,然后我试着用这个来回应答案:我认为在您的情况下,这是服务器端计算器表单,使用$_GET值比会话更好。您可以使用$\u GET链接到特定的计算,而不需要在您的一侧存储任何内容。我非常感谢您的帮助。但是伊戈尔回答了我的问题。这正是我想要的❤别担心。我很高兴你得到了帮助。非常感谢你的帮助!这正是我想要的。我还有一个问题,当我点击重置按钮并重置logs div时,如何销毁会话?我添加了重置代码。您必须实现对PHP脚本的调用,才能在
btnReset()
函数中启动此操作。我想我不太明白。我尝试了很多方法,但似乎没有重置日志。我输入了一个错误,并使用了
$\u SESSION[“result”]
而不是
$\u SESSION[“results”]
请使用正确的变量名再次检查。我已经找出了错误。我只是不知道该怎么做,我觉得我很愚蠢。但对我来说,这仍然是一个学习的过程。我不知道我需要在Reset.js文件中做什么,因为那里是调用btnReset()方法的地方。按下重置按钮时,我不知道如何重置:|
if ($operation == 'reset'){
    $_SESSION["results"] = [];
}