昨天下班前寫的,剛好拿來當作範例,如有更好的寫法,可以在此討論~~!
裡面有用到的東西
表單傳送
PHP變數
PHP自訂函數
PHP- if switch isset
<?php
/*
蒼鴻製造(Hung)
*/
//自訂函數
function calculate($class,$numA,$numB)
{
switch ($class)
{
case 1:
$end = $numA + $numB;
break;
case 2:
$end = $numA - $numB;
break;
case 3:
$end = $numA * $numB;
break;
default:
$end = $numA / $numB;
}
return $end;
}
//判斷$_POST是否有東西 如有才執行
if(isset($_POST['numA']) and isset($_POST['numB']) and isset($_POST['class']))
{
$numA = $_POST['numA'];
$numB = $_POST['numB'];
$class = $_POST['class'];
$end = calculate($class,$numA,$numB);
}
?>
<title>計算機</title>
//action沒設定網址代表本頁
<form id="form1" name="form1" method="post" action="">
<p>請輸入第一個數字:
<label>
<input type="text" name="numA" id="numA" />
</label>
</p>
<p>請輸入第二個數字:
<label>
<input type="text" name="numB" id="numB" />
</label>
</p>
<p>請選擇運算符號:
<label>
<select name="class" id="class">
<option value="1">+</option>
<option value="2">-</option>
<option value="3">*</option>
<option value="4">/</option>
</select>
</label>
</p>
<p>
<label>
<input type="submit" value="運算">
</label>
<label>
<input type="reset" value="重新填寫">
</label>
</p>
<p>結果:
<label>
<input type="text" name="textfield" id="textfield" value="<?php echo $end;?>"/>
</label>
</p>
</form>
我會把 25 行改為:
<pre class="c" name="code">
if (is_numeric($_POST['numA']) &&
is_numeric($_POST['numB']) &&
in_array($_POST['class'], array('1','2','3','4')))
不但要判斷有值,還要做內容檢查,這樣丟給 calculate 才有意義。
另外在 32 行再加上
<pre class="c" name="code">
else
$end = '輸入有誤,無法計算';
這樣就可以避免 user 輸入一些怪資料,造成無厘頭的答案。我們是經常受到 QA 這樣的《關照》的。
感謝大大指導,寫太快沒有注意到細節~~!