Калькулятор html + php
Изучая php, решил написать простой калькулятор на php. Имеются два input для двух значений, select для выбора математической операции и submit . Вопрос в том, как используя select + option , можно отправить значение математического оператора PHP и в дальнейшем организовать работу калькулятора с показом на отдельной странице ( result.php к примеру) html:
Отслеживать
задан 20 окт 2019 в 19:31
Stepan Berkunov Stepan Berkunov
98 1 1 золотой знак 2 2 серебряных знака 14 14 бронзовых знаков
У вас же есть value выбранного option, в чем проблема?
20 окт 2019 в 19:48
в result.php
20 окт 2019 в 23:55
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Грубо, но примерно так:
$result = 0; if (isset($_POST['submit'])) < if ($_POST['math-op'] == 'addition') < $result = $_POST['first-value'] + $_POST['second-value']; >elseif ($_POST['math-op'] == 'subtraction') < $result = $_POST['first-value'] - $_POST['second-value']; >elseif ($_POST['math-op'] == 'multiplication') < $result = $_POST['first-value'] * $_POST['second-value']; >elseif ($_POST['math-op'] == 'division') < $result = $_POST['first-value'] / $_POST['second-value']; >echo $result; >
Отслеживать
ответ дан 21 окт 2019 в 7:59
1,437 1 1 золотой знак 13 13 серебряных знаков 21 21 бронзовый знак
- php
- html
- php7
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.4.30.8420
Калькулятор на PHP
В этой статье мы рассмотрим создание простого калькулятора на языке программирования PHP. Калькулятор позволит выполнять базовые математические операции, такие как сложение, вычитание, умножение и деление. Давайте начнем!
Шаг 1: Настройка HTML-формы Первым шагом будет создание HTML-формы, которая будет отображаться на веб-странице. Форма будет содержать поле для ввода первого числа, поля для выбора операции и поле для ввода второго числа. При отправке формы, данные будут передаваться скрипту PHP для выполнения операции.
Шаг 2: Создание скрипта PHP После настройки HTML-формы перейдем к созданию скрипта PHP, который будет обрабатывать данные, полученные из формы. Скрипт будет считывать значения из полей формы, выполнять выбранную операцию и выводить результат на экран.
Пример кода PHP для выполнения операции над числами:
// Считываем значения из полей формы $num1 = $_POST['num1']; $num2 = $_POST['num2']; $operation = $_POST['operation']; // Выполняем выбранную операцию и выводим результат switch ($operation) case 'add': $result = $num1 + $num2; break; case 'subtract': $result = $num1 - $num2; break; case 'multiply': $result = $num1 * $num2; break; case 'divide': $result = $num1 / $num2; break; default: $result = "Неверная операция"; break; > echo "Результат: " . $result; ?>
Шаг 3: Связывание HTML-формы с PHP-скриптом Вернемся к HTML-форме и настроим отправку данных в наш PHP-скрипт при нажатии кнопки «Рассчитать». Для этого добавим атрибут action в открывающий тег указав путь к нашему PHP-скрипту.
formaction="calc.php"method="POST"> inputtype="submit"value="Рассчитать"> form>
Шаг 4: Тестирование После завершения кодирования можно запустить проект и протестировать работоспособность калькулятора. Введите числа, выберите операцию и нажмите кнопку «Рассчитать». Результат операции должен быть выведен на экран.
Поздравляю! Вы успешно создали простой калькулятор на языке программирования PHP. Этот калькулятор позволит пользователям выполнять базовые математические операции на веб-странице.
Обратите внимание, что данный пример является простым и не учитывает обработку ошибок, таких как деление на ноль. Рекомендуется продолжить развитие этого проекта, добавив соответствующие проверки и обработку ошибок.
Пишем калькулятор на PHP
Всем привет! Мы с вами изучили 2 типа запросов: GET и POST. Они позволяют нам отправлять данные на сервер, благодаря чему мы можем с ним «общаться». Мы рассмотрели несколько простейших примеров. В этом уроке для закрепления материала мы с вами напишем свой калькулятор!
Прежде чем приступить к его созданию, давайте обговорим то, что он должен уметь. Пусть наш калькулятор будет принимать на вход 2 числа, и операцию, которую над этими числами нужно совершить (сложение, вычитание, умножение, деление). После этого он будет выводить нам получившееся выражение и его результат.
Итак, вот так будет выглядеть форма для ввода исходных данных:
А вот так будет выглядеть страница с результатом:
Давайте теперь спроектируем, где что будет лежать. Я предлагаю сделать такую архитектуру:
- index.php – здесь будет храниться форма, в которой мы будем заполнять исходные данные
- result.php – здесь будет храниться шаблон, который будет выводить результат вычислений
- calc.php – файл, в котором будет храниться непосредственно вся бизнес-логика нашего приложения.
Шаблоны калькулятора
Итак, приступим. Давайте начнём с формы. Она будет содержать в себе:
- 2 input’а, в которые мы будем записывать аргументы;
- select, который позволит нам выбрать одну из доступных операций;
- кнопку, для отправки формы.
Я приведу здесь пример формы, в которой будет только две возможные операции: сложение и вычитание.
Калькулятор
Здесь вам всё должно быть знакомо. Если нет — повторите уроки с формами в курсе HTML.
Мы видим, что данная форма отправляет GET-запрос на адрес /result.php. Как мы уже решили, там будет находиться шаблон для вывода результата вычислений.
Вот пример кода, который получился у меня:
Калькулятор Результат вычислений:
Как видим, здесь всё предельно просто — в переменную $result присваивается значение, возвращаемое из файла calc.php. Затем мы просто-напросто выводим результат из этой переменной.
Бизнес-логика калькулятора
Теперь самое интересное — написать бизнес-логику. Создаём файл calc.php и начинаем думать.
Первое, в чём нам стоит убедиться, есть ли вообще какие-либо данные в GET-запросе. Для этого проверяем массив $_GET на пустоту:
Сейчас, если перейти по адресу http://myproject.loc/result.php, мы увидим соответствующий результат:
Далее, нам стоит проверить, что из формы переданы x1, x2 и operation.
if (empty($_GET['operation'])) < return 'Не передана операция'; >if (empty($_GET['x1']) || empty($_GET['x2']))
Можно теперь вернуться на форму с исходными данными и заполнить её какими-нибудь данными:
Если теперь нажать на кнопку отправки формы, мы увидим, что никаких ошибок в форме результата теперь не возникло:
Вместо этого мы теперь видим число 1. Это результат того, что в файле calc.php мы ничего не вернули, но при этом попытались это «ничего» с помощью функции require присвоить в переменную $result. Единица вернулась нам, потому что файл был успешно подключен, но ничего не вернул. Это значение по умолчанию.
Попробуем теперь убрать один из аргументов в форме:
Если мы отправим запрос сейчас, то увидим соответствующую ошибку:
Ну что, теперь мы знаем, что данные у нас проверяются, можно с ними и поработать.
Давайте для удобства сделаем 2 переменные $x1 и $x2 и положим в них значения из GET-запроса.
//… продолжение файла $x1 = $_GET['x1']; $x2 = $_GET['x2'];
Давайте теперь составим выражение, которое мы будем вычислять. Его мы просто будем выводить для наглядности.
//… продолжение файла $x1 = $_GET['x1']; $x2 = $_GET['x2']; $expression = $x1 . ' ' . $_GET['operation'] . ' ' . $x2 . ' = '; return $expression;
Теперь вернёмся на форму и снова введём корректные аргументы. После этого отправим её и увидим, что на странице с результатом появилось выражение, результат которого мы будем считать.
Дело осталось за малым — нужно только посчитать результат.
Для того, чтобы определить, какое действие нужно совершить с аргументами, воспользуемся конструкцией switch-case.
В результате получаем такое содержимое calc.php.
if (empty($_GET['operation'])) < return 'Не передана операция'; >if (empty($_GET['x1']) || empty($_GET['x2'])) < return 'Не переданы аргументы'; >$x1 = $_GET['x1']; $x2 = $_GET['x2']; $expression = $x1 . ' ' . $_GET['operation'] . ' ' . $x2 . ' = '; switch ($_GET['operation']) < case '+': $result = $x1 + $x2; break; case '-': $result = $x1 - $x2; break; default: return 'Операция не поддерживается'; >return $expression . $result;
Давайте теперь снова отправим форму и посмотрим на результат.
Получили простейший калькулятор, который умеет складывать и вычитать. Разумеется, это лишь простейший прототип. Довести его до ума вы сможете сами, а в домашнем задании вас ждут наводящие вопросы, которые помогут найти ошибки, содержащиеся в приведенном коде.
Как сделать калькулятор на php
Пришло ко мне письмо с просьбой поменяться линками между сайтами от создателей www.progteam.ru. Сайт новый и поэтому не раскрученный, но задачи, которые они перед собой ставят весьма сильные. Из того, что меня сразу заинтересовало на этом сайте это раздел про PHP, куда я зашел практически машинально.
Статейка «Наши первые 2 программки» заставила меня задуматься над тем, что я Вам сейчас пытаюсь приподнести. Полностью ее вы можете прочитать сами, а я воспользуюсь ее примером, для того, чтобы Вас чему-то научить.
Автор данного урока, некий Stalk, в качестве примера программы на PHP приводит пример реализации калькулятора, чтобы было доступно и просто для начинающих. Я приведу Вам весь его код, надеюсь не сочтут за плагиат. На случай, если этот материал исчезнет из сети.
Калькулятор else $result="Действие не выбрано"; //Мы не узнали ни одного действия //Теперь выводим результат echo "x"; if($a) echo $a; //Если действие выбрано - между переменными показываем это действие else echo " "; //Иначе покажем пробел echo "y=$result
"; //х у=чему-то. И еще надо бы не забыть отступить строчку до начала формы ?> Введите х:
Введите у:
Выберите действие:
Если Вы заметили, то автор использует для вставки кода , даже не знаю к чему бы это. Попробуем добавить к этой программе, тот код который мы мучительно создавали в предыдущих шагах. Добавьте его в самое начало файла.
/*foreach ($_REQUEST as $name => $value) < eval("unset(\$".$name.");"); >;*/ foreach($_REQUEST as $key => $val) < if(isset($$key)) unset($$key); >; if (get_magic_quotes_gpc()) < $_GET = array_map('stripslashes', $_GET); $_POST = array_map('stripslashes', $_POST); $_COOKIE = array_map('stripslashes', $_COOKIE); >; ini_set("magic_quotes_gpc","0"); ini_set("magic_quotes_runtime","0"); ini_set("display_errors","1"); if (version_compare(phpversion(), "5.0.0", ">")==1) < ini_set("error_reporting", E_ALL | E_STRICT); >else < ini_set("error_reporting", E_ALL); >; ?>
Первый же вызов дает результат.
Notice: Undefined index: action in /home/www.firststeps.ru/2.php on line 24 Notice: Undefined index: x in /home/www.firststeps.ru/2.php on line 25 Notice: Undefined index: y in /home/www.firststeps.ru/2.php on line 26
Так как вам это ?! Именно от этого я пытаюсь Вас уберечь. Научившись делать все правильно сразу, Вы никогда не сможете сделать ошибку, потому что просто напросто не будете знать как ее сделать 🙂
Давайте разберемся, как надо делать правильно и как избавиться от таких предупреждений. Все очень просто, в PHP есть функция проверки существования переменной isset(), которую Вы должны использовать каждый раз, когда хотите получить значение поля формы, т.е. внешний параметр, который пытается Вам передать пользователь. Например для параметра action, это делается так:
if (isset($_REQUEST["action"])) < $a=$_REQUEST["action"]; >else < $a=""; >;
Я специально отошел от оригинала и заменил $_GET на $_REQUEST, по причинам, которые я уже объяснял раньше. Теперь, если параметр action существует, то запоминаем его в переменной $a. Если же его нет, то вероятнее всего разумным будет сделать переменную $a пустой строкой, чтобы дальнейшая работа с ней не могла привести к каким-то непредвиденным результатам. Дальше я бы на месте автора проанализировал эту переменную и решил бы, что делать дальше.
if ($a!="") < // тут код калькулятора >;
Внутри данного условия, которое выполнится, если $a не пустое можно продолжить получение других переменных и реализовывать калькуляцию, таким образом можно оградить программу от выполнения ненужных действий, если Вы вызвали программу без указания действия.
С получением параметров x и y получается веселее. Запомните, все что Вам передал пользователь Вы должны проверить на соответствие нужному типу данных, или привести эти данные к нужному типу. Я предполагаю, что числа над которыми ведется работа должны быть вещественными, поэтому делаем так как нам нужно:
if (isset($_REQUEST["x"])) < $x=(float)$_REQUEST["x"]; >else < $x=0; >; if (isset($_REQUEST["y"])) < $y=(float)$_REQUEST["y"]; >else < $y=0; >;
Т.е. параметры x и y мы насильно загоняем в формат вещественного числа явным переопределением типа. Теперь, если кто-то захочет скормить калькулятору фразу вася + маша, то в ответ получит нуль :), так как преобразование из текста в вещественное число отбросит все неверные символы.
Дальше сам процесс калькуляции. Ну почему надо было делать так сложно и не наглядно. Такое количество конструкций if закружит голову любому. Думаю вернее было бы сразу усложнить материал и привести все к более компактному и красивому оператору switch, который как раз для таких случаев и предназначен.
switch ($a) < case "+": $result = $x + $y; break; case "-": $result = $x - $y; break; case "*": $result = $x * $y; break; case "/": if ($y != 0) < $result = $x / $y; >else < $result = "деление на ноль"; >; break; case "^": $result = 1; for ($i=0; $i < $y; $i++) < $result *= $x; >; break; default: $result = "Неизвестное действие"; >;
Таким образом мы разобрались с тем, как надо правильно получать данные от пользователя. Я каждый раз Вам буду напоминать об этом, пока Вас не станет тошнить от этого 🙂 Доведите это дело до автоматизма, тогда Вы будете защищены от всех напастей.
Я конечно хочу преклониться перед авторами этого сайта, так как знаю, что такое написать обучающую статью. Несомненно для каждой такой статьи найдется кучка цинников-критиканов, которые разобьют все старания в пух и прах. Прошу прошения, что сам стал таким, но это лишь ради Вас и ради искусства. Теперь Вы можете и меня покритиковать. Авось доведем дело до совершенства.