使用php和jquery排序

问题描述:

我试图在用户单击表格标题时重新排序HTML表格。这是我所能做的,但仍然无效。使用php和jquery排序

在HTML

// onClick on table header 
var par='ASC'; 
sort(par); 

来自:ajax.js

function sort(orderByType) 
{ 
    $.ajax({ 
    url: "sort.php", 
    type: "get", 
    data: "orderby="+orderByType, 
    success: function(data){ 
     alert(data); 
     $("t1").text(data); 
    } 
    }); 
} 

sort.php

$con = mysql_connect("localhost","root","root"); 
if (!$con) { 
    die('Could not connect: ' . mysql_error()); 
} 

$orderBy = $_GET['orderby']; 

mysql_select_db("icrisis", $con); 

$result = mysql_query("SELECT * FROM messages,user 
             where user_id = from_user 
             ORDER BY user_name".$orderBy); 

while($row = mysql_fetch_array($result)) 
{  
    echo "<tbody><tr><td>"."&#8226;"."</td><td>". 
     $row["Time_Date"]."</td><td>". 
     $row["player_name"]."</td><td></td><td></td><tr><td></td><td colspan='4'>". 
     $row["msg_desc"]."</td></tr></tbody>"; 
} 

mysql_close($con); 

它没有看到$orderBy。然后我想将新订单添加到我的页面 - 这怎么可能完成?

发送到函数排序的变量是动态的,即点击时是ASC还是DESC?

+0

嗨,莎拉。请在提交问题时使用表单下方的预览,以确保在提交前格式正确。为了说明你输入代码的形式,使用四个前导空格。 – 2009-04-15 09:06:00

+0

MrHus的答案是正确的,但我认为你做错了什么。你是否在字段名称和排序方向之间放置了一个空格,还是就像你在这里写的一样? – BYK 2009-04-15 09:19:08

我不确定这是否是您的问题的原因,但我相信你错过了一个空间。

查询的最后一行是现在:

ORDER BY user_name".$orderBy); 

但应该是:

ORDER BY user_name ".$orderBy); 
+0

非常感谢您的关注MrHus,skorpan和Daan 我无法使用tablesorter,因为我添加了2行ajax 至于我添加的空间,它的工作原理从来不是thoight,可能是现在我想要的问题更新jQuery的HTML表格的内容我怎么能这样做 – Sarah 2009-04-15 11:19:04

您应该尝试:tablesorter它用于排序表。而且你甚至不需要使用php这个解决方案只是jQuery。希望它有用。

要回复您对Daan's anwser的评论,您可以按照here所述更新ajax tablesorter。

+0

虽然这是真的,但使用tablesorter插件进行排序对于较大的表几乎不可用。只是为了莎拉! – 2009-04-15 09:14:03

正如大安说你缺少的空间,这可能是原因,但我会加:

您应该检查mysql_query()调用的结果,因为目前您不知道这是否失败,这可能是您的问题的原因。例如:

$result = mysql_query('SELECT ...'); 
if (!$result) { 
    die(mysql_error()); 
} 

while($row = mysql_fetch_array($result)) { 
//etc. 

还你真不该建基于字符串的SQL语句都来自于浏览器,因为这些是不可信任的,有人可能目前添加恶意SQL到您正在执行什么。见SQL Injection

您可以首先验证字符串,这样会更安全,而且很容易,因为您只有两个可能的值,例如,

if (isset($_GET['orderby']) && $_GET['orderby'] == 'DESC') { 
    $orderBy = 'DESC'; 
} else { 
    $orderBy = 'ASC'; 
}