2016-04-18 11 views
1

Ich versuche, eine Nummer aus einer MySQL-Zeile zu bekommen und dann an Ajax auszugeben. Die Zahl kann keine Zeichenkette sein, weil ich sie in Ajax multiplizieren werde. Das habe ich bisher. Ich bin mir nicht sicher, was ich von hier aus machen soll.Wie bekomme ich einen einzelnen mysql-Wert und gebe ihn in einen Ajax-Aufruf aus?

Ajax:

$(document).ready(function() 
{ 
    $("#btnCalc").click(function() 
    { 
     var user  = $("#txtUser").val(); 
     var amount = $("#txtAmount").val(); 
     var category = $("txtCat").val(); 
     var number = $("txtNum").val(); 
     var result = ''; 

     $.get("code/value.php", 
     { 
      ID:user, 
      amount:amount, 
      result:result 

     },function(query) 
     { 
      if (user > 0 and user < 30){ 
       alert(result); 
      } 
      else{ 
       alert('invalid user ID'); 
      } 
     }); 
    }); 

}); 

php:

<?php 

    $userID = $_GET["ID"]; 
    $amount = $_GET["amount"]; 
    $category = $_GET["category"]; 
    $num  = $_GET["number"]; 

    require "../code/connection.php"; 

    $SQL = "select userAmount from user where userID= '$userID'"; 

    $reply = $mysqli->query($SQL); 

    while($row = $reply->fetch_array()) 
    { 


    } 

    if($mysqli->affected_rows > 0){ 
     $msg= "query successful"; 
    } 
    else{ 
     $msg= "error " . $mysqli->error; 
    } 

    $mysqli->close(); 

    echo $msg; 
?> 
+5

** WARNUNG **: Wenn Sie 'mysqli' verwenden, sollten Sie parametrisierte Abfragen und [' bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php) verwenden Fügen Sie Benutzerdaten zu Ihrer Abfrage hinzu. ** Verwenden Sie NICHT ** String-Interpolation oder Verkettung, um dies zu erreichen, weil Sie einen schwerwiegenden [SQL injection bug] erstellt haben (http://bobby-tables.com/). ** NIEMALS ** $ _POST' oder '$ _GET' Daten direkt in eine Abfrage einfügen. – tadman

+0

Ich bin verwirrt, wo du dich verirrst. Kann man nicht einfach '$ message =" success ";' '$ message = $ row [" itemPrice "];'? –

+0

alles, was Ajax sendet, ist eine Zeichenfolge. Wenn Sie möchten, dass eine Nummer in Ihrem JS-Code eingeht, müssen Sie Maßnahmen ergreifen, damit sie als Nummer ankommt, z. Sende JSON. –

Antwort

2

Ziemlich einfach - man muss nur den Wert aus der Reihe packen und es als Schwimmer werfen.

while($row = $result->fetch_array()) 
{ 
    $msg = floatval($row['userAmount']); 
} 
if($msg > 0) { 
    echo $msg; 
} else { 
    echo "error" . $mysqli->error; 
} 

$mysqli->close(); 

Und eine kleine Änderung in der Ajax-Aufruf:

$.get("code/value.php", 
    { 
     ID:user, 
     amount:amount, 
     result:result 

    },function(query) 
    { 
     alert(query); 
    }); 
}); 
+0

Es hat funktioniert! Vielen Dank. – Calisto

+0

Großartig! Wenn Sie meine Antwort akzeptieren könnten, wäre das großartig. Beachten Sie auch den obigen Kommentar von tadman zur Verwendung von Parametern mit Abfragen. Es ist ein bisschen mehr Arbeit, aber wenn Sie es nicht tun, sind Sie sehr anfällig für Hacker. – larsAnders

1

Sie benötigen echo $row['userAmount']; innen oder nach Ihrer while Schleife hinzuzufügen, und die zweiten echo fallen. Sie sollten in der Lage sein, result in Ihrem AJAX-Code zu verwenden und es direkt als Nummer zu verwenden.

1

Hier ist function(query), query die Antwort vom AJAX-Aufruf. So sollte Ihre Warnung sein:

alert(query); 

result leer.

Sie sollten auch prepared statements und outputting den Wert verwenden, den Sie möchten.

Etwas wie:

<?php 
    $userID = $_GET["ID"]; 
    $amount= $_GET["amount"]; 
    require "../code/connect.php"; 
    $SQL = "SELECT userAmount FROM user WHERE userID= ?"; 
    $reply = $mysqli->prepare($SQL); 
    if($mysqli->execute(array($userID))) { 
     $row = $reply->fetch_array(); 
     echo $row['amount']; 
    } 
    else 
    { 
     $msg = "error" . $mysqli->error; 
    } 
$mysqli->close(); 
?> 

Dann JS:

$(document).ready(function() 
{ 
    $("#btnCalc").click(function() 
    { 
     var user  = $("#txtUser").val(); 
     var amount  = $("#txtAmount").val(); 
     var result = ''; 

     $.get("code/value.php", 
     { 
      ID:user, 
      amount:amount, 
      result:result 

     },function(query) 
     { 
      alert(query); 
     }); 
    }); 

}); 

Sie können https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseFloat oder https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt verwenden Sie den Wert auf eine ganze Zahl/float in JS zu konvertieren.

+0

Vielen Dank! sehr hilfreich – Calisto

Verwandte Themen