2015-11-18 3 views
1

Эй, поэтому я делаю быструю PHP-программу, которая позволяет простые математические вычисления. И вместо того, чтобы выход переходил на разные страницы с _POST, я хочу, чтобы все они перешли на одну страницу. Итак, я попытался использовать функцию, которая увидит данные _POST и будет различать входные данные и запускать различные функции на основе ввода.

Любая идея, что я делаю неправильно?

<h1>Add:</h1> 
    <form action="result.php" method="post"> 
    #1: <input type="text" name="a1"><br> 
    #2: <input type="text" name="a2"><br> 
    <input type="hidden" name="action" value="add"> 
    <input type="submit" name="addsubmit"> 
    </form> 
<hr /> 
<h1>Subtract:</h1> 
    <form action="result.php" method="post"> 
    #1: <input type="text" name="s1"><br> 
    #2: <input type="text" name="s2"><br> 
    <input type="hidden" name="action" value="subtract"> 
    <input type="submit" name="subsubmit"> 
    </form> 
<hr /> 
<h1>Multiply:</h1> 
    <form action="result.php" method="post"> 
    #1: <input type="text" name="m1"><br> 
    #2: <input type="text" name="m2"><br> 
    <input type="hidden" name="action" value="multiply"> 
    <input type="submit" name="multisubmit"> 
    </form> 
<hr /> 
<h1>Divide:</h1> 
    <form action="result.php" method="post"> 
    #1: <input type="text" name="d1"><br> 
    #2: <input type="text" name="d2"><br> 
    <input type="hidden" name="action" value="divide"> 
    <input type="submit" name="divsubmit"> 
    </form> 



</body> 

~~~

<?php 



$a1 = $_POST["a1"]; 
$a2 = $_POST["a2"]; 
$s1 = $_POST["s1"]; 
$s2 = $_POST["s2"]; 
$m1 = $_POST["m1"]; 
$m2 = $_POST["m2"]; 
$d1 = $_POST["d1"]; 
$d2 = $_POST["d2"]; 


function add($num1, $num2){ 
    echo $num1 + $num2; 
} 

function subtract($num1, $num2){ 
    echo $num1 - $num2; 
} 

function multiply($num1, $num2){ 
    echo $num1 * $num2; 
} 

function divide($num1, $num2){ 
    echo $num1/$num2; 
} 

function operate(){ 


    switch($_POST['submit']) { 
     case 'addsubmit': 
      add($a1, $a2); 
      break; 
     case 'subsubmit': 
      subtract($s1, $s2); 
      break; 
     case 'multisubmit': 
      multiply($m1, $m2); 
      break; 
     case 'divsubmit': 
      divide($d1, $d2); 
      break; 
    } 

} 



?> 

<div id="1"> 
     <h1>Addition:</h1> 
     Your answer is <?php echo operate(); ?><br /> 
     <hr /> 
    </div> 

    <div id="2"> 
     <h1>Subtraction:</h1> 
     Your answer is <?php echo operate(); ?><br /> 
     <hr /> 
    </div> 

    <div id="3"> 
     <h1>Multiplication:</h1> 
     Your answer is <?php echo operate(); ?><br /> 
     <hr /> 
    </div> 

    <div id="4"> 
     <h1>Division:</h1> 
     Your answer is <?php echo operate(); ?><br /> 
    </div> 

    <button> <a href="/workspaces/testgrounds/addition.php">Back to main page</a></button> 
</body> 

~~ Edit1:

First Errors || Second Errors -

+0

Что не работает? какие ошибки вы получаете? –

+0

1. Вам нужно фактически вызвать функцию 'operation()' где-то - в настоящее время загрузка файла не будет запускать какой-либо код, просто определите кучу функций. 2. Поскольку в любой момент времени будут установлены только 2 параметра POST, первые 8 строк кода будут генерировать по меньшей мере 6 неопределенных ошибок индекса - вы должны использовать 'isset' для проверки, и вы также можете поместить инициализацию переменной в пределах блок блокировки коммутатора – Steve

+0

Вы включаете $ _POST ['submit'], который не размещен в (нет элемента формы с именем «submit»). – WillardSolutions

ответ

0
<?php 

$a1 = $_POST["a1"]; 
$a2 = $_POST["a2"]; 
$s1 = $_POST["s1"]; 
$s2 = $_POST["s2"]; 
$m1 = $_POST["m1"]; 
$m2 = $_POST["m2"]; 
$d1 = $_POST["d1"]; 
$d2 = $_POST["d2"]; 


function add($num1, $num2){ 
    return $num1 + $num2; 
} 

function subtract($num1, $num2){ 
    return $num1 - $num2; 
} 

function multiply($num1, $num2){ 
    return $num1 * $num2; 
} 

function divide($num1, $num2){ 
    return $num1/$num2; 
} 

function operate() { 

    switch($_POST['action']) { 
     case 'add': 
      return add($a1, $a2); 
      break; 
     case 'subtract': 
      return subtract($s1, $s2); 
      break; 
     case 'multiply': 
      return multiply($m1, $m2); 
      break; 
     case 'divide': 
      return divide($d1, $d2); 
      break; 
    } 
} 

?> 

    <div id="1"> 
     <h1>Addition:</h1> 
     Your answer is <?php echo operate(); ?><br /> 
     <hr /> 
    </div> 

    <div id="2"> 
     <h1>Subtraction:</h1> 
     Your answer is <?php echo operate(); ?><br /> 
     <hr /> 
    </div> 

    <div id="3"> 
     <h1>Multiplication:</h1> 
     Your answer is <?php echo operate(); ?><br /> 
     <hr /> 
    </div> 

    <div id="4"> 
     <h1>Division:</h1> 
     Your answer is <?php echo operate(); ?><br /> 
    </div> 

    <button> <a href="/workspaces/testgrounds/addition.php">Back to main page</a></button> 
</body> 

Вы должны добавить Исеть() тесты для ваших назначений переменных в начале этого тоже.

+0

Действие помогло, но у меня все еще есть ошибки, поэтому я переместил переменную initializa в блок блокировки коммутатора, и он избавился от всех ошибок, но теперь он ничего не вычислит. Странно. –

+0

Если он находится внутри функции работы(), вы должны вызвать эту функцию, чтобы вычислить ее. Какие ошибки вы видите? – WillardSolutions

+0

http://prntscr.com/94cd2o Нет дальнейших ошибок, просто не вычисление в HTML –

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