2016-10-19 1 views
-1

사용자가 데이터베이스를 변경하기로 결정한 경우이 호텔에서 두 필드를 업데이트하려는 아약스 기능을 구축했습니다.이 코드는 호텔 객실 인쇄 (학교 지정) 현재 정보, ID 등 :아약스를 통해 값을 보내면 아무 것도 발생하지 않습니다.

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

    ?> 

여기에 아무 것도 없으며 모든 값이 올바른 것처럼 보입니다.

<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

당신이 아약스에서 POST에 도착하고 $ _GET에 $ _POST 또는 실제로 그 시점에지고 있는지 확인하기 위해 바로는 isset 문에) 다이를 (넣어 변경해보십시오. – Jeff

+0

첫째 : 당신은 성공을 사용하여 반환 된 데이터를 경고해야합니다 : function (data) {alert (data);} 그리고 오류가 있는지보십시오 .. 두 번째 : 나는 성공에서 $ (this)가 작동하지 않을 것이라고 생각합니다 ThisIt = $ (이); click 이벤트의 시작 부분에서 ThisIt을 $ (this) –

+0

mysqli_query() 대신 true로 사용하면 true 또는 false를 반환하겠습니까? GET 매개 변수 값이 이스케이프됩니까? –

답변

1

문자열 구문이 잘못되었습니다. 변수 주위에 둥근 구문을 사용하지 않는다면, 배열 인덱스를 따옴표로 묶어서는 안됩니다. 또한 SQL의 문자열 값을 따옴표로 묶어야합니다.

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

당신이 SQL 주입 문제를 방지하기 위해, mysqli_stmt_bind_param로 준비된 쿼리를 사용하는 방법을 배우게하는 것이 더 나은 것입니다.

$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); 
관련 문제