简体   繁体   中英

PHP Calculator: My solutions won't show up I click calculate

I've recently started the assignment of building a calculator out of PHP and I can't seem to find what I'm doing wrong in my code. Every time I press calculate it doesn't give me back my solution.

<?php

$num1 = $_GET['num1'];
$num2 = $_GET['num2'];
$cal = $_GET['opt'];

if($num2, $num2 != (int)){
    $num1=0;
    $num2=0;
}


    switch($cal) {

        case 'add':
        echo $num1+$num2;
        break;

        case 'sub':
        echo $num1-$num2;
        break;

        case 'mul':
        echo $num1*$num2;
        break;

        case 'div':
        echo $num1/$num2;
        break;

        default:
        echo "Invalid Operator";
    }



?>

Here is the HTML

<form action="calculate.php" method="GET"/>

Number 1:<input type="text" name="num1"/>
<br />
<select>
<option type="text" name="opt" value="add"> + </option>
<option type="text" name="opt" value="sub"> - </option>
<option type="text" name="opt" value="mul"> * </option>
<option type="text" name="opt" value="div"> / </option>
</select>

<br />
Number 2:<input type="text" name="num2"/>
<br />

<input type="submit" value="calculate"/>




</form>

try :

$num1 = intval($_GET['num1']);
$num2 = intval($_GET['num2']);

and remove

if($num2, $num2 != (int)){
  $num1=0;
  $num2=0;
}

if($num2, $num2 != (int)) looks like a syntax error to me (the comma).

You just say it doesn't work, are you getting an error message? Have you made sure error reporting is on and displaying errors to your browser? I think it should tell you about the syntax error.

I would initialise the var differently:

<?php

$num1 = $num2 = 0;
if (isset($_GET['num1']) && isset($_GET['num1']) && isset($_GET['num1']))
{
  $num1 = $_GET['num1'];  
  $num2 = $_GET['num2'];
  // edit: added validation
  if (!is_numeric($num1) || !is_numeric($num2))
  {
    $res = NULL;
  }
  else
  {
  $cal = $_GET['opt'];
  switch($cal)
  {
    case 'add':
      $res = $num1+$num2;
    break;
    case 'sub':
      $res = $num1-$num2;
    break;
    case 'mul':
      $res = $num1*$num2;
    break;
    case 'div':
      $res = $num1/$num2;
    break;
    default:
      $res = NULL;
  }
  }
}
// display html on the same file
?>
<html>
<body>
<form action="calculate.php" method="GET"/>
  Number 1:<input type="text" name="num1"/>
  <br />
  <select>
    <option type="text" name="opt" value="add"> + </option>
    <option type="text" name="opt" value="sub"> - </option>
    <option type="text" name="opt" value="mul"> * </option>
    <option type="text" name="opt" value="div"> / </option>
  </select>
  <br />
  Number 2:<input type="text" name="num2"/>
  <br />
  <input type="submit" value="calculate"/>
</form>
<? if (isset($res) && $res != NULL): ?>
  <span class="result-label">Result:</span> <span class="result"><?=$res?></span>
<? endif ?>
</body>
</html>

This is wrong

if($num2, $num2 != (int)){
  $num1=0;
  $num2=0;
}

try

$num1 = intval( $num1 );
$num2 = intval( $num2 );

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM