2012-02-25 133 views
0

我正在尝试构建测验尝试捕获并打印到屏幕

这是我正在使用的try catch的示例。我尝试创建的主要内容是一个在线测验,当点击“提交”按钮时,我想要结果打印到屏幕上。

try catch有效,但它现在毫无意义,因为它不需要用户交互。结果是硬编码的。

这是我的html和try catch的例子,我到目前为止。

我的问题是如何让这种情况发生?

   <p>Which Basketball team is known as the Hoosiers 

        <select> 
         <option value="">--Select--</option> 
         <option value="IU">IU</option> 
         <option value="Kentucky">Kentucky</option> 
         <option value="Ohio State">Ohio State</option> 
         <option value="Connecticut">Conneticut</option> 
        </select> 

       </p> 
       </br> 
       <input type="submit" id="submit" name="submit" value="submit"/> 
       </form> 

           <?php 
     $quiz = 'IU'; 

     try { 

     //The answer is correct 

     if ($quiz == 'IU') { 
      echo 'Well Done!!!.'; 
       }else{ 
        throw new Exception ('Not even close.'); 
     } 

     //That is incorrect 

       }catch (exception $wrg) { 
      echo 'Error: ' .$wrg->getMessage(); 

     } 

     ?> 
+0

尝试catch是为了捕获(并以某种方式处理)PHP编程错误,而不是简单的用户输入。你使用if/else好多了...... – BenOfTheNorth 2012-02-25 19:11:12

+0

@ BenGriffiths:例外是**不是**,用于处理错误 – 2012-02-25 19:11:56

+0

为什么要使它变得如此复杂?简单的条件可以使它工作。 – 2012-02-25 19:12:48

回答

1

我想你问的问题是,你如何从测验的结果看。你可以通过全局的$ _POST变量来完成这个任务,你需要命名你的选择,尽管如此<select name="answer">然后你可以通过$ _POST ['answer']来获取选择值。然后你可以比较它,你不应该在这里使用一个带有try-catch块的throw异常,它并不是真正用于程序逻辑的。相反,在这种情况下,你应该尝试一个简单的例子,例如

if(array_key_exists('answer', $_POST){ 
    if ($_POST['answer'] == 'IU') { 
     echo 'Well Done!!!.'; 
    } else { 
     echo 'Not even close.'; 
    } 
} 
+0

原来是一场火灾...... – 2012-02-25 20:04:31