【问题标题】:Form Verification works on 2 fields but not the 3rd field - whats breaking the validation check表单验证适用于 2 个字段,但不适用于第 3 个字段 - 是什么破坏了验证检查
【发布时间】:2020-02-10 16:01:23
【问题描述】:

我有一个我认为非常简单的检查。 注册表检查 3 个字段以确保它们尚未被占用 用户名 - 电子邮件和序列号

用户名和电子邮件工作完美,但当我尝试添加序列号检查时,它从不显示验证消息。

首先这里是来自 WORKING 用户名验证的代码:

<!--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>";
 }
 }

用户名检查再次完美,但序列号却不行。 我在这方面已经有一段时间了,但我看不出我在哪里错过了一步?

请帮忙

Example of Form Validation

【问题讨论】:

    标签: javascript sql forms validation


    【解决方案1】:

    您可以检查错误 回声$查询->错误; 或者您可以检查您的 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>";
     }
     }

      
       

    【讨论】:

    • 我尝试添加您发布的代码,但是在输入序列号时它没有返回任何值
    • 在您的 Javascript 文件中,您可以检查 serialNumber 是否正常。 console.log( $("#serialNumber").val() ) ;
    【解决方案2】:

    <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>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-21
      • 2021-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      相关资源
      最近更新 更多