2017-05-11 60 views
0

我一直在努力學習過去一週的PHP。
我創建了一個表格,它像一個計算器一樣,將兩個值相加或相減,相乘或相除。PHP - 我想在點擊type =「reset」按鈕時將值設置爲false。我怎樣才能做到這一點?

$cal = new calculator(); 
if(isset($_POST['submit'])) 
{ 
    $result = $cal->getresult($_POST['n1'],$_POST['n2'],$_POST['op']); 
} 

if(isset($_POST['reset'])){ 
$result = false; 
} 

?> 

<form method="post"> 
<table align="center"> 
    <tr> 
     <td><b><?php echo $result; ?></b></td> 
    </tr> 
    <tr> 
     <td>Zahl 1 </td> 
     <td><input type="number" name="n1"></td> 
    </tr> 

    <tr> 
     <td>Zahl 2 </td> 
     <td><input type="number" 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="Berechnen"></td> 
    </tr> 

    <tr> 
     <td></td> 
     <td><input type="reset" name="reset" value="Reset"></td> 
    </tr> 

</table> 
</form> 

事先我定義了計算器類,但它與這個問題無關。
所以我想要做的就是當我點擊

<td><input type="reset" name="reset" value="Reset"></td> 

按鈕,我想要的變量$結果被定義爲空,我想

if(isset($_POST['reset'])){ 
$result = false; 
} 

事實上,PHP實現不應在文檔頂部顯示結果,因爲

<tr> 
     <td><b><?php echo $result; ?></b></td> 
    </tr> 

是空的嗎?

不幸的是,這並沒有發生。有誰知道如何解決這一問題?

+0

使用重置將只清除表單的輸入值,而不是您已完成的任何計算。你必須要麼。)提交表單並清除結果,如果表單爲空或2)使用JavaScript來清除結果。 –

+0

也許你可以使用ajax和get參數分配給一個按鈕或者我看到的href –

回答

0

重置按鈕不會提交您的表單,這是您的PHP運行所需要執行的操作。您可以使用可以,但是,在表單中使用多個提交按鈕並以不同的方式命名它們。試試這個:

<input type="submit" name="reset" value="Reset"> 

這將觸發表單提交,但會遇到「復位」在您的文章的數據,並隨後應觸發你的邏輯清晰的價值觀。


編輯:

一旦你的頁面處理服務器端的$result變量是死了。按照它在瀏覽器中顯示的時間,請求的那部分已經結束並且變量不存在,因此單擊「重置」按鈕並不重要。這聽起來像你想清除表單並清除結果顯示。在這種情況下,繼續使用重置按鈕。

然後添加一些JavaScript來清除結果。對於工作,你需要添加一個ID或類,元件保持它:

<tr> 
    <td> 
     <b id="result"> 
      <?php echo $result; ?> 
     </b> 
    </td> 
</tr> 

然後右鍵元素本身添加一個單擊處理程序,無論是在JS文件,在<script>標籤,或:

<input type="reset" name="reset" value="Reset" onClick="document.getElementById('result').innerHTML='0';"> 

這會將其設置爲「0」。

+0

!我實際上沒有得到可以保存爲「$ _POST ['reset']」的值,對吧?點擊重置按鈕時有沒有辦法獲得價值? – Denny

+0

您點擊的按鈕將發送到您的'$ _POST'數據中。如果您想將它們帶到下一個請求,您還將獲得表單值。嘗試做一個'var_dump($ _ POST);'並且看看你得到了什麼。 –

+0

我的意思是我想讓按鈕充當經典重置按鈕並執行「$ result = false;」行動。有沒有辦法通過只有一個可見的按鈕來實現? – Denny

相關問題