2015-08-15 78 views
1

我有一個main_list在MySQL中的表,我想拷貝一個特定的行到另一個my_list表。目前我正在使用DataTables,在第四列中有一個「添加」按鈕。如何使用Jquery和PHP將行復制到MySQL中的另一個表中?

JS文件:

$(document).ready(function() { 
      var dataTable = $('#items').DataTable({ 
       "processing": true, 
       "serverSide": true, 
       "ajax":{ 
        url :"items-data.php", // json datasource 
        type: "post", // method , by default get 
        error: function(){ // error handling 
         $(".items-grid-error").html(""); 
         $("#items-grid").append('<tbody class="items-grid-error"><tr><th colspan="3">No data found in the server</th></tr></tbody>'); 
         $("#items-grid_processing").css("display","none"); 
         } 
       }, 
       "columnDefs": [ { 
       "targets": 0, 
       "data": null , 
       "render": function (data) { 
       return '<a href=//'+data[ 3 ]+' target="_blank">'+data[ 0 ]+'</a>'; 
       } 
       }, 
       { "visible": false, "targets": [ 3 ] }, 
       { "sClass": "add", "targets": [ 4 ] }, 
       { 
       "targets": -1, 
      "data": null, 
      "defaultContent": "<button>Add</button>" 

       } ] 
      }); 

    $('#items-grid tbody').on('click', 'button', function (e) { 
     e.preventDefault(); 
     var myData = 'addToList'; 

    jQuery.ajax({ 
      type: "POST", 
      url: "add.php", 
      dataType:"text", 
      data:myData, 
      success:function(response){ 
      alert('Success'); 
      }, 
      error:function (xhr, ajaxOptions, thrownError){ 
      alert(thrownError); 
      } 
      }); 

    }); 

     }); 

所以我想不出什麼樣的數據,我應該通過AJAX POST發送這樣我就可以觸發MySQL查詢。理想情況下,我應該從MySQL表中獲得行ID。我怎樣才能做到這一點?任何幫助,將不勝感激。

PHP腳本:

<?php 
    //include db configuration file 
    include_once("connection.php"); 


    // add item to my list 


    if(isset($_POST['addToList'])){ 

     $sql = " INSERT INTO my_list (item_name, item_detail, item_location, item_website) "; 
     $sql.= " SELECT item_name, item_detail, item_location, item_website "; 
     $sql.= " FROM main_list "; 
     $sql.= " WHERE id = 20 "; 

     if (mysqli_query($conn, $sql)) { 
      echo "Record copied successfully"; 
     } else { 
      echo "Error copying record: " . mysqli_error($conn); 
     } 

    } 

?> 
+0

通過ajax發送數據庫錶行的id。 – Tyr

+0

在兩張不同的表格中有完全相同的數據真的很必要嗎? – e4c5

+0

我想在以後建立一個收藏夾系統,但我想一次只採取一步。目標是用戶將點擊添加按鈕並將該行復制到他的列表中。 – starfx

回答

0

的第一件事要做的就是簡化問題。這並不一定是一個jQuery/PHP的組合問題。您可以首先修改執行數據庫查詢的PHP代碼。您可以通過在URL中傳入不同的參數來對其進行可視化測試。一旦你得到它的工作,這是一個微不足道的事情,將該網址插入到您的JavaScript代碼,讓他們一起工作。

url參數可以是記錄的主鍵。你現在有硬編碼$sql.= " WHERE id = 20 ";它應該將其更改爲$sql.= " WHERE id = 20 ";它的價值來$ _POST

+0

謝謝,但是我如何從MySQL獲取每行的相應ID?對於像button_1,button_2這樣應該從數據庫中獲得id 1/2的每一行,我是否應該有不同的按鈕/查詢? – starfx

+0

通常一個表應該有一個主鍵。對於最快的查詢,這將是一個數字列。泛化非常困難,但是當表中沒有任何自然整數字段時,通常會使用自動增量字段並將其標記爲主要https://dev.mysql.com/doc/refman/5.5/en/ example-auto-increment.html – e4c5

+0

你不需要大量的按鈕(如果你願意,你可以這樣做),但通常的策略是將主鍵或基於它的東西作爲html id屬性對於行,並在ajax中使用。 – e4c5

-1

我認爲這足夠了,如果你只包括你想複製的行的ID在ajax請求。 在檢查了你包含的查詢後,我認爲它需要重構。最好有這樣的查詢:

insert into my_list (
    item_name, 
    item_detail, 
    item_location, 
    item_website 
) values (
    select 
     item_name, 
     item_detail, 
     item_location, 
     item_website 
    from 
     main_list 
    where 
     id = (the id from ajax request) 
); 
+0

謝謝,現在我只需要解決如何查詢每行的id,我想。 – starfx

+0

您首先使用什麼查詢來從數據庫中檢索數據? –

相關問題