сохранение ценностей после отправки - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь построить калькулятор PHP с кнопками.Одна из моих проблем заключается в том, что я не могу иметь не более одного цифрового значения.Например, когда я пытаюсь ввести значение, например, 33, результат становится 3 в текстовом поле, потому что страница обновляется, так как я использую submit для всех чисел.Следует использовать только одну страницу 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">

и вот изображение моего пользовательского интерфейса Пример моего пользовательского интерфейса

1 Ответ

0 голосов
/ 08 октября 2018

Вы можете использовать переменные сеанса для сохранения данных между загрузками страниц.По сути, вы помещаете это:

session_start();

в начале каждой страницы, которой вы хотите поделиться переменными, затем вы объявляете / называете их так:

$_SESSION["number"] = 3;

Итак, если вы публикуете/ reload / перейти на другую страницу, которая является частью сеанса, $ _SESSION ["number"] все равно будет 3, чтобы вы добавили к нему еще 3.

Если вы сделаете еще один шаг, обычно вы неЯ не хочу отправлять свой результат на каждое добавляемое число в виде HTML-формы.Вероятно, вы захотите использовать AJAX-вызов, чтобы просто вернуть содержимое вычисленных полей.Таким образом, вы можете рассчитывать в режиме реального времени без необходимости перезагружать всю страницу, так как это звучит так, как вы и собираетесь.

AJAX-метод jQuery очень хорош для этого.

Способ, который работает, состоит в том, что у вас есть 2 php-файла, 1 - ваш вид, другой - контроллер.Представление - это страница, которая остается загруженной вместе с вашей формой и другими элементами графического интерфейса, и контроллер вызывается каждый раз, когда вы вносите изменения в представление.Вместо того, чтобы возвращать целую страницу, контроллер - это просто математические операции, поэтому он просто возвращает числовую часть того, что вы делаете, и вы можете перезагружать его в свой View, где бы он вам не понадобился.

[FOLLOW UP]

Для простого решения, которое является чистым 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']?>">
...