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

How to validate an input to see if it matches a record in the database

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

$(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>
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 class

即使 "yeah" 没有被 PHP 脚本回显,您的错误处理程序也不会被调用,因为服务器响应仍然是 HTTP 200。因此,您的成功处理程序将始终触发器(当然除非你的 server/application 有实际问题)。

如果你想触发错误处理程序,你必须让服务器发送一个 400 或 500 系列的 HTTP 响应代码(在这种情况下可能是 404),以防找不到匹配项。

或者,您可以将所有逻辑放在成功处理程序中,根本不更改服务器端代码。您只需要测试 "yeah" 的值是否存在。

您还应该在 DOM 元素上考虑 adding/removing CSS 类,而不是在函数中专门指定 CSS。这将允许您稍后在需要时更改 CSS,而不必更改此功能。

决定使用 php 输出 error/success 消息而不是更改 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>