Я создаю базовый PHP-калькулятор, который позволяет вводить два значения и затем выбирает ваш оператор, а затем отображает ответ. Все работает нормально, за исключением того, что он не выводит ответ на вопрос о броузе.
Вот коды для файлов html и PHP:
<head> <meta charset="utf-8"> <title>Calculator</title> </head> <body> <form method="post" attribute="post" action="disp_form.php"> <p>First Value:<br/> <input type="text" id="first" name="first"></p> <p>Second Value:<br/> <input type="text" id="second" name="second"></p> <input type="radio" name="group1" id="add" value="add" checked="true"><p>+</p><br/> <input type="radio" name="group1" id="subtract" value="subtract"><p>-</p><br/> <input type="radio" name="group1" id="times" value="times"><p>x</p><br/> <input type="radio" name="group1" id="divide" value="divide"><p>/</p><br/> <p></p> <button type="submit" name="answer" id="answer" value="answer">Calculate</button> </form> </body> </html>
PHP-файл:
<!doctype html> <html> <head> <meta charset="utf-8"> <title>Answer</title> </head> <body> <p>The answer is: <?php if($_POST['group1'] == add) { echo "$first + $second"; } else if($_POST['group1'] == subtract) { echo "$first - $second"; } else if($_POST['group1'] == times) { echo "$first * $second"; } else($_POST['group1'] == divide) { echo "$first / $second"; } ?> </p> </body> </html>
<?php $result = ""; class calculator { var $a; var $b; function checkopration($oprator) { switch($oprator) { case '+': return $this->a + $this->b; break; case '-': return $this->a - $this->b; break; case '*': return $this->a * $this->b; break; case '/': return $this->a / $this->b; break; default: return "Sorry No command found"; } } function getresult($a, $b, $c) { $this->a = $a; $this->b = $b; return $this->checkopration($c); } } $cal = new calculator(); if(isset($_POST['submit'])) { $result = $cal->getresult($_POST['n1'],$_POST['n2'],$_POST['op']); } ?> <form method="post"> <table align="center"> <tr> <td><strong><?php echo $result; ?><strong></td> </tr> <tr> <td>Enter 1st Number</td> <td><input type="text" name="n1"></td> </tr> <tr> <td>Enter 2nd Number</td> <td><input type="text" name="n2"></td> </tr> <tr> <td>Select Oprator</td> <td><select name="op"> <option value="+">+</option> <option value="-">-</option> <option value="*">*</option> <option value="/">/</option> </select></td> </tr> <tr> <td></td> <td><input type="submit" name="submit" value=" = "></td> </tr> </table> </form>
Лично я бы сделал переключатель вместо всего этого, если, else if, else
$first = $_POST['first'] + 0;//a small "hack" to make sure its an int but allow negs!! $second= $_POST['second'] + 0; $operator = $_POST["group1"]; switch($operator) { case "add" echo "Answer is: " .$first + $second; break; case "subtract" echo "Answer is: " .$first - $second; break; case "times" echo "Answer is: " .$first * $second; break; case "divide" echo "Answer is: " .$first / $second; break; }
Вам также нужно поместить математическую операцию [== 'add'] в кавычки
if($_POST['group1'] == 'add') { echo $first + $second; }
полный код будет выглядеть следующим образом:
<?php $first = $_POST['first']; $second= $_POST['second']; if($_POST['group1'] == 'add') { echo $first + $second; } else if($_POST['group1'] == 'subtract') { echo $first - $second; } else if($_POST['group1'] == 'times') { echo $first * $second; } else if($_POST['group1'] == 'divide') { echo $first / $second; } ?>
Вам нужно назначить $ first и $ second
$first = $_POST['first']; $second= $_POST['second'];
Кроме того, как сказал Travesty3, вам нужно выполнить свою арифметику вне цитат:
echo $first + $second;
Вы должны получить значения таким же образом, чтобы получить операцию калькулятора, которая выглядит так:
<?php if($_POST['group1'] == add) { echo "$_POST['first']+ $_POST['second']; } ... and so on ?>
Или, чтобы это стало проще, просто выполните:
<!doctype html> <html> <head> <meta charset="utf-8"> <title>Answer</title> </head> <body> <p>The answer is: <?php $first = $_POST['first']; $second= $_POST['second']; if($_POST['group1'] == add) { echo "$first + $second"; } else if($_POST['group1'] == subtract) { echo "$first - $second"; } else if($_POST['group1'] == times) { echo "$first * $second"; } else($_POST['group1'] == divide) { echo "$first / $second"; } ?> </p> </body> </html>
$first = doubleval($_POST['first']); $second = doubleval($_POST['second']); if($_POST['group1'] == 'add') { echo "$first + $second = ".($first + $second); } // etc
Проверка строки с использованием одинарных кавычек
Ex. $_POST['group1'] == 'add'