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

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

  • Trej Gun

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

    Spritz 11 ноября 2008 г. 16:15, спустя 5 минут 56 секунд

    обьясните плз челу почему линк на конекшн к бд не надо хранить в сессии
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

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

    relictx, и я, и AlexB тебя просили показать запрос! Один запрос, а не стотыщмильенов строк кода.
  • relictx

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

    Spritz 11 ноября 2008 г. 17:01, спустя 42 минуты 46 секунд

    Извените, я немного вас не понял, какой именно запрос нужен. Обещаю исправиться)

    Итак,

    LIMIT:
    LIMIT ".$page*$count_on_page." , ".$count_on_page;


    Вместо всех 8000 записей, получилось только 20. Непонятно зачем так делать(
    Заливаю файл на сайт, запускаю, ставлю сортировку по ASC, переключаю на вторую страницу.
    Запрос при таком раскладе:

    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)) order by famil ASC limit 0 , 20

    Страница не переключилась. Правильно?



  • AlexB

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

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

    Ну а почему, у тебя на второй странице
    0,20
    когда должно быть
    20,20

    значит что-то не то с $page, смотри что там
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

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

    Вместо всех 8000 записей, получилось только 20. Непонятно зачем так делать(

    Хотя бы из соображений быстродействия. Большая разница, 8к записей вытаскивать и перебирать, или 20.

    Страница не переключилась. Правильно?

    Конечно не переключилась. Чтобы она переключилась, должно быть LIMIT 20, 20.

    LIMIT ".$page*$count_on_page." , ".$count_on_page;

    Вообще-то, формула LIMIT ".($page*$count_on_page - $count_on_page)." , ".$count_on_page;
    То есть у тебя должно получиться LIMIT 2*20 - 20, 20.
  • AlexB

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

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

    sap, только надо оговорить, что такая формула нужна при нумерации страниц начиная с 1
    а такая как есть при нумерации с 0
    а то совсем запутаешь его.
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

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

    AlexB, ну да, но я еще не видел, чтобы страницы (если они нумеруются именно как порядковые, 1 2 3 … n), начинались с нулевой :)
  • relictx

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

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

    Сейчас пишу из дома, завтра с утра буду опять мучать код)

    $count_on_page  ведь мы задаем сами в начале программы, правильно?
    $page я посмотрю, наверно что то не так.

    ЗЫ: Спасибо что помогаете, я бы сам наверно еще долго сидел)


    AlexB, ну да, но я еще не видел, чтобы страницы (если они нумеруются именно как порядковые, 1 2 3 … n), начинались с нулевой :)


    Он наверно имел ввиду что по умолчанию(если самому не задать), 1-я страница будет распознана машиной, как 0-я) Тоесть примет значение нулевой.
  • AlexB

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

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


    AlexB, ну да, но я еще не видел, чтобы страницы (если они нумеруются именно как порядковые, 1 2 3 … n), начинались с нулевой :)

    Они нумеруются иногда как порядковые начиная с единицы, а в параметре передается на 1 меньше.
    В общем, тут главное чтоб формулу для LIMIT чел осмысленно выбирал.
  • relictx

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

    Spritz 12 ноября 2008 г. 10:50, спустя 16 часов 20 минут 17 секунд

    Все, сделал LIMIT. На локалхосте тестим, работает.
    На первой странице LIMIT 0,20
    НА второй странице LIMIT 20,20

    Кидаю на сайт, запускаю, ставлю сортировку, переключаю страницу(допустим нажал на 2-ю), остаются на прежней 1-й странице. LIMIT 0,20
    Ощущение такое, что не реагирует именно на ссылку. При
    href="#"

    работает нормально, но ведь мне нужна сортировка. ПОэтому правильный
    href="?field='.$_REQUEST['field'].'&sort='.$_REQUEST['sort'].'&page='.$i.'"


    К слову, раньше пользывался другим способом. И было как то странно. У нас тут 2 инета, обычный и безлимитный(с включением проксей). При подключении к обычному инету, раьботало на сайте браузером firefox, но не работало с другими браузерами. А при ьбезлимитном инете с проксями вообще ни на одном не пахало. Пахало, в смысле переключались страницы. Я уже совсем запутался, помогите…
  • relictx

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

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

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

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

    Spritz 12 ноября 2008 г. 12:33, спустя 59 минут 43 секунды


    У меня корявый код разбивки по страницам был.
    Что ты подразумеваешь под "кодом разбивки по страницам"? Кусок который рисует цифирки страниц или который выводит данные?


    Переписал код, теперь вроде рульно все. Получается что ошибка в этом. Может глянете? На второй странице
    Ты думаешь тут у всех вcтроенный транслятор в голове? Что было не так можешь найти только ты, на конкретной машине, с конкретными настройками. Мы можем только ответить на те или иные локализованные вопросы. И потом, если теперь "вроде рульно все" значит ты знаешь, что ты поправил?


    И как вывести потом все значения, а не 20 например?
    А зачем выводить все? Смысл? Тебе не кажется, что задачи "сделать постраничное разбиении" и "вывести все" противоречивы априори? Тут уж надо определяться, либо крест снять либо штаны надеть.

    И наконец, зачем ты пишешь & amp; в урлах? Достаточно просто &

  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 12 ноября 2008 г. 12:34, спустя 1 минуту

    $_REQUEST['field']

    Используй $_GET и $_POST.

    Так я не понял, проблема решена или нет?
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 12 ноября 2008 г. 12:35, спустя 1 минуту 16 секунд

    И наконец, зачем ты пишешь & в урлах? Достаточно просто &

    AlexB имел в виду, зачем ты пишешь & amp; вместо просто &
  • relictx

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

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

    Переделал, а точнеее полностью изменил код(может не правильно выразился когда сказал "разбивки по страницам"), которые рисует цифры и назначает ссылки. Просто пока не могу понять, где там загвоздка, и почему он не регагирует на ссылки, кроме
    #
    .
    Вывел все данные(извеняюсь, опять не правилньо выразился). а не 20 строк)
    Спасибо зп помощь, буду мучать код, которые не пашет) Хочется разобраться все таки)

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