2015-11-22 48 views
1

我剛剛開始學習PHP時做了一個相當蹩腳的計算器。我無法弄清楚爲什麼一切似乎都很好,除非答案不會顯示。非常基本的PHP計算器:不能計算出我做錯了什麼

這裏的HTML:

<head> 
<meta charset="utf-8"> 
<title>A (Seriously) Simple Calculator</title> 
<link rel="stylesheet" type="text/css" href="./calc_css.css"> 
</head> 
<body> 
<form method="post" attribute="post" action="calc1.php"> 

<p>First Value:<br/> 
<input type="number" id="first" name="first" step="0.0000000001"></p> 
<p>Second Value:<br/> 
<input type="number" id="second" name="second" step="0.0000000001"></p> 

<p>+<input type="radio" name="operation" id="add" value="add" checked="true"></p><br/> 
<p>-<input type="radio" name="operation" id="subtract" value="subtract"></p><br/> 
<p>X<input type="radio" name="operation" id="multiply" value="multiply"></p><br/> 
<p>/<input type="radio" name="operation" id="divide" value="divide"></p><br/> 

<p></p> 
<button type="submit" name="answer" id="answer" value="answer">Calculate</button> 
</form> 
</body> 
</html> 

這是我的PHP:

<html> 

<head> 
<meta charset="utf-8"> 
<title>Answer</title> 
</head> 

<body> 
<p>The answer is: 

<?php 
$first = floatval($_POST['first']); 
$second = floatval($_POST['second']); 

if($_POST['operation'] == 'add') { 
echo $first + $second; 
} 
else if($_POST['operation'] == 'subtract') { 
echo $first - $second; 
} 
else if($_POST['operation'] == 'multiply') { 
echo $first * $second; 
} 
else($_POST['operation'] == 'divide') { 
echo $first/$second; 
} 

?> 

</p> 
</body> 
</html> 

我不認爲這與我的輸入步驟或類型做了,我已經嘗試了所有方式(我能想到的)在我的PHP文件中。這就是說,我是一個非常綠色的初學者。任何幫助將不勝感激。

+1

你是否在服務器上託管該php文件或試圖在本地訪問它(即從'fi​​le:// URL)? PHP只能通過服務器運行。如果沒有,[更多詳細信息](http://stackoverflow.com/help/mcve)將是必需的,不僅「我的代碼無法正常工作」 - 您是否收到任何錯誤消息? –

+1

請參閱:http://meta.stackexchange.com/q/5234 – Rizier123

回答

5

問題是您的最後一個條件語句是else而不是另一個else if

else($_POST['operation'] == 'divide') { 
echo $first/$second; 
} 

有錯誤報告設置爲捕獲和顯示,將拋出你是這樣的:

Parse error: syntax error, unexpected '{' in /var/usr/you/folder/file.php on line 24

將其更改爲:

else if($_POST['operation'] == 'divide') { 
echo $first/$second; 
} 

添加error reporting到文件的頂部(s)這將有助於發現錯誤。

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// rest of your code 

旁註:顯示錯誤應該只在分期完成,並且從不生產。

它假設else($_POST['operation'] == 'divide')總是比較「分」,而不是else { $var=x; }作爲一個「指定這個變量‘X’,又扔你一個錯誤

從手冊:http://php.net/manual/en/control-structures.elseif.php

<?php 
if ($a > $b) { 
    echo "a is bigger than b"; 
} elseif ($a == $b) { 
    echo "a is equal to b"; 
} else { 
    echo "a is smaller than b"; 
} 
?> 

其他參考資料:

+0

謝謝Fred -ii-!這非常有幫助。我能夠解決你提到的錯誤,並找出我無法運行PHP腳本,因爲我把我的項目放在... wamp/www而不是wamp/WinWampUSE/www。 –

+0

@AnthonyJosephAllgeierIII不客氣安東尼,很高興得到了幫助,*歡呼聲* –

3

有在你的代碼中的錯誤,看看你的最後的「其他人」語句在PHP代碼。

<?php 
    if($_POST['operation'] == 'add') { 
     echo $first + $second; 
    } 
    else if($_POST['operation'] == 'subtract') { 
     echo $first - $second; 
    } 
    else if($_POST['operation'] == 'multiply') { 
     echo $first * $second; 
    } 
    else if($_POST['operation'] == 'divide') { 
     if($second == 0){ 
      echo 'Cannot divide by 0'; 
     } else { 
      echo $first/$second; 
     } 
    } else { 
     echo 'unknown operator'; 
    } 
?> 

也請記住,你不能除以0,因爲它會在PHP中創建一個警告消息。

因此,最好在編寫和測試「Fred -ii-」答案中顯示的代碼時啓用error_reporting。

+0

除以0的優點。 –

+0

雖然我不確定致命錯誤,但我使用PHP 7,它只是顯示一個警告。但我記得當時情況並非如此。 – Xorifelse

+1

我仍然在5.4上,它確實會拋出警告:在x行的/file.php中用零除。儘管如此,我從來沒有用過任何東西。 –