保存排序到sql的最佳方法是什么?

时间:2014-05-24 14:34:15

标签: javascript php mysql ajax sorting

我有mysql表的数据,我打印为html表,用JS和拖放我可以对该表进行排序,然后我可以将ajax发送到服务器,保存排序行更改的最佳方法是什么?什么应该在ajax请求和我应该运行什么SQL查询?

2 个答案:

答案 0 :(得分:1)

你的MySQL表中可能有一个order字段。值是整数,表示行的顺序,如下所示:

my_table

| ID |  NAME  | ORDER |
|----|--------|-------|
|  0 |  john  |   2   |
|  1 |  henry |   1   |
|  2 |  suzan |   3   |

因此,每次保存数据时,都会通过在HTML表上使用ajax和order循环发送数据来更新MySQL字段for。在JS中,类似于:

function update()
{
   //get your table
   var table = document.getElementById(my_table);
   //for loop on the table rows
   for(var i=0;i<table.rows.length;i++)
   {
      //get your data id
      var id = rows[i].cells[0];
      //get your order index
      var order = rows[i].cells[1];
      //send in ajax
      var xhr = new XMLHttpRequest();
      xhr.onreadystatechange = function() {
         if(xhr.readyState == 4 && xhr.status==200)
         {
            //update confirm message
            alert('update ok');
         }
      }
      xhr.open('POST', 'update.php', true);
      xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
      xhr.send('id='+id+'&order='+order);
   }
}

使用Ajax调用的php文件中的MySQL请求应为:

<?php

   mysql_query("UPDATE my_table 
                   SET order = '".$_POST['order']."' 
                 WHERE id = '".$_POST['id']."';");

?>

最后,要使用MySQL以正确的顺序获取数据:

SELECT * FROM my_table ORDER BY order;

答案 1 :(得分:0)

如果我理解正确,你需要发送带有ajax请求的2个额外变量:列名和排序顺序如:

 ....&col=col2&sort=descending

然后,在PHP中:

    $columns = array('col1'=>'column_name_in_table',
'col2'=> 'second_column_name_in_table',
'colx'=> 'column_x_name_in_table',);
$sortorder = array('ascending'=>'asc','descending'=>'desc');

$query .= "ORDER BY ".$columns[$_POST['col']]." ".$sortorder[$_POST['sort']];

您还需要额外的检查,但至少这些数组确保代码的这一部分是SQL注入证明。