使用按钮在PHP中计算值

使用按钮在PHP中计算值,php,forms,button,Php,Forms,Button,我正在用PHP创建一个计算器,我的HTML应该有这种结构,我的数字是可点击的按钮,第一次点击的数字将是第一个值,我点击的第二个数字将是第二个值。我不知道该怎么做,可能吗?如果是这样,我的代码是什么 <html> <head> <title>Calculator</title> </head> <body> <div id = "structure"

我正在用PHP创建一个计算器,我的HTML应该有这种结构,我的数字是可点击的按钮,第一次点击的数字将是第一个值,我点击的第二个数字将是第二个值。我不知道该怎么做,可能吗?如果是这样,我的代码是什么

<html>
    <head>
        <title>Calculator</title>
    </head>
        <body>
            <div id = "structure">
            <?php
                if(isset($_GET)){
                    $value += $_GET;
                }
            ?>
                <form method = "GET " action = "calculator.php">
                    <input type = "submit" name = "one" value = 1>
                    <input type = "submit" name = "two" value = 2>
                    <input type = "submit" name = "three" value = 3>
                    <input type = "submit" name = "operand" value = "+">
                    </br>
                    <input type = "submit" name = "four" value = 4>
                    <input type = "submit" name = "five" value = 5>
                    <input type = "submit" name = "six" value = 6>
                    <input type = "submit" name = "operand" value = "-">
                    </br>
                </form>
            </div>
        </body>
</html>

计算器



我并没有把所有的数字都放在计算器中,以便发布。

正如其他人提到的,最好的方法是使用客户端编码(Javascript)。但是,如果必须编写PHP代码,则需要提交两次表单。第一次,将输入变量(第一个数字)放在表单的一个隐藏输入元素中,并使用额外的隐藏输入元素再次打印html。第二次,查找隐藏的输入值:如果它存在,则表示新输入是第二个数字,而隐藏的输入是第一个数字。获取隐藏输入的值,获取新数字,将它们相加并显示结果。确保重置隐藏的输入值。

因为这是一个书本练习,重点是让您编写代码,所以我不会给您任何代码。但是,我可以为您指出正确的方向(或者至少其中一个方向)

考虑使用可以随每个请求一起发送的某种值来存储所有操作的当前累积值。这可能应该显示在某个地方,也应该放在PHP可以在表单提交时读取的字段中(提示:您听说过隐藏的输入类型吗?)。你将如何跟踪上一次手术?也许您可以使用这些字段中的另一个来存储操作,直到按下另一个按钮为止

您可以使用什么代码检查表单是否已提交?您如何检查按下了哪个按钮。如果按下
+
,将设置哪些值?如果一个数字被按下了呢?如果连续推送多个数字会怎么样


更多要考虑的事情:试着玩一个真正的计算器。何时显示结果?使用的操作顺序是什么?每个操作都有一个左手侧和一个右手侧。当您连续推送多个数字时会发生什么情况。小数呢?是否应该有一个清除按钮?

您需要一种方法来跟踪以前的输入。每次单击按钮,都会向服务器发送一个包含该信息的请求(在
$\u GET
中),但旧的输入不再可用。有几种方法:

隐藏的表单元素

每次用户单击时,您都会读取该值并将其以隐藏的表单元素输出回页面。每次您必须使用现有方法通过
$\u GET
读取隐藏元素的值时,计算出您需要在数学上做什么,并将旧内容和新内容再次保存到隐藏元素中,以便下次输入

有关示例,请参见

Cookies

您可以使用设置具有用户输入值的cookie。每次用户单击按钮时,您都希望从cookie加载值并附加当前输入。当用户单击
=
按钮时,加载cookie数据并解析表达式。您可以更轻松地将表达式的各个部分存储在cookie中的某种分隔字符串中,这样就有了
操作数、运算符、操作数
,然后就可以轻松地计算结果。点击清除按钮将清除cookie的值

这是一个很好的例子,说明了你想用cookies做什么

Javascript


显然是最简单的方法。由于状态将被保持,您不需要来回传递值。

为什么不改用JavaScript?这在逻辑上会更容易。这是我书中的一个练习,我觉得我必须这样做,但书中没有给出如何做的任何想法。但是我不知道怎么做。当你运行它的时候,你会得到什么?你需要三次提交基础数学。数字(提交)操作数(提交)数字(提交)。这会随着您添加多位数而增长。真的。我的印象是,根据对问题的描述,他只会处理个位数的数字。不过,关于操作数,你是对的。我可能正在通过在一个简单的(或者说是简单的)书本练习中容纳多位数来详细说明,所以大家都同意了。这不再是书本练习了。我决定这应该是一个个人练习,它可以容纳多个数字。那么,有人可以如何发布?我真的不知道如何处理这个问题。我不知道什么是隐藏输入,你能举个例子吗?
它们不会显示给用户,但在提交表单时会发送到服务器。顺便说一句,我的另一个问题是,每次单击按钮时,值都不会被存储。。。只有单个值。为什么会这样?这是因为在单击表单时页面会重新加载吗?能给我举个例子吗?我真的不知道该怎么做