Сортировка с использованием php и jquery - PullRequest
0 голосов
/ 15 апреля 2009

Я пытаюсь изменить порядок таблицы 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);
    }
  });
}

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. А потом я хочу добавить новый заказ на мою страницу - как это можно сделать?

Может ли переменная, отправляемая в функцию sort, быть динамической, т.е. быть ASC или DESC при клике?

Ответы [ 3 ]

5 голосов
/ 15 апреля 2009

Вы должны попробовать: tablesorter его для сортировки таблиц. И вам даже не нужно использовать php с этим решением, просто jquery. Надеюсь, что это полезно.

Чтобы ответить на ваш комментарий по поводу ответчика Даана, вы можете обновить TableSorter с помощью ajax, как описано здесь .

1 голос
/ 15 апреля 2009

Я не уверен, является ли это причиной вашей проблемы, но я верю, что вы пропустили пробел.

Последняя строка вашего запроса теперь:

ORDER BY user_name".$orderBy);

Но должно быть:

ORDER BY user_name ".$orderBy);
0 голосов
/ 15 апреля 2009

Как сказал Даан, вам не хватает места, и это, вероятно, причина, однако я добавлю:

Вам, вероятно, следует проверить результат вызова mysql_query (), потому что в настоящее время вы не знаете, происходит ли это сбой или нет, что может быть причиной вашей проблемы. Например:

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

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

Кроме того, вам не следует создавать оператор SQL на основе строк, поступивших из браузера, поскольку им нельзя доверять, и кто-то может добавить вредоносный SQL в то, что вы выполняете. См. SQL-инъекция .

Вы можете сначала проверить строку, что будет намного безопаснее и проще, потому что у вас есть только два возможных значения, например

if (isset($_GET['orderby']) && $_GET['orderby'] == 'DESC') {
    $orderBy = 'DESC';
} else {
    $orderBy = 'ASC';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...