2016-10-19 1 views
-1

Ich habe diese Ajax-Funktion gebaut, wo ich zwei Felder in einer Datenbank aktualisieren möchte, wenn der Benutzer sie ändern möchte, habe ich diesen Code, wo ich Zimmer drucken (Schulaufgabe) mit ihren aktuellen Informationen, ID, etc.:Senden von Werten durch Ajax, geschieht nichts in SQL

<?php 
     include('php/connect.php'); 

     $chquery = "SELECT * FROM rooms"; 
     $chresult = mysqli_query($conn, $chquery); 

     while($chrow = mysqli_fetch_array($chresult)){ 
      echo "<div class='edit_roomRow'>"; 
      echo "<h1> Rum " . $chrow['ID'] . "</h1>"; 
      echo "<form>"; 
      echo "Rumsnummer:<br> <input id='c-roomnumber' type='text' value = '" . $chrow['ID'] . "' placeholder='" . $chrow['ID'] . "'><br>"; 
      echo "Beskrivning:<br> <input id='c-description' type='text' value = '" . $chrow['Description'] . "'placeholder='" . $chrow['Description'] . "'>"; 
      echo "</form>"; 
      echo "<br>"; 
      echo "</div>"; 
      echo "<div class='btn btn-warning change-btn' data-value='". $chrow['ID'] . "'style='float: right; margin-top: 100px;'>Ändra</div>"; 
      echo "<hr/>"; 
     } 

     mysqli_free_result($chresult); 

     mysqli_close($conn); 

    ?> 

Hier ist nichts falsch und alle Werte scheinen korrekt. hier ist dann die Ajax, wo ich die Informationen aus diesem Formular senden:

<script type="text/javascript"> 
    $(".change-btn").click(function(){ 
     var id = $(this).attr("data-value"); 
     var description = $("#c-description").val(); 
     var roomnumber = $("#c-roomnumber").val(); 
     //Call to ajax 
     $.ajax({ 
      method:"GET", 
      url: "php/changepost.php", 
      data:{ id: id, description: description, roomnumber: roomnumber }, 
      success: function(){ 
       $(this).val(""); 
       $("#c-description").val(""); 
       $("#c-roomnumber").val(""); 
       //Reload specific div with rooms, avoid full page reload 
       $(".changerooms").load(location.href + " .changerooms"); 
      } 
     }) 
    }) 
</script> 

Um sicherzustellen, dass alle Werte aus der PHP gesendet werden (korrekte ID aus der Taste, Beschreibung & Zimmernummer) i alarmierte sie am Ende der Ajax-Datei sind alle Werte korrekt.

Dann hier versuche ich, die DB mit den neuen Werten zu aktualisieren:

<?php 
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 
include('connect.php'); 

if(isset($_GET['id'])){ 
    $changequery = "UPDATE rooms SET ID = $_GET['roomnumber'], Description = $_GET['description'] WHERE ID = $_GET['id']"; 
    //Perform $changequery 
    mysqli_query($conn, $changequery); 
} 

mysqli_close($conn); 

?> 

Ich kann nichts sehen, die weg hier ist, aber ich bin ein bisschen neu mit AJAX meist, wenn Sie also etwas sehen, dass scheint falsch, ich wäre froh mit jeder Hilfe, die ich bekommen konnte .. :)

+0

Versuchen Sie, Sie in Ajax und Ihre $ _GET zu $ ​​_POST oder setzen Sie einen die() rechts in der isset Anweisung POST GET zu sehen, ob es tatsächlich zu diesem Punkt. – Jeff

+0

1st: Sie müssen zurückgegebene Daten mit Erfolg: function (data) {alert (data);} und sehen, ob irgendwelche Fehler .. 2nd: Ich denke, $ (this) im Erfolg wird nicht funktionieren so definieren ThisIt = $ (Dies); am Anfang des click-Ereignisses und dann ThisIt im Erfolg anstelle von $ (this) –

+0

mysqli_query() wahr oder falsch? GET-Parameterwerte werden maskiert? –

Antwort

1

Ihre Zeichenfolge Syntax ist falsch. Wenn Sie die lockige Syntax für Variablen nicht verwenden, dürfen Sie die Array-Indizes nicht in Anführungszeichen setzen. Sie benötigen auch Anführungszeichen für String-Werte in SQL.

$changequery = "UPDATE rooms SET ID = $_GET[roomnumber], Description = '$_GET[description]' WHERE ID = $_GET[id]"; 

Es wäre besser für Sie vorbereitete Abfragen mit mysqli_stmt_bind_param, zu verwenden, zu lernen, um SQL-Injection-Probleme zu vermeiden.

$stmt = mysqli_prepare($conn, "UPDATE rooms SET ID = ?, Description = ? WHERE ID = ?"); 
mysqli_stmt_bind_param($stmt, "isi", $_GET['roomnumber'], $_GET['description'], $_GET['id']); 
mysqli_stmt_execute($stmt); 
Verwandte Themen