如何验证输入以查看它是否与数据库中的记录匹配

时间:2016-07-08 15:03:16

标签: php jquery ajax sql-server-2008 ajaxform

我正在尝试创建一个查询数据库的输入,并返回数据库中是否存在结果。我有部分工作,但只要我输入一个字母,我的盒子就会发出绿光。如果它保持红色直到它实际找到完全匹配然后变为绿色会更好。编辑:我刚刚意识到我的查询也有问题。它现在正确查询数据库。最初的问题是我的主要问题。

$(document).ready(function(){
    $("#load").keyup(function (e){
        e.preventDefault();
       ;

    searchRequest = $.ajax({
        url: 'check_load_no.php',
        data: $('#load').serialize(),
        type: 'POST',
        success: function (data) {
            $(".verify").css('box-shadow', '0px 0px 9px 2px #84f850');
            $(".error").css('display', 'none');
            $(".success").css('display', 'block');

        },
        error: function (data) {
            $(".verify").css('box-shadow', '0px 0px 9px 2px #ad0037');
            $(".success").css('display', 'none');
            $(".error").css('display', 'block');
        }

    });

    });
   });

以下是我的php

<?php include('../model/conn.php'); ?>
<?php include('../model/conn2.php') ?>

<?php
$sql = "SELECT cmt_2 FROM oeordhdr_sql WHERE cmt_2 = '{$_POST['load']}'";
$query = (odbc_exec($conn,$sql));
$row = (odbc_fetch_row($query));
if($row['cmt_2']){
    echo 'yeah';
}

HTML

  <h1>Please add the info based on your load number</h1>
        <form action="" method="post">
        <div class="card" >
            <input class="verify" id="load" type="text" name="load" placeholder="Load Number" required/>
    <span class="error" style="display: none;"><i class="fa fa-exclamation-triangle fa-lg" aria-hidden="true"> </i>I'm not finding anything</span>   
    <span class="success" style="display: none;"> <i class="fa fa-check-cube fa-lg" aria-hidden="true"> </i> Congratulations, that record exists!</span><br> 
<button  class="update_button" type="submit" name="add" value="update">Update</button></div></form>

3 个答案:

答案 0 :(得分:0)

success: function (data) {
     if(data==="yeah")
     {
        $(".verify").css('box-shadow', '0px 0px 9px 2px #84f850');
        $(".error").css('display', 'none');
        $(".success").css('display', 'block');
     }
     else
     {
        $(".verify").css('box-shadow', '0px 0px 9px 2px #ad0037');
        $(".success").css('display', 'none');
        $(".error").css('display', 'block');
     }
}


检查响应是否是您需要的,然后再添加.success类

答案 1 :(得分:0)

即使&#34;是的,也不会调用您的错误处理程序。 PHP脚本没有回显,因为服务器响应仍然是HTTP 200.因此,您的成功处理程序将始终触发(除非您的服务器/应用程序存在实际问题)。

如果要触发错误处理程序,则必须让服务器发送400或500系列HTTP响应代码(在这种情况下可能为404),以查找未找到匹配项的情况。

或者,您可以将所有逻辑放在成功处理程序中,而不是更改服务器端代码。你只需要测试&#34的价值;是的&#34;是否存在。

您还应该考虑在DOM元素上添加/删除CSS类,而不是在函数中专门指定CSS。如果需要,这将允许您稍后更改CSS,而无需更改此功能。

答案 2 :(得分:0)

决定使用php输出错误/成功消息,而不是更改css

$("#load").keyup(function (e){
        e.preventDefault();


    searchRequest = $.ajax({
        url: 'check_load_no.php',
        data: $('#load').serialize(),
        type: 'POST',
        success: function (data) {
            console.log(data);
            if(data==="yeah")
            {
                $(".validate").html(data);

            }
            else
            {
                $(".validate").html(data);


            }
        }

    });

    });

我的php

 $sql = "SELECT cmt_2 FROM oeordhdr_sql WHERE cmt_2 LIKE '{$_POST['load']}'";
    $query = odbc_exec($conn,$sql);
    $row = (odbc_fetch_row($query));
    if($row){
        echo '<span class="success" style="display: block;"> <i class="fa fa-check-cube fa-lg" aria-hidden="true"> </i> Congratulations, that record exists!</span>';

    }else{
        echo'<span class="error" style="display: block;"><i class="fa fa-exclamation-triangle fa-lg" aria-hidden="true"> </i>I\'m not finding anything</span>';
    }

我的HTML

<h1>Please add the info based on your load number</h1>
        <form action="" method="post">
        <div class="card" >
            <input class="verify" id="load" type="text" name="load" placeholder="Load Number" required/>
    <div class="validate"></div><br> 
<button  class="update_button" type="submit" name="add" value="update">Update</button></div></form>