Проверка формы работает на 2 полях, но не на 3-м, что нарушает проверку проверки - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть довольно прямая проверка. Регистрационная форма проверяет 3 поля, чтобы убедиться, что они еще не заняли имя пользователя - электронная почта и серийный номер

Имя пользователя и электронная почта работают отлично, но когда я пытаюсь добавить проверку серийного номера, она никогда не показывает сообщение проверки.

поэтому сначала приведем код проверки работающего имени пользователя:

<!--Javascript for check username availability-->
<script>
function checkUsernameAvailability() {
$("#loaderIcon").show();
jQuery.ajax({
url: "check_availability.php",
data:'username='+$("#username").val(),
type: "POST",
success:function(data){
$("#username-availability-status").html(data);
$("#loaderIcon").hide();
},
error:function (){
}
});
}
</script>

, а вот код, который я вставил для новой проверки серийных номеров:

 <!--Javascript for check serial availability-->
 <script>
 function checkSerialAvailability() {
 $("#loaderIcon").show();
 jQuery.ajax({
 url: "check_availability.php",
 data:'serialNumber='+$("#serialNumber").val(),
 type: "POST",
 success:function(data){
 $("#serialNumber-availability-status").html(data);
 $("#loaderIcon").hide();
 },
 error:function (){
 }
 });
 }
 </script>

и вот check_availability. php код:

 // Code for checking email availabilty
 if(!empty($_POST["email"])) {
 $email= $_POST["email"];
 $sql ="SELECT UserEmail FROM  userdata WHERE UserEmail=:email";
 $query= $dbh -> prepare($sql);
 $query-> bindParam(':email', $email, PDO::PARAM_STR);
 $query-> execute();
 $results = $query -> fetchAll(PDO::FETCH_OBJ);
 if($query -> rowCount() > 0)
 {
 echo "<span style='color:red'>Email-id already exists.</span>";
 } else{    
 echo "<span style='color:green'>Email-id available for Registration.</span>";
 }
 }

 // Code for checking email availabilty
 if(!empty($_POST["serialNumber"])) {
 $serial= $_POST["serialNumber"];
 $sql ="SELECT serialNumber FROM  userdata WHERE serialNumber=:userial";
 $query= $dbh -> prepare($sql);
 $query-> bindParam(':userial', $serial, PDO::PARAM_STR);
 $query-> execute();
 $results = $query -> fetchAll(PDO::FETCH_OBJ);
 if($query -> rowCount() > 0)
 {
 echo "<span style='color:red'>Email-id already exists.</span>";
 } else{    
 echo "<span style='color:green'>Email-id available for Registration.</span>";
 }
 }

Опять проверка имени пользователя работает отлично, но серийный номер - нет. Я занимаюсь этим уже некоторое время и не вижу, где пропускаю шаг?

Пожалуйста, помогите

Пример проверки формы

Ответы [ 2 ]

0 голосов
/ 10 февраля 2020

<script>
 function checkSerialAvailability() {
 $("#loaderIcon").show();
 
    
      let serialNumber= $("#serialNumber").val();



      var form_data = {
        serialNumber : serialNumber 
 

      };
      
      
 jQuery.ajax({
 url: "check_availability.php",
   data:form_data,
 type: "POST",
 success:function(data){
 $("#serialNumber-availability-status").html(data);
 $("#loaderIcon").hide();
 },
 error:function (){
 }
 });
 }
 </script>
0 голосов
/ 10 февраля 2020

вы можете проверить на наличие ошибки echo $ query-> error; или вы можете проверить правильность вашей фразы SQL.

// Code for checking email availabilty
 if(!empty($_POST["serialNumber"])) {
 $serial= $_POST["serialNumber"];

echo "this is serail coming : " . $serial ; 

 $sql ="SELECT serialNumber FROM  userdata WHERE serialNumber=:userial";

echo($sql);

 $query= $dbh -> prepare($sql);
 $query-> bindParam(':userial', $serial, PDO::PARAM_STR);
 $query-> execute();
 $results = $query -> fetchAll(PDO::FETCH_OBJ);

 echo $query->error;

 if($query -> rowCount() > 0)
 {
 echo "<span style='color:red'>Email-id already exists.</span>";
 } else{    
 echo "<span style='color:green'>Email-id available for Registration.</span>";
 }
 }

  
   
...