2012-06-17 3 views
0

Я создаю калькулятор в PHP, и у меня должна быть такая структура моего HTML, где мои номера являются кнопками, на которые можно щелкнуть, и число, которое было сначала нажато, будет первым значением и второе число, которое я нажимаю, будет вторым значением. Я понятия не имею, как это будет работать, возможно ли это? если так, как вот мой кодВычисление значений в PHP с помощью кнопок

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

Я не класть все цифры в калькулятор для проводки целей

+1

Почему бы не использовать JavaScript вместо этого? Логично было бы легче. –

+0

Это упражнение в моей книге, и я чувствую, что мне нужно это сделать, но книга не дает никакого представления о том, как это сделать. но я понятия не имею, как это сделать. – user962206

+0

Это домашнее задание? –

ответ

0

Как и другие упоминали, лучший способ сделать это состоит в использовании на стороне клиента кодирования (Javascript). Однако, если вам нужно написать код PHP, вам необходимо отправить форму дважды. В первый раз введите входную переменную (первый номер) в скрытый элемент ввода формы и снова напечатайте html на этот раз с помощью дополнительного скрытого элемента ввода. Во второй раз найдите это скрытое входное значение: если оно существует, это означает, что новый вход является вторым номером, а скрытый ввод - первым числом. Получите значение скрытого ввода, получите новый номер, добавьте их вместе и покажите результаты. Убедитесь, что вы сбросили скрытое значение ввода.

+0

Вам понадобятся три представления для базовой математики. Номер (представить) номер операнда (подавать) (представить). Это увеличивается при добавлении многозначных чисел. –

+0

Правда. У меня сложилось впечатление, что он будет работать только с одноразрядными числами, основанными на описании проблемы. Однако вы правы в операнде. – Bee

+0

Я, вероятно, был способ подробно описать, разместив для многозначных чисел простое (или то, что должно было быть простым) упражнение по книгам, поэтому согласился с этим. –

0

Поскольку это упражнение для книги, и вам нужно написать код, я не буду давать вам никакого кода. Но я могу указать вам в правильном направлении (или хотя бы один из них).

Рассмотрите возможность использования какого-либо значения, которое может быть отправлено с каждым запросом, в котором хранится текущее накопленное значение всех операций. Вероятно, это должно отображаться где-то, а также помещено в поле, которое PHP сможет прочитать в форме submit (подсказка: вы когда-нибудь слышали о скрытом типе ввода?). Как вы будете отслеживать последнюю операцию? Возможно, вы могли бы использовать другое одно из этих полей, чтобы сохранить операцию, пока не будет нажата другая кнопка.

Какой код вы можете использовать, чтобы проверить, представлена ​​ли форма? Как вы можете проверить, какая кнопка нажата. Какие значения будут установлены, если нажата +? Как насчет того, что число нажато? Что делать, если несколько чисел вставляются в строку?

Другие вещи, которые следует учитывать: попробуйте сыграть с настоящим калькулятором. Когда отображаются результаты? Какой порядок операций используется? Каждая операция имеет левую сторону и правую сторону. Что происходит, когда вы нажимаете несколько чисел подряд. Как насчет десятичных знаков? Должна быть ясная кнопка?

+0

Я понятия не имею, какие скрытые входы, можете ли вы привести пример? – user962206

+0

'' Они не отображаются пользователю, но они отправляются на сервер при отправке формы. –

+0

Кстати, моя другая проблема в том, что каждый раз, когда я нажимаю кнопку, значения не сохраняются ... только одиночные значения. почему так? это потому, что, когда форма нажата, страница перезагружается? можете подать примерный код? Я действительно не знаю, как это будет работать – user962206

0

Вам понадобится способ отслеживания предыдущих входов. Каждый раз, когда вы нажимаете кнопку, запрос отправляется на сервер с этой информацией (в $_GET), но старые входы больше недоступны. Несколько методов:

Скрытые элементы формы

Каждый раз, когда пользователь нажимает кнопку, вы читаете значение и выводит его обратно на страницу в скрытой форме элемента. Каждый раз, когда вам нужно прочитать значение скрытого элемента с помощью существующего метода с помощью $_GET, выясните, что вам нужно сделать математически, и сохраните старый материал и новые вещи в скрытом элементе снова для следующего ввода.

См. Пример this page.

Печенье

Вы можете использовать setcookie установить печенье с значением, введенным пользователем. Каждый раз, когда пользователь нажимает кнопку, вы хотите загрузить значение из файла cookie и добавить текущий ввод. Когда пользователь нажимает кнопку =, вы загружаете данные cookie и разбираете выражение.Вы упростите и сохраните части выражения в какой-то разделительной строке в файле cookie, так что у вас есть operand,operator,operand, а затем вы можете легко вычислить результат. Нажатие кнопки очистки очистит значение файла cookie.

Этот tizag tutorial является довольно хорошим примером того, что вы хотите делать с печеньем.

Javascript

Очевидно, что самый простой способ. Поскольку состояние будет сохранено, вам не нужно передавать значения взад и вперед.

Смежные вопросы