ФорумПрограммированиеPHP для идиотов → Постраничный вывод+сортировка

Постраничный вывод+сортировка

  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz 11 ноября 2008 г. 12:25

    Здравствуйте! У меня вопрос в следующем:
    Подключаюсь к базе, вывожу данные(окола 8000 строк, несколько столбцов). Сделал постраничный вывод, сортировку по нажатию на заголовки по ASC и DESC. Как сделать так чтобы, при сортировке того или иного сотлбца и нажатии на 2-ю, 3-ю и т.д. страницы, сортировка сохранялась? Спасибо!
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 11 ноября 2008 г. 12:34, спустя 9 минут 30 секунд

    Два варианта:
    1. Передавать в параметре каждый раз по какому столбу сортировать.
    2. Хранить имя столбца в сессии.
  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz 11 ноября 2008 г. 12:43, спустя 8 минут 39 секунд


    Два варианта:
    1. Передавать в параметре каждый раз по какому столбу сортировать.
    2. Хранить имя столбца в сессии.


    Передаю столбец и вид сортировки ссылке(номеру страницы):
    href='.$_SERVER['PHP_SELF'].'?field='.$_GET['field'].'&sort='.$_GET['sort'].'&page='.$i.';


    Результата нет, переключаются страницы, значения столбцов и сортировки передаются, но сами строки остаются прежними. Тоесть визуально 1-я страница и остается. Не понимаю в чем может быть дело.
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 11 ноября 2008 г. 13:04, спустя 21 минуту 12 секунд

    Ну а SQL запрос распечатать и выполнить отдельно не пробовал?
  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz 11 ноября 2008 г. 13:10, спустя 5 минут 57 секунд


    Ну а SQL запрос распечатать и выполнить отдельно не пробовал?

    SQL запрос правильный. Там проблем нет)
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 11 ноября 2008 г. 13:12, спустя 2 минуты 7 секунд

    Как это, интересно? SQL запрос выдает данные для 2-ой страницы, а скрипт все-равно рисует первую? Не верю …
  • disc

    Сообщения: 843 Репутация: N Группа: Джедаи

    Spritz 11 ноября 2008 г. 13:16, спустя 3 минуты 16 секунд

    видать проблема с LIMIT раз рисует первую страницу, SQL запрос в студию.
  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz 11 ноября 2008 г. 13:18, спустя 1 минуту 56 секунд


    Как это интересно? SQL запрос выдает данные для 2-ой страницы, а скрипт все-равно рисует первую? Не верю …

    Эмм… у меня один SQL запрос, выводящий всю базу данных. Так и должно быть ведь?!) Или вы про ли LIMIT сейчас хотите сказать?
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 11 ноября 2008 г. 13:18, спустя 55 секунд


    Эмм… у меня один SQL запрос, выводящий всю базу данных. Так и должно быть ведь?!) Или вы про ли LIMIT сейчас хотите сказать?
    Конечно, не должно так быть. Конечно надо использовать LIMIT.
  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz 11 ноября 2008 г. 13:19, спустя 27 секунд


    видать проблема с LIMIT раз рисует первую страницу, SQL запрос в студию.


                    
    $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
                 FROM
                     rayons,
              teachers left join schools on teachers.school=schools.id,
              (kursinfo left join subject on kursinfo.subject=subject.id)
    left join category on kursinfo.category=category.id
    WHERE ((teachers.id=kursinfo.tid) and (rayons.id=teachers.rayon))";


    Могу обрисовать картину более подробно, с постраничным выводом и реализацией сортировки если нужно.
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 11 ноября 2008 г. 13:25, спустя 5 минут 50 секунд

    Да чего тут обрисовывать.
    Тебе надо в конце запроса написать LIMIT $страница*$число записей на странице, $число записей на странице
    Надеюсь поймешь, что русские слова надо заменить на php переменные.
  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz 11 ноября 2008 г. 13:33, спустя 8 минут 18 секунд


    Да чего тут обрисовывать.
    Тебе надо в конце запроса написать "LIMIT $страница*$число записей на странице, $число записей на странице"
    Надеюсь поймешь, что русские слова надо заменить на php переменные.



    Спасибо.
    Вот так, если правильно понял:
    $sql="…LIMIT ".$page*$count_on_page." , ".$count_on_page;


    ВЫскочили ошибки, попробую разобраться…
    Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in D:\…*.php on line 452

    Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in D:\…*.php on line 465
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 11 ноября 2008 г. 13:34, спустя 55 секунд

    Запятую забыл.
    Да учти, что нумерация страниц при таком алгоритме начинается с 0
  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz 11 ноября 2008 г. 13:42, спустя 8 минут 19 секунд


    Запятую забыл.
    Да учти, что нумерация страниц при таком алгоритме начинается с 0

    Спасибо за столь быстрый ответ!
    Ошибки только вот не исчезают…
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 11 ноября 2008 г. 13:47, спустя 4 минуты 28 секунд

    Ну дык опять печатай запрос, пробуй выполнить отдельно, смотри что в нем за проблема.
    Только так и отлаживаются приложения.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!