2013-09-05 49 views
1

我是新來的PHP,我在這裏是新來的,我不知道是否適合以這樣長的方式提出問題。我很抱歉,如果這不是在這裏完成的。如何在彈出窗口中顯示錯誤消息而不是移動到新頁面?

  • 我有以下用於輸入問題的代碼,它有四種選擇。
  • 在文本框中輸入4個選項,每個選項對應一個單選按鈕。
  • 單擊這4個按鈕的值將是$ correct的值
  • $ difflevel,$ agegroup和$ catId是一組單選按鈕的值。

以下是我的代碼

if(isset($_POST['submit'])) 
    { 

    extract($_POST); 
    $question=mysqli_real_escape_string($con,$question); 
    $option[0]=mysqli_real_escape_string($con,$option[0]); 
    $option[1]=mysqli_real_escape_string($con,$option[1]); 
    $option[2]=mysqli_real_escape_string($con,$option[2]); 
    $option[3]=mysqli_real_escape_string($con,$option[3]); 

    mysqli_query($con,"insert into questions(question, op1,op2,op3,op4,correct,difflevel,ageGroup,catId) values 
    ('$question','$option[0]','$option[1]','$option[2]','$option[3]',$correct,$difflevel,$ageGroup,$catId)") or die("Some error"); 

    $questionId = mysqli_insert_id($con); 

    if($_POST['catId']=="")//QUESTIONS MUST CONTAIN AT LEAST ONE CATEGORY 
     die("Please select category of the question entered."); 

    if($_POST['difflevel']=="")//DIFFICULTY LEVEL SHOULD BE SET 
     die("Please select difficulty of the question entered."); 

    if($_POST['ageGroup']=="")//AGEGROUP SHOULD BE SET 
     die("Please select age group of the question entered."); 

    if($_POST['correct']=="")//CORRECT ANSWER SHOULD BE SET 
     die("Please select correct answer for the question entered."); 
    } 

由於所有字段是強制性的,我需要的,如果不是所有的填充(或點擊)錯誤報告。現在,當錯誤發生時,它會被帶到一個新頁面,因此我輸入的所有內容都會丟失,我必須再次輸入它們。 因此,不是轉到下一頁,是否可以顯示帶有錯誤的彈出窗口,以便我可以更正錯誤並從停止的地方繼續? 任何幫助是如此讚賞。提前致謝。

+0

請原諒我的赦免。你不是PHP的新手,而是UGLY古老的PHP。儘管當代PHP還沒有見過。 –

+0

你能告訴我如何重寫當代PHP中的代碼嗎? – Anagh

+0

你可以從這裏開始:http://www.yiiframework.com/doc/guide/1.1/en/quickstart.first-app –

回答

1

如果允許用戶通過單擊提交按鈕來發布表單,那麼該頁面將重定向到表單標記的操作參數。然後,您將丟失表格上的所有輸入數據。有解決方法來克服這種使用這種方法,但它有點古怪。

但是,不使用標準的HTML表單元素髮布表單,而是使用AJAX發佈表單,那麼頁面將不會重定向/刷新,並且所有以前輸入的表單數據將被保留。然後解析響應文本並相應地輸入相應的錯誤消息。

下面是一個例子:

<form> 
    <input type="text" id="someText" value="" /><br /> 
    <button id="submit_button">Submit</button> 
</form> 

<script type="text/javascript"> 

$(function(){ 
    $("#submit_button").click(function(){ 
     var someText = $("#someText").val(); 
     $.post("/handle_ajax.php",{someText:someText},function(resp){ 
      if(resp !== "OK"){ 
       alert("ERROR OCCURED "+resp) 
      } 
     }); 
    }); 
}); 

</script> 

這裏很簡單的PHP的ajax處理程序現在

<?php 

if(empty($_POST["someText"])){ 
    echo "someText field cannot be left blank"; 
}else{ 
    echo "OK"; 
} 

?> 

,如果你想成爲幻想,而不是提醒錯誤信息,把所有的錯誤訊息一個漂亮的html表單,如果一切正常,清除它們。

0

利用JavaScript的alert

<?php 
if(isset($_POST['submit'])) 
{ 

    extract($_POST); 
    $question=mysqli_real_escape_string($con,$question); 
    $option[0]=mysqli_real_escape_string($con,$option[0]); 
    $option[1]=mysqli_real_escape_string($con,$option[1]); 
    $option[2]=mysqli_real_escape_string($con,$option[2]); 
    $option[3]=mysqli_real_escape_string($con,$option[3]); 

    mysqli_query($con,"insert into questions(question, op1,op2,op3,op4,correct,difflevel,ageGroup,catId) values 
    ('$question','$option[0]','$option[1]','$option[2]','$option[3]',$correct,$difflevel,$ageGroup,$catId)") or die("Some error"); 

    $questionId = mysqli_insert_id($con); 

    if($_POST['catId']=="")//QUESTIONS MUST CONTAIN AT LEAST ONE CATEGORY 
     echo "<script>alert('Please select category of the question entered.')</script>"; 
    exit; 
     //die("Please select category of the question entered."); 

    if($_POST['difflevel']=="")//DIFFICULTY LEVEL SHOULD BE SET 
     echo "<script>alert('Please select difficulty of the question entered')</script>"; 
    exit; 

    if($_POST['ageGroup']=="")//AGEGROUP SHOULD BE SET 
     echo "<script>alert('Please select age group of the question entered.')</script>"; 
    exit; 

    if($_POST['correct']=="")//CORRECT ANSWER SHOULD BE SET 
     echo "<script>alert('Please select correct answer for the question entered.')</script>"; 
    exit; 
} 
0

您可以使用Java腳本validation.So,如果有人試圖提交表單沒有必填字段填寫,您可以彈出警告信息。 jQuery驗證庫完美地處理了這個問題。

相關問題