【问题标题】:Sort using php and jquery使用 php 和 jquery 进行排序
【发布时间】:2009-04-15 09:03:03
【问题描述】:

当用户单击表格标题时,我正在尝试重新排序 HTML 表格。这是我能做的所有事情,但仍然不起作用。

在 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);
    }
  });
}

排序.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?

【问题讨论】:

  • 嗨,莎拉。请在提问时使用表格下方的预览,以确保在提交前格式正确。要告诉表单您正在输入什么代码,请使用四个前导空格。
  • MrHus 的回答是正确的,但我认为你做错了什么。您是否在字段名称和排序方向之间放置了一个空格,还是就像您在此处写的那样?

标签: php jquery sorting


【解决方案1】:

您应该尝试:tablesorter 用于对表格进行排序。你甚至不需要在这个解决方案中使用 php,只需 jquery。希望它有用。

要回复您对 Daan 的 anwser 的评论,您可以使用 ajax 更新 tablesorter,如 here 所述。

【讨论】:

  • 虽然这是真的,但使用 tablesorter 插件进行排序几乎无法用于较大的表。只是提醒莎拉!
【解决方案2】:

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

查询的最后一行现在是:

ORDER BY user_name".$orderBy);

但应该是:

ORDER BY user_name ".$orderBy);

【讨论】:

  • 非常感谢您的关心 MrHus、skorpan 和 Daan 我不能使用表格排序器,因为我通过 ajax 添加了 2 行至于我添加的空间,它从来没有想过这可能是一个问题现在我想通过 jquery 更新 HTML 表的内容我该怎么做
【解决方案3】:

正如 Daan 所说,您缺少空间,这可能是原因,但我会补充:

您可能应该检查 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';
}

【讨论】:

  • 嘿 tomhaigh 非常感谢您的关注,你们似乎都知道自己的网络编码方式现在我需要帮助我还是新手,我想要一个可以与我讨论并询问我该怎么做的人和做什么我也想通过 jquery 更新 HTML 表的内容我应该做什么
猜你喜欢
  • 1970-01-01
  • 2010-10-19
  • 2013-03-11
  • 1970-01-01
  • 1970-01-01
  • 2015-03-14
  • 1970-01-01
  • 1970-01-01
  • 2013-09-06
相关资源
最近更新 更多