首页 > 解决方案 > 提交后保留值

问题描述

我正在尝试用按钮构建一个 PHP 计算器。我的问题之一是我的值不能超过一位。例如,当我尝试输入一个值(例如 33)时,文本框中的结果变为 3,因为当我对所有数字使用提交时,页面会刷新。只应使用一个 PHP 页面。这个解决方案是向我建议的,但它并没有解决我的问题,因为它使用了多个页面。此外,多于一个数字似乎不起作用。

<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">

这是我的 UI 的图片 我的 UI示例

标签: phphtmlcalculator

解决方案


您可以使用 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']?>">

推荐阅读