2013-09-05 2 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 ANCIENT 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 Script validation.So, если кто-то пытается отправить форму без заполнения обязательных полей, вы можете совать предупреждающее сообщение. Библиотека проверки jQuery отлично справляется с этим.

Смежные вопросы