【问题标题】:How to check the text box value that exist in the database after submit the form提交表单后如何检查数据库中存在的文本框值
【发布时间】:2017-06-08 06:01:09
【问题描述】:

我在一个表单中有这个 HTML 代码,我想检查这个用户输入的值是否已经存在于数据库中。

<tr height="50">
    <td valign="top"><label for="CINumber"><span style="color:red">*</span>CI Name:</label></td>
     <td><input type="text" id="CINumber" name="CINumber"></td>                     
</tr>

我有这个用于提交表单值的 ``JavaScript 函数:

function submit(){
    var cNumber = document.getElementById("CINumber").value;
     //many form value within this function but I showed this value only cause this value need to check when click submit button.
    $.ajax({
        url: 'PHPMethodCalls_AL.php',
        type: 'post',
        data: {'action':'AddNewCI', 'cNumber' : cNumber },
        success: function(data,status) {
            //alert(data);                                                              
            if(status == "success"){                            
                alert("CI Name can be assigned");
                alert("Successfully Register New CI Record.");                              
            } else {
                alert("CI Name is already present!");
                return ;
            }   
        },                              
        error: function(xhr, desc, err) {
            console.log(xhr);
            console.log("Details: " + desc + "\nError:" + err);
        }
    });                                                                         
}

我在 'PHPMethodCalls_AL.php' url 中调用 PHPMethod 调用..

if($_POST['action'] == "AddNewCI"){
    $cNumber = $_POST['cNumber'];
    $newCI = AddNewCI($cNumber);
    echo json_encode($newCI );
}

之后我调用PHP函数连接数据库。

function AddNewCI($cNumber){
    global $DB;
    if(!empty($cNumber)){   
        $namequery="SELECT Name from Item where Name='$cNumber'";
        $namecheck=mysql_query($namequery);
        $row=mysql_num_rows($namecheck);

        if($row==0){                     
            echo "success";
            $strSql1 ="INSERT INTO Item (Name)VALUES('$cNumber')";
            $res1 = $DB->Query($strSql1, false, $err_mess.__LINE__);                    
        }
        else {  
            echo "!success";
        }
    }                                                       
}

点击提交后,我只得到(状态==“成功”)然后弹出2个警告框,即使数据已经存在于数据库中。但是,重复值不会保存在数据库中,因为我为此字段设置了 UNIQUE。如果数据存在,请建议我如何获得正确的警报框,如果不存在则显示“已经存在”“显示成功警报框”...

【问题讨论】:

  • echo "success"; 更改为return "success";echo "!success"; 更改为return "!success";
  • @B.Desai .. 嗯.. 甚至更改为 return 也不起作用 :(
  • 不要使用 mysql_query ,不推荐使用 mysqli_query 或 PDO。
  • 更改您的 ajax 成功条件 'if(data == "success"){ }' 因为您没有在数据中分配/提供状态变量。
  • @GaurangSondagar 当我更改时,'if(data == "success"),它只显示 else 条件,即使数据库中不存在数据但数据保存到数据库中但显示错误警告框。

标签: javascript php ajax database


【解决方案1】:

更改以下代码...

                            url: 'PHPMethodCalls_AL.php',
                            type: 'post',
                            data: {'action':'AddNewCI', 'cNumber' : cNumber },

                            success: function(data) {

                            if(data == "success"){                            
                                alert("CI Name can be assigned");
                                alert("Successfully Register New CI Record.");                              
                            }

不需要使用 json_encode ,你可以直接回显任何你想要的值。

if($_POST['action'] == "AddNewCI"){
$cNumber = $_POST['cNumber'];
$newCI = AddNewCI($cNumber);
echo $newCI;
}

改变你的函数返回值...

function AddNewCI($cNumber){
    global $DB;

        if(!empty($cNumber)){   

            $namequery="SELECT Name from Item where Name='$cNumber'";
            $namecheck=mysql_query($namequery);
            $row=mysql_num_rows($namecheck);
        if($row==0){                     
                $strSql1 ="INSERT INTO Item (Name)VALUES('$cNumber')";
                $res1 = $DB->Query($strSql1, false, $err_mess.__LINE__); 
                return "success";                   
            }
        else
            {   
                 return "error";
            }

        }                                                       
   }

【讨论】:

  • 非常感谢!!它起作用了...当我更改 echo($newCI) 而不是使用 json_encode 时。
  • 乐于助人:)
  • 不要使用 mysql 查询,更喜欢使用 mysqli 查询 php.net/manual/en/book.mysqli.php 或 PDO php.net/manual/en/book.pdo.php。 mysql 查询现在在 php 中已弃用。
  • 感谢您的建议。 :) 它对我有很大帮助。
【解决方案2】:

在 ajax 请求中用这个改变你的成功函数:

success:fucntion(data){
  if(data=="success"){
    alert("Your success message here.");
  }else{
    alert("Alert message whatever you want.");
  }
},

【讨论】:

  • 当我更改时,'if(data == "success"),它只显示 else 条件,即使数据库中不存在数据但数据保存到数据库中但显示错误警告框.
【解决方案3】:

少用这段代码,效果很好
如果您使用 jquery 验证,这里不需要显示错误消息,您可以简单地使用“render”并渲染函数显示错误消息,就像 jquery 中需要的一样 // 当浏览器准备好时... $(函数(){ // 在#register-form 元素上设置表单验证 $("#addfrm").validate({

   // Specify the validation rules
    rules: {
      CINumber: {
            required: true,
            remote: {
            url: "PHPMethodCalls_AL.php",
            type: "post",
            data: {
              CINumber: function() {
                return $( "#CINumber" ).val();
              }
            }
          }
        }
    },

    // Specify the validation error messages
    messages: {
        CINumber: {
            required: "Please enter your CINumber",
            remote:"Entered CINumber already exists please enter another one"
       }
    },

    submitHandler: function(form) {
        form.submit();
    }
});
});
</script>

 PHPMethodCalls_AL.php
   this file return true when cinumber not exits on database and when it`s return false that means cinumber already exits on database      


<?php
   //add database configuration 
   $CINumber=$_POST['CINumber'];
   $query="SELECT * FROM `table_name` where `CINumber`=$CINumber";
   $result=mysql_query($query);
   $number_of_rows = mysql_num_rows($result);
   if($number_of_rows){
      echo "false";
   }else{
     echo "true";
   }
   die();
   ?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多