2016-06-19 9 views
0

ページをリロードせずにデータベース内の行を削除したい。私は以下のコードを書いた。ページ内の行は削除されますが、データベース内は削除​​されません。これは、接続がajaxにならないことを意味します。 plsヘルプ。データベース内のテーブル行削除ページを再ロードせずに

<?php 


$advances_result= mysqli_query($conn, "SELECT * FROM advances") or die("error"); 
?> 

     <table border> 
      <caption>ADVANCES</caption> 
     <tr> 
      <th>Date</th> 
      <th>EmpName</th> 
      <th>EmpCode</th> 
      <th>Amount</th> 
      <th>Comment</th> 
      <th>Action</th> 
     </tr> 

<?php 
while($row = mysqli_fetch_array($advances_result)){ 
?>  
    <tr> 
    <td><?php echo $row['date'];?></td> 
    <td><?php echo $row['empname'];?></td> 
    <td><?php echo $row['empcode'];?></td> 
    <td style='text-align:right'><?php echo $row['amount'];?></td> 
    <td><?php echo $row['comment'];?></td> 
    <td><button class="delete" id="<?php echo $row['id']; ?>" > Delete</button></td> 
    </tr> 


<?php  
} 
?> 
     </table> 

'jqueryの一部'

     <script> 
         $(document).ready(function(){     
         $(".delete").click(function() { 


         if (confirm("Do you want to delete this row?")) 
             { 
              var row = $(this).parents('tr'); 
              var id = row.attr("id"); 
              var data = 'id=' + id ; 

         $.post({ 
          type: "post", 
          url: "deleteadvances.php", 
          data: data, 
          cache: false, 
          success: function(){ 
          row.slideUp('slow', function() {$(row).remove();}); 

          } 
         }); 
         } 
         return false; 
          }); 
         }); 
         </script> 

'deleteadvances.php' のページ:

<?php 
include("connection.php"); 

$id = $_POST['id']; 
mysqli_query($conn,"INSERT INTO advancehistory SELECT * FROM advances WHERE ID='".$id."'"); 
mysqli_query($conn,"DELETE FROM advances WHERE ID='".$id."'"); 



?> 
+0

まず、あなたはそれを返すかを確認するためにあなたの 'mysqli_query()'の戻り値を確認することができます。第2に、SQLインジェクションからあなたのクエリを保護する必要があります(あなたのパラメータを&bind_paramに用意することによって) – Julqas

+0

'$ post()'メソッドを使うときに 'type: 'post''は本当に必要ありません。 –

答えて

0

場合は、deleteadvances.phpにmysqli_queryの出力をテストする必要がありますすべて良い、それはjQuery側で$ .postで簡単に解析できるJSON OKメッセージを示しています。

例:成功した場合は{"deleted":"id"}、エラーの場合は{"error":404}が見つかりませんでした。

+0

それをテストする方法...私は初心者であり、コーディングの基本知識しか持っていません。 –

+0

レスポンスコードを追加する[ここ](http://stackoverflow.com/questions/3351882/convert-mysqli-result-to-json) [ここ](http://stackoverflow.com/questions/10475652/jquery-post-processing-json-response) – volkovmqx

0

私はあなたがjavascriptからajaxに渡しているIDが間違っていると思います。

var data = 'id=' + id; 

はidに 'id ='という文字列を追加していますが、今や最終的に文字列になります。それがajaxに渡されているときには、値があり、[key、value]のペアではありません。だから、PHPでアクセスしているときに間違ったidやNull値を取得します。

試してみてください。

$.post({ 
    type: "post", 
    url: "deleteadvances.php", 
    datatype : 'json', 
    data: { 
     id : id 
    }, 
    cache: false, 
    contentType : 'application/x-www-form-urlencoded; charset=utf-8' 
}); 
+0

私はそれを試したがまだokではありません –

+0

私はajaxリクエストでコンテンツタイプとデータタイプを追加しました。それがあなたのために働くことを願っています。 – Agam

+0

申し訳ありませんがまだありません:( –

関連する問題