2016-10-19 84 views
-1

我已經建立了這個ajax函數,我想更新數據庫中的兩個字段,如果用戶決定改變它們,我有這個代碼在哪裏打印酒店房間(學校作業)與他們目前的信息,ID等:通過ajax發送值,在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); 

    ?> 

這裏沒有什麼是錯的,所有的值都看起來是正確的。 那麼這裏就是我從這個表單發送信息的AJAX:

<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> 

,以確保所有的值從PHP發送(正確的ID從按鈕,說明&房間號),我提醒他們到底的ajax文件,所有的值都是正確的。

然後在這裏,我試圖用新的值更新DB:

<?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); 

?> 

我不能看到任何東西,就是在這裏下車,但我也有點用AJAX的新的居多,所以如果你看到的東西,似乎不對,我會很高興與任何幫助,我可以得到.. :)

+0

試着改變你在AJAX發佈和您的$ _GET至$ _ POST或把一個模具()就在isset語句來看看它是否真的開始了這一點。 – Jeff

+0

1st:你需要通過使用成功提示返回的數據:function(data){alert(data);}並查看是否有任何錯誤..第二:我認爲$(this)成功不會工作,所以定義ThisIt = $ (這個);在單擊事件的開始,然後使用ThisIt而不是$(this) –

+0

mysqli_query()返回true或false? GET參數值被轉義? –

回答

1

您的字符串語法是錯誤的。如果您不使用變量周圍的曲線語法,則不得在數組索引周圍加引號。您還需要在SQL中引用字符串值。

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

您最好學習使用mysqli_stmt_bind_param準備好的查詢,以避免SQL注入問題。

$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);