2011-04-30 5 views
1

좋아, 필자는이 pythagoras-solver 종류의 것을 코딩했고, 나는 그것을 향상시킬 수있는 방법이 궁금하거나 더 효율적으로 만들 수 있을까?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 모두에서 자바 스크립트에서 유효성 검사를 수행하는 일반적인 이유를 추가 할 것이다. (또는 무엇이든)는 다음과 같습니다. 클라이언트를 확인하면 일반적으로 사용자 환경이 개선되지만 클라이언트를 서버에 제출하는 데 사용할 수 있으므로 서버를 확인해야합니다. 서버 코드 만 보안되므로 보안 검사가 서버 측에서 수행되어야합니다 (사용자 경험을 향상 시키려면 클라이언트 측에서 보안 검사를 중복 구현할 수 있지만). – jimhark