iT邦幫忙

5

PHP創世錄(計算機範例)

昨天下班前寫的,剛好拿來當作範例,如有更好的寫法,可以在此討論~~!
裡面有用到的東西
表單傳送
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>

2 則留言

0
ted99tw
iT邦高手 1 級 ‧ 2013-04-24 09:13:36

一張紙上寫了一砣程式碼...阿是要大家一起debug嗎...汗

測試過可食用 汗
還是我加點註解好了

0
wiseguy
iT邦超人 1 級 ‧ 2013-04-24 17:42:44

我會把 25 行改為:

&lt;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 這樣的《關照》的。

感謝大大指導,寫太快沒有注意到細節~~!汗

我要留言

立即登入留言