2014-01-29 3 views
10

Я создаю базовый калькулятор PHP, который позволяет вводить два значения и затем выбирает ваш оператор, а затем отображает ответ. Все работает нормально, за исключением того, что он не выводит ответ на браузер.Простой 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> 

ответ

2

Вам нужно назначить $ первым и $ второго

$first = $_POST['first']; 
$second= $_POST['second']; 

Кроме того, как сказал Travesty3, вам нужно выполнить свою арифметику вне цитат:

echo $first + $second; 
+1

Вам также необходимо сделать расчет за пределами кавычек. В противном случае вы просто будете выводить оба числа с оператором между ними, а не выполнять вычисления. И поместите 'add',' subtract' и т. Д. В кавычки. – Travesty3

1

Вы должны получить значения таким же образом, чтобы получить работу калькулятора, который выглядит как:

<?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> 
1
$first = doubleval($_POST['first']); 
$second = doubleval($_POST['second']); 

if($_POST['group1'] == 'add') { 
    echo "$first + $second = ".($first + $second); 
} 

// etc 
4

Лично я бы сделал переключатель вместо этого, если, иначе, если, еще

$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; 
} 
3

Вы также должны поместить [== 'добавить'] операцию по математике в кавычки

if($_POST['group1'] == 'add') { 
echo $first + $second; 
} 

полный код schould выглядеть:

<?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; 
} 
?> 
0

Контрольная строка используя одиночные кавычки

Пример. $_POST['group1'] == 'add'

9
<?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> 
0
<!DOCTYPE html> 
    <html lang="en"> 
    <head> 
     <meta charset="UTF-8"> 
     <title>Calculator</title> 
    </head> 
    <body> 
    HTML Code is here: 

     <form method="post"> 
      <input type="text" name="numb1"> 
      <input type="text" name="numb2"> 
      <select name="operator" id=""> 
       <option>None</option> 
       <option>Add</option> 
       <option>Subtract</option> 
       <option>Multiply</option> 
       <option>Divide</option> 
       <option>Square</option> 
      </select> 
      <button type="submit" name="submit" value="submit">Calculate</button> 
     </form> 

    PHP Code: 

     <?php 

      if (isset($_POST['submit'])) { 
       $result1 = $_POST['numb1']; 
       $result2 = $_POST['numb2']; 
       $operator = $_POST['operator']; 
       switch ($operator) { 
        case 'None': 
         echo "You need to select any operator"; 
         break; 
        case 'Add': 
         echo $result1 + $result2; 
         break; 
        case 'Subtract': 
         echo $result1 - $result2; 
         break; 
        case 'Multiply': 
         echo $result1 * $result2; 
         break; 
        case 'Divide': 
         echo $result1/$result2; 
         break; 
        case 'Square': 
         echo $result1 ** $result2; 
         break; 
       } 
      } 


     ?> 
     enter code here 

    </body> 
    </html> 
+0

Хотя этот фрагмент кода может быть решением, в том числе объяснение действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. –

+0

Благодарим вас за этот фрагмент кода, который может предоставить некоторую ограниченную немедленную помощь. [Правильное объяснение значительно улучшит его долгосрочную ценность] (// meta.stackexchange.com/q/114762/350567), показывая * почему * это хорошее решение проблемы и сделает его более полезным для будущего читателей с другими подобными вопросами. Пожалуйста, отредактируйте свой ответ, чтобы добавить какое-то объяснение, включая сделанные вами предположения. – iBug

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