Пишем калькулятор на PHP

Давайте сегодня разберем с вами как создавать калькулятор на PHP. Сразу скажу, что калькулятор у нас будет простой, понимающий только четыре оператора: плюс, минус, делить и умножить (+, -, /, *), но разбираться лучше всего на простых вещах, а потом уже можно будет делать какие-то более серьезные фишки или усовершенствовать существующие. Но без понимания того, как работают программы на самом простом уровне, мы не сможем делать что-то более сложное.

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

Форма будет состоять из трех текстовых полей (полей типа текст – type=”text”) и кнопки «Считать!». В первое поле мы будем вводить первое число, во второе поле мы будем вводить математический оператор (сложения, вычитания, умножения или деления), а в третье поле мы будем вводить второе число. По нажатию на кнопку «Считать!» у нас будет выводиться результат наших действий.

Здесь следует учесть и отразить это в программе: первое — что на ноль делить нельзя, второе — что пользователь может вместо операторов (+, -, *, /) ввести какой-нибудь другой символ, а также отследить все это и сделать так, чтобы наша программа вела себя адекватно в любых не стандартных ситуациях. Что значит адекватно? То есть мы должны корректно показать пользователю, что он где-то ошибся, если он ошибся, например, ввел не тот оператор. При этом программа не должна нам выдать нечто не реальное.

И так, с чего мы начнем? Давайте создадим форму для калькулятора на PHP:

 

Далее мы сделаем следующее:

  1. Проверим, была ли корректно отправлена форма
  2. Если она была отправлена, отфильтруем полученные данные
  3. В зависимости от оператора, производим математические действия
  4. Если производится деление, проверим второй оператор, чтобы он не равнялся нулю (на ноль делить нельзя)
  5. Сохраняем полученный результат в переменной и выводим пользователю

Немного поясню задание. Наверно у вас возник вопрос – что значит, была ли корректно отправлена форма? Во первых нам нужно проверить – форма вообще была отправлена, то есть нам отправляли какие-то данные и если да, то эти данные нужно принять и отфильтровать. Дальше – в некоторых случаях есть такие формы, которые имеют много полей. И у них есть поля как обязательные для заполнения, так и не обязательные и нужно проверить, а все ли данные из обязательных полей к нам пришли.

Теперь мы проверяем – пользователь пришел к нам первый раз или он нам отправляет данные (например, методом POST). То есть у нас будет стоять условие (конструкция if()). В зависимости от этого условия, если пользователь пришел к нам первый раз, то есть POSTa еще не было, тогда, что мы делаем? А ничего не делаем, мы просто возвращаем ему форму с калькулятором.

Далее, если был POST, то есть пользователь отправил нам данные, то здесь мы начинаем думать, что нам делать. Для начала нам нужно узнать, все ли данные нам пришли? Далее их нужно отфильтровать. Потом нам нужно с ними производить какие-то действия. А какие действия мы можем произвести? Если был введен математический оператор плюс, тогда нам нужно произвести действие сложение, если математический оператор минус, тогда произвести вычитание, если умножение, тогда произвести умножение, если деление, тогда действие деление. Однако, в действии деления необходимо соблюсти еще одно условие – если вторым оператором будет стоять ноль, тогда нужно вывести сообщение, что на ноль делить нельзя и остановить программу, а если там не ноль, тогда произвести действие деления. Ну и третье условие, которое у нас может быть – это какой-нибудь неизвестный оператор. При этом мы тоже должны вывести сообщение пользователю, что он ошибся и ввел не верный оператор и лучше конечно показать этот самый неверный оператор.

Здесь есть еще такой момент. В нашей программе при каждом вводе данных пользователем мы должны каждый раз выводить ему результат. Однако много эхов (echo) – есть плохо. По сути, у нас должна быть одна точка входа и одна точка выхода. То есть каждый раз при проверки условием на математический оператор, мы не должны каждый раз писать echo, а должны присвоить результат переменной и в конце всех условий вывести один раз результат (echo результат).

И так, поехали:

 

Немного поясню, как работает функция clearData(). Первый параметр функции – это те данные, которые присылает нам пользователь. Второй параметр – это тип присланных данных. По умолчанию у нас второй параметр равен ‘i’ или integer – это числовой тип данных. Почему мы умножаем числовые данные на единицу? Для того чтобы привести данные к целому числу. Далее мы проверяем по строковому типу данных – ‘s’ или тип string. Здесь мы уже просто отрезаем пробелы и удаляем HTML тэги. Для чего вообще нужен этот второй параметр? Во первых, для того, чтобы нам было удобнее фильтровать данные по их типу – разный тип данных требует разных видов фильтрации, ну а во вторых мы всегда можем расширить нашу функцию проверки данных.

Ну и напоследок одна маленькая фишка — если вдруг вы захотите вставить этот калькулятор куда-нибудь к себе на сайт через функцию include, include_once, require или require_once, то он у вас работать не будет. Для того, чтобы этот код можно было вставлять куда угодно и при этом он был рабочим именно у вас на сайте, необходимо в форме калькулятора в атрибуте action поменять значение с

на

 .

The beauty of doubletwist is http://www.spying.ninja/ that it supports every android device and works on virtually any computer
Вы можете оставить ответ, или trackback с вашего сайта.

Leave a Reply

Надо сделать сайт? Мы выгодно сделаем сайт! ©