2009-04-15 4 views
0

Я пытаюсь переупорядочить таблицу 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

Привет, Сара. Пожалуйста, используйте предварительный просмотр ниже формы, задавая вопросы, чтобы убедиться, что они отформатированы правильно перед отправкой. Чтобы сообщить форме, что вы вводите код, используйте четыре ведущих пробела. –

+0

Ответ MrHus правильный, но я думаю, что вы делаете что-то неправильно. Вы помещаете пробел между именем поля и направлением сортировки или это так, как вы писали здесь? – BYK

ответ

1

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

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

ORDER BY user_name".$orderBy); 

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

ORDER BY user_name ".$orderBy); 
+0

Огромное спасибо за вашу заботу MrHus, skorpan и Daan Я не могу использовать tablesorter, потому что я добавляю 2 строки ajax , так как для пространства я добавил его, и он работал никогда не до сих пор, это может быть проблемой, теперь я хочу обновить содержимое таблицы HTML с помощью jquery, как я могу это сделать – Sarah

5

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

Чтобы ответить на ваш комментарий к аннотатору Daan, вы можете обновить tablesorter с помощью ajax, как описано here.

+0

Хотя это верно, сортировка с использованием плагина tablesorter практически неприменима для больших таблиц. Просто голова к Саре! –

0

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

Вероятно, вы должны проверить результат вызова 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'; 
} 
+0

Hey tomhaigh Огромное вам спасибо за вашу заботу, что вы, кажется, знаете свой путь вокруг веб-кодирования, теперь мне нужна помощь, я все еще новичок, и я хочу, чтобы кто-то, с кем я могу обсудить с и спросить, что я могу сделать и что делать Также я хочу обновить содержимое таблицы HTML jquery, что мне делать – Sarah