我是一名PHP新手,我嘗試在PHP(HTML)中設置計算器。程序計算器使用PHP進行計算和HTML輸入表格
問題:
我想讓php腳本調用自己來處理輸入值。 我的目標是避免php會話緩存值。具體來說,我有兩個不同的字段 - 一個是隻讀的輸出字段和一個可以輸入數字值的輸入字段。除此之外,還有5個不同的按鈕可用於計算輸入字段中的加法,減法,乘法,除法和賦值。 我只能像下面的例子一樣解決會話變量的問題。我使用自定義的會話,我嘗試用普通的PHP變量替換,並且我想在每次按下其中一個操作按鈕時更新它們。另外,應該保存輸入值以及輸出,以便能夠再次使用相同的值,而不需要將其重新輸入到表單中。
基本上,我想通過php變量(如「$ output」)替換所有會話變量,如「$ _SESSION ['output']」。我已經嘗試過的所有內容都無法正常工作,因爲每次回憶腳本時(或通過自行調用),值都會被覆蓋。
<?php session_start();
// Session Timeout:
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 60)) {
// last request was more than 1 minute ago
session_unset(); // unset $_SESSION variable for the run-time
session_destroy(); // destroy session data in storage
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP Calculator</title>
<style type="text/css">
#add {
color:black;
background-color:#F55;
}
#subtract {
color:black;
background-color:#55f;
}
#multiply {
color:black;
background-color:#5f5;
}
#divide {
color:black;
background-color:#ff5;
}
#exp {
color:black;
background-color:#fa2;
}
#equal {
color: black;
background-color:#ccc;
}
.res {
color: black;
font-style: italic;
background-color:#eee;
border: none;
}
</style>
</head>
<body>
<?php
if (is_null($_SESSION['output'])){
$_SESSION['output'] = "0.0";
}
// Operations to execute via form.
$_SESSION['input'] = $_POST['input'];
if(isset($_REQUEST['add'])){
$_SESSION['output'] += $_POST['input'];
} else if (isset($_REQUEST['subtract'])) {
$_SESSION['output'] -= $_POST['input'];
} else if (isset($_REQUEST['multiply'])) {
$_SESSION['output'] *= $_POST['input'];
} else if (isset($_REQUEST['divide'])) {
if($_POST['input'] == 0) {
$_SESSION['output'] = $_POST['input'];
} else {
$_SESSION['output'] /= $_POST['input'];
}
} else if (isset($_REQUEST['exp'])) {
$_SESSION['output'] = pow($_SESSION['output'], $_POST['input']);
} else if (isset($_REQUEST['equal'])) {
$_SESSION['output'] = $_POST['input'];
} else {
$_SESSION['input'] = 0.0;
}
?>
<form name="calculator" action="index.php" method="post">
<input class="res" type="text" readonly="readonly" size="23px" value="Result:" />
<input class="res" type="text" readonly="readonly" size="20px" value="Input:" />
<input class="res" type="text" readonly="readonly" size="10px" value="Operations:" /><br>
<input name="output" type="text" readonly="readonly" value="<?php print ($_SESSION['output'])? >"/>
<input name="input" type="text" onfocus="this.value=''" value="<?php print ($_SESSION['input'])? >" />
<input id="add" name="add" type="submit" value="+" />
<input id="subtract" name="subtract" type="submit" value="-" />
<input id="multiply" name="multiply" type="submit" value="*" />
<input id="divide" name="divide" type="submit" value="/" />
<input id="exp" name="exp" type="submit" value="^" />
<input id="equal" name="equal" type="submit" value="=" />
</form>
</center>
</body>
</html>
什麼是最簡單的方法來解決這個問題?
什麼是 「每次」。用F5鍵重新加載頁面? – alu 2014-10-31 00:48:36
爲什麼不使用$ _POST變量從窗體中獲取值,處理它們然後輸出結果? – Chausser 2014-10-31 00:52:13
另一個問題.. 是否有一種方法,以便輸出字段中的0.0真的是「0.0」(逗號)而不是「0」?我可以用%f強制它,但是當我這樣做的時候,如果我使用除法操作,我不能獲得更高的精度。 – byebb 2014-10-31 04:30:03