За последние 24 часа нас посетили 16873 программиста и 1247 роботов. Сейчас ищет 1631 программист ...

Поочередная сортировка DESC\ASC

Тема в разделе "PHP для новичков", создана пользователем exzibit, 24 мар 2010.

  1. exzibit

    exzibit Активный пользователь

    С нами с:
    12 сен 2009
    Сообщения:
    10
    Симпатии:
    0
    Адрес:
    Дмитров, МО
    Ух, даже не знаю как всё правильно обьяснить и к чему отнести:

    в общем есть таблица, заполненная данными с БД, нужно сделать сортировку

    к примеру я нажимаю на "номер" - сортирует по номеру, нажимаю "дата" - по дате и т.п. - это я реализовал
    теперь не знаю как сделать обратную сортировку, т.е до этого он всегда мне делает "Order by ... DESC"

    задача:
    если уже было нажато "номер", то сортируем по ASC, если опять нажать "номер" то по "DESC"

    Надеюсь суть вопроса смог передать :wink:

    п.с пытался сделать так, но моя бредовая идея не работает :(

    PHP:
    1. elseif ($_GET[sort]=='topic')    
    2. { $topic1=$topic1+1;
    3. if ($topic1%2==1) {$order='ASC';} else {$order='DESC';}
    4. $cur='topic'; $res1=mysql_query("select * from work order by topic $order, id $order"); }
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    ну, так передавайте вместе с sort ещё и order.
    т.е.
    Код (Text):
    1. sort=topic&order=ASC
     
  3. exzibit

    exzibit Активный пользователь

    С нами с:
    12 сен 2009
    Сообщения:
    10
    Симпатии:
    0
    Адрес:
    Дмитров, МО
    хм.. а как я узнаю когда поочерёдно передавать ASC а когда DESC в ссылках на "Номер, топик, дата" и т.п..?
     
  4. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    в $_GET['order'] лежит нынешнее направление сортировки, оталкиваясь от него подставить в ссылку противоположное направление

    если надо сортировку по нескольким полям, то можно передавать order_topic=ASC, order_date=DESC
     
  5. exzibit

    exzibit Активный пользователь

    С нами с:
    12 сен 2009
    Сообщения:
    10
    Симпатии:
    0
    Адрес:
    Дмитров, МО
    Luge
    спасибо, сделал :) не сразу доходит просто :)
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в $_SESSION тоже можно сохранять. Это имхо самый лучших ход.

    А еще последнее время самый мега-колхоз-шик делать это все на аяксе =)
    А еще есть такая штука если что: array_multisort — Sort multiple or multi-dimensional arrays, но тут без нее все ок работать будет.
     
  7. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    зачем пихать в сессию всё подряд? не свалка же

    вообще-то и простого js достаточно
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    конечно достаточно. Но ведь так круто все делать на аяксе, не передавая никаких параметров, чтобы посетители не могли потом копировать ссылки и присылать друзьям по аське, говоря "глянь, че я нашел, зацени" и мучаться на слабых машинах =)

    А свалка ли? Ну мне кажется надо отталкиваться от нагрузки на сервер. Может там десяток сотрудников работать будет. Так можно с чистой совестью хоть целые файлы в сессию фигачить =)
     
  9. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    как раз при использовании аякса и якорной навигации ссылку можно организовать, а вот при использовании сессии — нет

    а ещё туда можно всю базу зафигачить. только не надо
     
  10. ldvc

    ldvc Активный пользователь

    С нами с:
    28 апр 2010
    Сообщения:
    1
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Здравствуйте. Мне необходима помошь в добавлении данной опции в вариант реализации сортировки описаный здесь http://www.webteh.zx6.ru/index.php?cat=2&id=66
    Никак не могу разобраться пользуясь только лишь вышесказанным. Заранее спасибо.