За последние 24 часа нас посетили 18146 программистов и 1699 роботов. Сейчас ищут 1503 программиста ...

Сортировка таблицы.

Тема в разделе "PHP для новичков", создана пользователем RelictX, 17 окт 2008.

  1. RelictX

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

    С нами с:
    17 окт 2008
    Сообщения:
    58
    Симпатии:
    0
    Адрес:
    Казань
    Я прекрасно знаю что такое ASC и DESC. Если бы вы прочитали внимательно весь топ, то поняли бы, что у меня несколько столбцов, и сортировку средствами php может не хватить.
     
  2. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    ?????????
     
  3. kostyl

    kostyl Guest

    RelictX
    короче ты вообще без понятич чел, делай по своему - клонируй
     
  4. RelictX

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

    С нами с:
    17 окт 2008
    Сообщения:
    58
    Симпатии:
    0
    Адрес:
    Казань
    Таблица состоит из нескольких столбцов, где каждый столбец привязан к имени, фамилии, отчеству человека. Тоесть есть некие данные, относящиеся к каждому человеку.

    Данные из PhpMyAdmin обрабатываются и поступают в табличку на страничке. Мне необходимо сделать сортировку для каждого столбца. Вроде бы все просто, но средств php недостаточно на мой взгляд... Вот если бы был один столбец, я бы юзал ASC, DESC...

    Дополнительная сожность в том, что кнопка сортировки столбцов должна осуществялть по нажатии сортировку по ASC, а при след нажатии по ней по DESC, при третем нажатии снова ASC и т.д. И так для каждого столбца.

    Вроде бы все.
     
  5. RelictX

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

    С нами с:
    17 окт 2008
    Сообщения:
    58
    Симпатии:
    0
    Адрес:
    Казань
    Если не можете помочь, то не надо пожалуйста засыпать топик недвусмыленными словами. Подкалывать все умеют, я пришел сюда, чтобы спросить совета.
     
  6. kostyl

    kostyl Guest

    RelictX
    ну ты упрямый, надо тебе превый столбец по ASC сортировать сортируй по ASC, а второй надо по DESC - сортируй по DESC, в любом случае в один момент может быть отсортирован только один столбец либо по DESC либо по ASC, по другому у тебя значения не совпадут в строке - блин что тут не понятного???
     
  7. RelictX

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

    С нами с:
    17 окт 2008
    Сообщения:
    58
    Симпатии:
    0
    Адрес:
    Казань
    Еще раз повторяю - Мне не надо сортировать один по аск, а другой по деск. мне необходимо один и тот же сначала по аск, потом по деск. я знаю это, и поэтому средств php недостаточно. Следовательно нужен скрипт js, который правильно сортирует. Скольуко можно это повторять?
     
  8. obsrv

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

    С нами с:
    2 окт 2008
    Сообщения:
    238
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Да нет, можно конечно и пхп насиловать, но зачем лишняя загрузка, если проблема решаема на стороне пользователя с помощью JS.

    RelictX
    отписал в личку.
     
  9. kostyl

    kostyl Guest

    ну так сортируй его по аск добавляя в запрос аск и по дэск добавляя дэск... проще не бывает...
     
  10. RelictX

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

    С нами с:
    17 окт 2008
    Сообщения:
    58
    Симпатии:
    0
    Адрес:
    Казань
    Спасибо, а то пхп я уже замучал) И глобальный переменные юзал, и запрос для каждой кнопки делал, даже использывал апдейт значачения в пхпмайадмине для изменения значения переменной, чтобы запомнить нажатие батона)).
    Респект тебе :wink:
     
  11. RelictX

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

    С нами с:
    17 окт 2008
    Сообщения:
    58
    Симпатии:
    0
    Адрес:
    Казань
    И как ты собираешься менять запрос? Пользователи на сайте сами будут запросы писать sql-ские, чтобы получить данные?
    Вы, молодой человек, помоенму не понимаете суть проблемы. В данном случае имеет место быть сайт. На нем страничке в пхп, куда выводятся данные из майадмина. Все довольно просто. Сложность в том, чтобы облегчить поиск данных пользователю.
    Я уже честно говря вам запарился объяснять.
     
  12. kostyl

    kostyl Guest

    RelictX
    елси ты выбираешь из базы данных то этот запрос гдето написан, а если он гдето написан - то его никто писать не будет, а если он выводит данные то он написан в скрипте, и изменять его может скрипт а пользователи нажимают кнопки, которе ты - с высшим образованием не может никак сделать как тебе предлогали выше....
     
  13. RelictX

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

    С нами с:
    17 окт 2008
    Сообщения:
    58
    Симпатии:
    0
    Адрес:
    Казань
    мда... у меня нет слов. Пожалуйста, флаг вам в руки, если вы умнее всех здесь собравшихся. А у меня больше не хватает терпения вам объяснять суть проблемы.
     
  14. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Ну, во первых asc и desc это не средства пхп, это средства sql. Во-вторых, в asc и desc можно указать несколько полей, это не проблема. В третьих, а если у тебя сортировка по трем столбцам и на одном из них ты нажимаешь кнопку, у тебя должен быть desc на одном и asc на остальных?
     
  15. RelictX

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

    С нами с:
    17 окт 2008
    Сообщения:
    58
    Симпатии:
    0
    Адрес:
    Казань

    Данные мы не вводим сами, они берутся из ранее созданной базы в PhpMyAdmin.

    1) Каждый столбец должен иметь название, тобишь <thead>
    2) По нажатию на название, столбце под названием соритируется по ASC, по нажатию второй раз - по DESC. и т.д.
    3) Остальные поля сортируются в зависимости от сортировки того столбца, который мы сортируем.

    Ну вот допустим:
    Имя - должность - год рождения
    Макс - кодер - 22.03.1986
    Серега - читер - 21.01.1986
    Петр - ламер - 11.11.2000

    Сортируем по 3-ему столбцу, тоесть по дате рождения:
    Серега - читер - Серега - читер - 21.01.1986
    Макс - кодер - 22.03.1986
    Петр - ламер - 11.11.2000

    Нажимаем еще раз на год рождения:
    Петр - ламер - 11.11.2000
    Макс - кодер - 22.03.1986
    Серега - читер - Серега - читер - 21.01.1986
     
  16. RelictX

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

    С нами с:
    17 окт 2008
    Сообщения:
    58
    Симпатии:
    0
    Адрес:
    Казань
    Пробывал js скрипты, к примеру sorttable.js от Stuart Langridge
    Скрипт то вроде правильный, но у меня почему сортирует неправильно.
    Возможно у меня дата не такого формата, не те символы разделения.
    Но ведь имена тоже сортируются не правильно.
     
  17. kostyl

    kostyl Guest

    А скрпит в начале темы - это что не вывод данных, давай ты не будешь тупить тут, тебе люди говорят что делать, а ты не понимаешь и говоришь ерунду...

    Это сортируется как раз тем чем я тебе говорю..ю
     
  18. obsrv

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

    С нами с:
    2 окт 2008
    Сообщения:
    238
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    RelictX
    Послал.
    я посмотрю еще у себя.
    В принципе, в сортабле надо лезть в код и лечить сортировку дат. Я точно помню - делал. Но вот где теперь - все оно?! :(
    Буду пробовать найти.
     
  19. RelictX

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

    С нами с:
    17 окт 2008
    Сообщения:
    58
    Симпатии:
    0
    Адрес:
    Казань
    Код в начале топа, это код наполовину мой и моего одногруппника. Я дорабатываю его дело.
    Ерунду я не пишу, а лишь пытаюсь узнать совета. Твои ламерские аск и деск не руляд. Свали по хорошему.
     
  20. RelictX

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

    С нами с:
    17 окт 2008
    Сообщения:
    58
    Симпатии:
    0
    Адрес:
    Казань
    Спасибо еще раз, попробую сам начать изучать яву, все равно понадобитсья) Если что, пиши)
     
  21. Mete0

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

    С нами с:
    18 дек 2006
    Сообщения:
    272
    Симпатии:
    0
    Адрес:
    Gatchina
    RelictX

    Сделай как тебе говорят, не страдай ерундой.
    Сделай событие onclick() на необходимые поля, а далее передавай скрипту необходимые данные, которые он использует для сортировки.

    Например, скрипт будет принимать такие данные:
    PHP:
    1. <?php
    2. $fields = array('post','date');
    3. $field = isset($_REQUEST['field']) && in_array($_REQUEST['field'], $fields) ? $_REQUEST['field'] : 'name';
    4. $sort = isset($_REQUEST['sort']) && $_REQUEST['sort'] == 'DESC' ? 'DESC' : 'ASC';
    5. ?>
    а далее запрос:

    PHP:
    1. <?php
    2. $q = mysql_query("SELECT * FROM `table` ORDER BY `$field` $sort");
    3. ?>
     
  22. kostyl

    kostyl Guest

    RelictX чувак ты короче сначала пишешь что вы не выводите а потом пишешь что выводите - это что по твоему не ерунда... ламерские аск и дэск пользуются почти во большинстве веб приложений, так что давай по хорошему - признай что ты нифера не хочешь понимать, а по плохому - мне вобще пофих - люди видят... и твой джава скрипт пользователь отключит и нифига работать не будет - ха_ХА

    ps короче я еще его должен уговаривать сделать правильно - мистер добряк бугога
     
  23. RelictX

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

    С нами с:
    17 окт 2008
    Сообщения:
    58
    Симпатии:
    0
    Адрес:
    Казань
    Зайдите все на майл.ру, в допустим раздел входящие сообщения.
    Видите АВТОР, ТЕМА и т.д.? нажмите, вот соритировка.
    Моя база данных на сайте примерно такая же, мне необходимо сделать вот такие заголовки с сортировкой. Они юзают ява скрипт.
    Вот его, этот скрипт я и ищу.
     
  24. Mete0

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

    С нами с:
    18 дек 2006
    Сообщения:
    272
    Симпатии:
    0
    Адрес:
    Gatchina
    Там не используется javascript для сортировки содержимого, там всего-лишь гиперссылка (при нажатии на неё данные передаются скрипту, страница "перезагружается").
     
  25. RelictX

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

    С нами с:
    17 окт 2008
    Сообщения:
    58
    Симпатии:
    0
    Адрес:
    Казань
    Mete0

    Вот мой запрос.

    PHP:
    1. $sql="SELECT teachers.id as t_id,famil,teachers.name as tname,otch, birthday,schools.name as schl, category.name as cname, subject.name as sname,kursinfo.kursplan,kursinfo.kursdate,kursinfo.skill, rayons.name
    2.          FROM
    3.                       rayons,
    4.                       teachers left join schools on teachers.school=schools.id,
    5.                       (kursinfo left join subject on kursinfo.subject=subject.id)
    6.                       left join category on kursinfo.category=category.id
    7.          WHERE  ((teachers.id=kursinfo.tid) and (rayons.id=teachers.rayon))";
    Данные выводятся в табличку.

    Теперь на форме, каждому заголовку присвоим значение оnlick. Соответственно, каждому заголовку придется делать такой же запрос, с order by ASC,DESC. И присваивать $result=mysqli_query($_SESSION['link'],$sql);
    Так?

    Теперь каким образом будет меняться последовательность ASC, DESC?