2011-04-30 14 views
1

私はこのピタゴラスソルバーのようなものをコード化しました。私はそれを改善したり、より効率的にする方法を考えていましたか?PHP数学Pythagoras

<?php 
    $sides = array('1' => 'Hypotenuse', 
     '2' => 'Adjacent', 
     '3' => 'Opposite'); 

    function createSideDropdown($name) { 
     global $sides; 
     $option = "<select name='".$name."'>"; 
      if(!empty($sides)) { 
       foreach($sides as $id => $sideDesc) { 
        $option .= "<option value='".$id."'>".$sideDesc."</option>"; 
       } 
      } else { 
       die("Error fetching sides!"); 
      } 
     $option .= "</select>"; 
     echo $option; 
    } 

    try { 
     if(!empty($_POST['submit'])) { 
      if(empty($_POST['val1']) || empty($_POST['val2'])) { 
       throw new Exception("Please enter an integer in both boxes."); 
      } 
      if(!is_numeric($_POST['val1']) || !is_numeric($_POST['val2'])) { 
       throw new Exception("One of the numbers you entered is not a valid integer."); 
      } 

      $val1 = $_POST['val1']; 
      $val2 = $_POST['val2']; 
      $val1numtype = $_POST['val1type']; 
      $val2numtype = $_POST['val2type']; 
      $val1nametype = $sides[$val1numtype]; 
      $val2nametype = $sides[$val2numtype]; 

       if($val1numtype == $val2numtype) { 
        throw new Exception("The two sides of the triangle must be different"); 
       } 

       if($val1nametype == "Hypotenuse" || $val2nametype == "hypotenuse") { 
        // work out a small side 
        $bignum = max($val1, $val2); 
        $smallnum = min($val1, $val2); 
        $sqTotal = ($bignum * $bignum) - ($smallnum * $smallnum); 
        $total = sqrt($sqTotal); 
        echo $bignum."&sup2; - ".$smallnum."&sup2; = ".$sqTotal."<br /> 
        &radic;".$sqTotal." = ".$total.$_POST['mes']; 
       } else { 
        // work out the hypotenuse 
        $sq1 = $val1 * $val1; 
        $sq2 = $val2 * $val2; 
        $sqTotal = $sq1 + $sq2; 
        $total = sqrt($sqTotal); 
        echo $val1."&sup2; + ".$val2."&sup2; = ".$sqTotal."<br /> 
        &radic;".$sqTotal." = ".$total.$_POST['mes']; 
       }  
      echo "<br /><br />"; // Seperate the working out from the input 
     } 
    } catch(Exception $e) { 
     echo $e->getMessage()."<br/><br/>"; 
    } 


?> 
<form method='POST' action='index.php'> 
Value 1: <input type='text' name='val1' /> 
<?php createSideDropdown("val1type"); ?> 
<br /><br /> 

Value 2: <input type='text' name='val2' /> 
<?php createSideDropdown("val2type"); ?> 
<br /> 
<select name="mes"> 
<option name="mm">mm</option> 
<option name="cm">cm</option> 
<option name="m">m</option> 
<option name="cm">km</option> 
</select> 
<br /> 

<input type="submit" name="submit" /> 
</form> 
?> 

答えて

1

さて、あなたは確かに行うことができます一つのことは、次のとおりです。自分自身で独自のやPHPの

HTML - それを分けます。そして、残りの部分を見ていきます。

JavaScriptを使用して例外を実行することもできます。つまり、JavaScriptを使用してテキストフィールドを解析し、JavaScriptでエラーを書き込むことができます。常にフォームを提出するよりも。 - PHPのフィールドも解析する必要があります。

すると、そこからクラスを作成し、グローバルを使用しないでください、このような

/** 
* This method does bla 
* @param Int a 
*/ 

としての適切な文書を作成 - クラス属性で行うことができます。

+0

ありがとうございました。 コメントの基準に関するリソースはありますか?私は@paramを見たことがありますが、それを調べたことはありませんでした。 – Joshwaa

+0

@Joshwaaこれを見てください:http://en.wikipedia.org/wiki/PHPDoc#Tags – Richard

+0

これは初心者の質問ですので、クライアントとPHPの両方のJavaScriptで有効性チェックを実行する通常の理由を追加しますクライアント上でチェックすると、通常はユーザーエクスペリエンスは向上しますが、クライアントをサーバーに送信するためにサーバーが使用される可能性があるため、サーバーを確認する必要があります。サーバーコードのみがセキュリティで保護されているため、サーバー側でセキュリティチェックを行う必要があります(ただし、ユーザーエクスペリエンスが向上する場合は、セキュリティチェックを重複して実装することができます)。 – jimhark