Калькулятор PHP с использованием одной формы ввода

<?php
// current formula in input box
if (isset($_POST['txt'])) {
    $current_txt = $_POST['txt'];
}

if (isset($_POST['select1'])) {
    $message = "1";
}
if (isset($_POST['select2'])) {
    $message = "2";
}
if (isset($_POST['select3'])) {
    $message = "3";
}
if (isset($_POST['select4'])) {
    $message = "4";
}
if (isset($_POST['select5'])) {
    $message = "5";
}
if (isset($_POST['select6'])) {
    $message = "6";
}
if (isset($_POST['select7'])) {
    $message = "7";
}
if (isset($_POST['select8'])) {
    $message = "8";
}
if (isset($_POST['select9'])) {
    $message = "9";
}
if (isset($_POST['select0'])) {
    $message = "0";
}
if (isset($_POST['select+'])) {
    $message = "+";
}
if (isset($_POST['select-'])) {
    $message = "-";
}
if (isset($_POST['select/'])) {
    $message = "/";
}
if (isset($_POST['select*'])) {
    $message = "*";
}
if (isset($_POST['clear'])) {
    $message = "clear";
}
if (isset($_POST['calculate'])) {
    $message = "calc";
}

if ($message == "calc") {
    // Calculate using eval 
    $current_txt .= " = " . eval('return ' . $current_txt . ';');
} else {
    // Append input to formula
    $current_txt .= $message;
}

if ($message == "clear") {
    $current_txt = "";
}
?>

<div style = "padding-left: 200px; margin-top: 100px">
    <form  method = "post">
        Enter value:  <input type = "text" name = "txt" value = "<?php
        echo $current_txt;
        ?>" >
        <div style = "padding-left: 105px"><br>

            <input type = "submit" name = "select1" value = "1">
            <input type = "submit" name = "select2" value = "2">
            <input type = "submit" name = "select3" value = "3">
            <input type = "submit" name = "select4" value = "4"><br><br>
            <input type = "submit" name = "select5" value = "5">
            <input type = "submit" name = "select6" value = "6">
            <input type = "submit" name = "select7" value = "7">
            <input type = "submit" name = "select8" value = "8"><br><br>
            <input type = "submit" name = "select9" value = "9">
            <input type = "submit" name = "select0" value = "0">
            <input type = "submit" name = "select+" value = "+">
            <input type = "submit" name = "select-" value = "-"><br><br>
            <input type = "submit" name = "select/" value = "/">
            <input type = "submit" name = "select*" value = "*">
            <input type = "submit" name = "clear" value = "clear"> <br><br>
            <input type = "submit" name = "calculate" value = "calculate">

        </div>
    </form>
</div>

когда я делаю какую-либо операцию, она работает. например, если я хочу добавить два числа, например 5 + 6 = 11, но опять же, если я хочу добавить, скажем, число 5 к примерному оцененному ответу 11 + 5 = 16, тогда его ошибка отображения, которая означает только один раз, когда я могу сделать операцию снова, если я хочу выполнить операцию с оцененным ответом на ее отображение ошибки, я пытаюсь исправить эту проблему, но у меня нет способа сделать это, поэтому может ли кто-нибудь сообщить мне, как исправить эту проблему. ?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
144
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Обновите строку (я записал вашу строку):

 if ($message == "calc") {
    // Calculate using eval 
    // $current_txt .= " = " . eval('return ' . $current_txt . ';');
      $current_txt = eval('return ' . $current_txt . ';');
 } 

Надеюсь, это решит вашу проблему:

Спасибо, это действительно решило мою проблему. Большое спасибо

user9623909 10.04.2018 12:32

Но я хотел бы реализовать ajax вместо отправки страницы

Dipanwita Kundu 10.04.2018 12:44

мне поручили делать это только на php.

user9623909 10.04.2018 13:12

Хорошо, как хотите ... Но реализация Ajax - тоже оптимизированный способ.

Dipanwita Kundu 10.04.2018 13:14

хорошо, я постараюсь использовать и это, в любом случае спасибо за руководство.

user9623909 10.04.2018 13:27
if ($message == "calc") 
{
// Calculate using eval
//Add Below line for extact last expression calculation
$cal_arr=array_reverse(explode(" = ",$current_txt));
$current_txt .= " = " . eval('return ' . $cal_arr[0] . ';');   
}
Ответ принят как подходящий

Вам нужно добавить только два изменения

1-й добавить предыдущий номер к результату

if ($message == "calc") {
  $result = eval('return ' . $current_txt . ';');
  $current_txt = $current_txt.'='.$result;

 }

2-й получить значение результата из строки с функцией разнесения

if (isset($_POST['txt'])) {
    $current_txt = $_POST['txt'];
    $current_txt = end(explode(" = ",$current_txt));
}

@sameerpatil: скопируйте, вставьте этот код: jsfiddle.net/nikleshraut/s5n53zu2 и запустите

Niklesh Raut 11.04.2018 12:33

Другие вопросы по теме