[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сортировка таблицы
Гость_sever
Здравствуйте.
Сделал сортировку столбцов таблицы по клину на соответствующий заголовок, а теперь хочу для вида добавить еще и тип сортировки, т.е чтобы отображалась картинка со стрелочкой, показывающая тип сортировки...Как эту стрелочку влепить сюда и чтобы она появлялась и изменялась только в том столбце, по которому производится сортировка?


#menu
{
top: 8px;
right: 5px;
border: none;
height:12px;
width:12px;
}



// Подключиться к серверу MySQL и выбрать базу данных
@mysql_connect("localhost", "root", "") or die("Could not connect to MySQL server!");
@mysql_select_db( "db") or die("Could not select company database!");

mysql_query("SET NAMES cp1251");
mysql_query("SET character_SET_database=cp1251");
mysql_query("SET character_SET_server=cp1251");

$key_array = array('id','header','text','date','author');
$sort_array = array('asc','desc');

if (isset($_GET['key']))
{
$key=$_GET['key'];
$sort=$_GET['sort'];
}
else
{
$key='id';
$sort='asc';
}

if(in_array($key, $key_array) && in_array($sort, $sort_array))
{
$query = "SELECT * FROM news ORDER BY $key $sort";
$result = mysql_query($query);
}
else exit("неверный формат запроса!");

if($sort=='asc')
{
$sort='desc';
$vid_sort=$sort_up;
}
else
{
$sort='asc';
$vid_sort=$sort_down;
}

print "<table border = 1>";
print "<tr>
<th width='40'><a href=
\"proba.php?key=id&sort=$sort\">id</a></th>
<th width='250'><a href=
\"proba.php?key=header&sort=$sort\">header</a></th>
<th width='300'><a href=
\"proba.php?key=text&sort=$sort\">text</a></th>
<th width='100'><a href=
\"proba.php?key=date&sort=$sort\">date</a></th>
<th width='100'><a href=
\"proba.php?key=author&sort=$sort\">author</a>
</th></tr>"
;
// Отформатировать и вывести каждую строку таблицы
while ($row = mysql_fetch_array($result))
{
print "<tr>";
print '<td>'.$row['id'].'</td><td>'.$row['header'].'</td><td>'.substr($row['text'],0,30).'...</td><td>'.$row['date'].'</td><td>'.$row['author'].'</td>';
print "</tr>";
}
// Завершить таблицу
print "</table>";





Спустя 12 часов, 24 минуты, 39 секунд (5.03.2011 - 14:27) keovken написал(а):
если честно то я не понял откуда берутся переменные $sort_up и $sort_doun ну да ладно... Я решил твою задачу написав функцию (приведена ниже) я немножко изменил твой код, но думаю понятно, что это за место. У меня всё работает. Вместо слов "up" и "doun" вставляешь адрес соответствующих стрелок. (отмечено комментарием)

function vid_sort($k){
global $key,$sort;
if($k==$key){

if($sort=='asc') {$str = "$k up";}else{$str = "$k doun";}// вместо "up" и "doun" url картинки
}else{$str=$k;}
return $str;
}

print "<table border = 1>";
print "<tr>";
echo"<th width='40'><a href=\"proba.php?key=id&sort=$sort\">".vid_sort("id")."</a></th>";
echo"<th width='300'><a href=\"proba.php?key=text&sort=$sort\">".vid_sort('text')."</a></th>";
echo"<th width='100'><a href=\"proba.php?key=date&sort=$sort\">".vid_sort('date')."</a></th>";
echo"<th width='100'><a href=\"proba.php?key=author&sort=$sort\">".vid_sort('author')."</a>";
echo"</th></tr>";

Спустя 6 минут, 34 секунды (5.03.2011 - 14:33) Гость_sever написал(а):
Да, у меня внчале было вот так написано:

$key_array = array('id','header','text','date','author');
$sort_array = array('asc','desc');
$sort_down = "<img id='menu' src='sort_down.gif'>";
$sort_up = '<img id="menu" src="sort_up.gif">';


Просто эти 2 переменные я решил потом удалить, а в коде забыл исправить)
Сейчас посмотрю предложенный тобой вариант :)

Спустя 30 минут, 37 секунд (5.03.2011 - 15:04) Snus написал(а):

Спустя 14 минут, 58 секунд (5.03.2011 - 15:19) Гость_sever написал(а):
keovken, спасибо большое, работает! smile.gif
Только вопрос: а как сделать так, чтобы там к каждому заголовку столбца по умолчанию прибавлялось некая пустота, в смысле что когда я тыкаю на соответсвующий столбец, чтобы выполнить сортировку, то для него добавляется картинка со стрелочкой, а когда она добавляется, то происходит некое смещение влево названия столбца...
(может непонятно написал, если надо распишу еще)


Snus, спасибо, но так ЖКвери, я таких примеров УЙМУ видел, мне надо чем проще, тем лучше)
Чем подключать всякие плагины и прочее дело, можно дописать пару лишних строк кода)

Спустя 14 минут, 42 секунды (5.03.2011 - 15:33) keovken написал(а):
Гость_sever может не совсем тебя понял, но попробуй поставить пробел в функции там где else{$str=$k;} поменять на else{$str=$k." ";}. а вообще для выравнивания внутри ячейки таблицы лучше конечно использовать стили. А там смотри сам.

Спустя 24 минуты, 19 секунд (5.03.2011 - 15:58) Guest написал(а):
keovken, делал так:
>>поменять на else{$str=$k." ";} (правильно ты вопрос понял smile.gif )
не прокатило, а как через стили такое замутить, не подскажешь?

Спустя 15 минут, 21 секунда (5.03.2011 - 16:13) keovken написал(а):
Guest ну тут уже эксперементировать надо. В css (как ты знаешь надеюсь) за выравнивание отвечает такая штука как float. принимает значения left и right. Я бы на твоем месте, создал отдельный класс в css (ну например .a {float:left;}) и подцепил его, допустим, к названию поля, ну или стрелки, смотря с какой стороны тебе надо. По идее должно помочь.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.