2016-07-08 7 views
0

Ich versuche, eine Eingabe zu erstellen, die die Datenbank abfragt und zurückgibt, ob ein Ergebnis in der Datenbank vorhanden ist. Ich habe es teilweise funktioniert, aber meine Box leuchtet grün, wenn ich nur einen Buchstaben eintippe. Es wäre besser, wenn es rot bleibt, bis es eine exakte Übereinstimmung gefunden hat und dann grün wird. Edit: Ich habe gerade gemerkt, dass auch etwas mit meiner Anfrage nicht stimmt. Es fragt die Datenbank jetzt korrekt ab. Das ursprüngliche Problem ist mein Hauptproblem.So überprüfen Sie eine Eingabe, um festzustellen, ob sie mit einem Datensatz in der Datenbank übereinstimmt

$(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'); 
     } 

    }); 

    }); 
    }); 

Unten ist mein 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> 
+0

Vielleicht nur die Abfrage ausführen, wenn zumindest die Ausgabe 2-3 Zeichen wurden eingegeben? – pmahomme

+0

Hinweis: Verwenden Sie 'odbc_prepare()' vor 'odbc_exec()' aus Sicherheitsgründen - lesen Sie - http://php.net/manual/en/function.odbc-prepare.php –

+0

Ich war unter der Impression odbc_exec() vorbereitet und führt aus? http: //php.net/manual/en/function.odbc-exec.php Es gibt auch eine odbc_execute, die Sie zuerst vorbereiten müssen. – Ryan

Antwort

0

Beschlossen, die Fehler/Erfolgsmeldung mit PHP statt Ändern 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); 


      } 
     } 

    }); 

    }); 

Mein 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>'; 
    } 

Mein 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> 
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'); 
    } 
} 


überprüfen, ob Antwort ist, was Sie brauchen, und nur dann .success Klasse hinzufügen

+0

Das gibt mir das gleiche Ergebnis. Edit: Eigentlich macht das nichts. nein leuchtend rot oder grün – Ryan

+0

versuche ich jetzt editierte antwort –

+0

ich dachte einfach klasse .error du machst für handler fehler, aber jetzt denke ich es für die antwort? Wenn es solche Daten in db nicht gibt, dann fügen Sie class .error hinzu? –

0

Ihr Fehlerhandler wird nicht aufgerufen, auch wenn "yeah" nicht vom PHP-Skript ausgegeben wird, da die Serverantwort immer noch HTTP 200 ist. Aus diesem Grund wird Ihr Erfolgshandler immer ausgelöst (es sei denn, es gibt ein tatsächliches Problem mit Ihrem Server/Ihrer Anwendung).

Wenn Sie den Fehlerhandler auslösen möchten, müsste der Server einen HTTP-Antwortcode der Serie 400 oder 500 (wahrscheinlich 404 in diesem Fall) für den Fall senden, dass keine Übereinstimmung gefunden wird.

Alternativ könnten Sie einfach Ihre gesamte Logik in den Success-Handler einfügen und Ihren serverseitigen Code überhaupt nicht ändern. Du müsstest nur nach dem Wert von "Ja" suchen, der vorhanden ist oder nicht.

Sie sollten auch in Erwägung ziehen, CSS-Klassen in Ihren DOM-Elementen hinzuzufügen/zu entfernen, anstatt das CSS in Ihrer Funktion speziell anzugeben. Auf diese Weise können Sie das CSS bei Bedarf später ändern, ohne diese Funktion ändern zu müssen.

+0

Ich habe auch versucht, die Logik in den Success-Handler zu setzen. Es bleibt jetzt rot und wird niemals grün. Ich habe die Datenbank überprüft und hinter der Nummer befinden sich weiße Leerzeichen.3259267999. Also versuchte ich es mit weißen Flächen, immer noch kein Glück. – Ryan

+0

Ich änderte das "=" in meiner Abfrage zu LIKE, jetzt gibt es "yeah" zurück, wenn die volle Zahl eingegeben wird, aber grün keine anderen Ideen? – Ryan

Verwandte Themen