提交后保留价值

时间:2018-10-08 17:46:16

标签: php html calculator

我试图用按钮构建一个PHP计算器。我的问题之一是我的价值不能超过一位数字。例如,当我尝试输入一个值(例如33)时,结果在文本框中将变为3,因为当我对所有数字使用Submit时,页面会刷新。仅应使用一个PHP页面。 此Solution是向我建议的,但由于使用了多个页面,因此无法解决我的问题。此外,多于一个数字似乎也不起作用。

<input type="text" value="<?php
if(isset($_GET['number'])){
$number = $_GET['number'];
echo '<input type="hidden" value="'. print ($number) .'"';
} ?">

另外,这是我的HTML示例

 <input type="submit" value="9" name="number"class="button1">

这是我的用户界面An example of my UI

的图片

1 个答案:

答案 0 :(得分:0)

您可以使用Session变量在页面加载之间保留数据。基本上,您输入以下内容:

session_start();

要共享变量的每个页面的开头,然后按如下所示声明/调用它们:

$_SESSION["number"] = 3;

因此,如果您在会话中发布/重新加载/导航到另一个页面,则$ _SESSION [“ number”]仍为3,您可以再添加3。

再走一步,您通常不希望将每个添加为HTML表单的数字提交结果。您可能要使用的是AJAX调用,只返回计算字段的内容。这样一来,您就可以实时进行计算,而不必重新加载整个页面,因为这听起来像您想要的那样。

jQuery的AJAX方法对此非常有用。

有效的方法是您有2个php文件,其中1个是您的视图,另一个是控制者。该视图是一个页面,该页面将始终加载您的表单以及其他任何GUI元素,并且每次您在视图中进行更改时都会调用控制器。控制器不只是返回整个页面,而只是数学运算,因此它将仅返回您正在执行的操作的数字部分,您可以在需要时将其重新加载到视图中。

[跟进]

对于纯php / html的简单解决方案,请尝试如下操作:

<?php
  session_start();
  If (!isset($_SESSION['start'])) {$_SESSION['start'] = true;}
  if ($_GET['clear'] == true || $_SESSION['start'] == true){
    $_SESSION['number'] = "";
    $_SESSION['start'] = false;
  }
  if(isset($_GET['number'])){
    $_SESSION['number'] = $_SESSION['number'].$_GET['number'];
  } 
?>
<input type="text" value="<?=$_SESSION['number']?>">