【问题标题】:How to get JQuery plugin Validate to check for duplicate values in DB如何获取 JQuery 插件验证以检查数据库中的重复值
【发布时间】:2020-10-15 05:55:22
【问题描述】:

如标题所述。我正在使用 JQuery 和 Validate 插件来验证表单中的用户输入。

我正在尝试检查表中的重复值。

为此,我使用以下代码:

$().ready(function(){
    //alert('JQuery Functioning');
    $("#cat_name").change(function()
    {
        var cat_name = $("#cat_name").val();
        $.ajax({
            type:"POST",
            url:"ws/cat_duplicate.php",
            data:"cat_name="+cat_name,
            cache: false,
            success: function(html)
            {
                //alert(html);
                if(html == 1)
                {
                    $("#duplicate").html("<br/>Duplicate category Found. Please, Enter Unique Category Name");
                    $("#add_rec").attr("disabled",true);
                }
                else
                {
                    $("#duplicate").html("");
                    $("#add_rec").attr("disabled",false);
                }
            }
        }); //$.ajax({
    }); //$("#cat_name").change(function()
    
    $("#frmAddCategory").validate({
        rules: {
            cat_name: "required"
        },  //rules: {
        messages: {
            cat_name: "<br />Please provide Category Name here"
        }   //messages: {
    }); //$("#frmAddCategory").validate
});

这是 HTML 部分:

<h2>Category Edit</h2>
<form id="frmAddCategory" name="frmAddCategory" method="post" action="">
  <table width="25%" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
      <td>ID</td>
      <td>Auto Generated</td>
    </tr>
    <tr>
      <td>Category Name</td>
      <td><input name="cat_name" type="text" id="cat_name" value="" maxlength="60" /><span id="duplicate"></span></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr align="center" valign="middle">
      <td colspan="2"><input type="submit" name="add_rec" id="add_rec" value="Add" />
      &nbsp;&nbsp;&nbsp;<a href="cat_list.php">Cancel</a></td>
    </tr>
  </table>
</form>

我调用的 PHP 代码是:

<?php
if(isset($_POST['cat_name']))
{
require_once('../conn/blog.php');

mysqli_select_db($blog, $database_blog);
$cat_name = $_POST['cat_name'];
$query = "SELECT cat_name FROM category WHERE cat_name = '$cat_name'";

$query_retrived = mysqli_query($blog, $query) or die("Error:".mysqli_error($blog));
$rows = mysqli_fetch_assoc($query_retrived);
$result = mysqli_num_rows($query_retrived);

if ($result>0)
{
    echo '1';
}
else
{
    echo '0';
}
mysqli_free_result($query_retrived);
}
?>

但在这段代码中,我必须启用或禁用提交按钮。而不是我希望验证插件来处理重复值的检查。

我们怎样才能做到这一点?

TIA

【问题讨论】:

  • 你试过 jquery validate remote 方法来达到同样的效果吗?
  • 对不起,我不知道远程方法。但我会查一下。感谢您的提示。
  • 在代码中使用die(mysqli_error($conn)); 是一个非常糟糕的主意,因为它可能会泄露敏感信息。更多解释见这篇文章:mysqli or die, does it have to die?

标签: jquery ajax jquery-validate


【解决方案1】:

您可以尝试“远程”方法来检查数据库中是否存在相同的类别

$( "#frmAddCategory" ).validate({
  
  rules: {
    cat_name: {
      required: true,
      remote: {
        url:"ws/cat_duplicate.php",
        type: "post",
        async: false,
        data: {
          cat_name: function() {
            return $( "#cat_name" ).val();
          }
        }
      }
    }
  },
  messages: {
            cat_name: { 
                            required:"Please provide Category Name here",
                            remote:"This Category alredy exist"
                       },
        } 
  
});

在 PHP 代码中,我可能必须返回字符串 'true' 或 'false' 之类的

<?php
if(isset($_POST['cat_name']))
{
require_once('../conn/blog.php');

mysqli_select_db($blog, $database_blog);
$cat_name = $_POST['cat_name'];
$query = "SELECT cat_name FROM category WHERE cat_name = '$cat_name'";

$query_retrived = mysqli_query($blog, $query) or die("Error:".mysqli_error($blog));
$rows = mysqli_fetch_assoc($query_retrived);
$result = mysqli_num_rows($query_retrived);

if ($result>0)
{
    echo 'true';
}
else
{
    echo 'false';
}
mysqli_free_result($query_retrived);
}
?>

【讨论】:

  • 在代码中使用die(mysqli_error($conn)); 是一个非常糟糕的主意,因为它可能会泄露敏感信息。更多解释见这篇文章:mysqli or die, does it have to die?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-23
  • 2020-02-25
  • 1970-01-01
  • 1970-01-01
  • 2018-12-11
  • 2012-06-11
  • 1970-01-01
相关资源
最近更新 更多