AlexAnder
Я сам не использую куки ) но авторизацию на куках сделать вполне можно и так же проверять ее на isset как и сессию... Конечно же сессия предпочтительнее, на мой взгляд... потому мои примеры построенны именно на ней...
У навигации есть определенный функционал, который в дальнейшим уже вряд ли будет меняться, один раз написать нормальный класс/функцию навигации, и использовать его уже везде где надо...
Согласен ) Если честно, исходя и темы данного топика, я написал этот мини скрипт с целью освоения принципа работы постраничной навигации. Ведь до сегодняшнего дня я не очень его понимал... Это была своего рода тренировка для меня....
vanicon пишет:
Нет, это класс DeepVarvar'a, который он написал и использует в свой cms, смотри его подпись...
Теперь понятно, спасибо )
DeepVarvar
А можно посмотреть исходники данного класса?
LIME
Ну да, ну да... Тут я думаю нет единого решения. Все опять же от вкуса зависит. Но в идеале то да, нужно предусматривать всё, если нам нужен мощный пагинатор... Но опять же, учитывая возможноси PHP я думаю что можно решить более чистым кодом чем в примерах гугла, тут всё уже от креативности писаки зависит я думаю...
DeepVarvar пишет:
Повторюсь
Честно говоря не очень понял... 1. Класс paginator это встроенный в PHP класс? А то его описания я по ссылке не нашел. 2. Или это просто "идея" описана ? 3. Если встроен, то с какой версии PHP? У меня не находит пых такой класс... Версия 5.3
А ты не подумал что "грязный" код как-то похож на то что ты предлагаешь?
Совсем нет ) одно дело 1 раз написать $page = $page +/- 1; а другое дело напиши в гугле "постраничная навигация" и "довольствуйся" примерами Тоесть если например страниц больше 50, останавливаем дальнейшию генерацию страниц и просто добавляем кнопку далее.
Если на сайте только в одном разделе будет 1253 страниц каждая из которых будет содержать по 15 статей, то вот сколько статей в общем нужно будет написать/заказать 18795. Потому и я назвал эту цифру неадекватной ) с таким контентом, если к примеру писать статьи про php, можно в поисковой выдаче мануал обогнать )
А вот если это форум, то кнопку далее нужно будет сделать обязательно, ибо при популярных темах посты плодятся с неадекватной скоростью... Но опять же, даже на этом форуме столько постов в одной теме я не наблюдал...
Более того, можно на главную страницу выводить и 20 статей, но показывать далеко не все, что бы не испортить визуальный вид страницы. А сделать так: показали 200 символов, остальное записываем в "Подробнее"... Пусть кликает, дочитывает, комментирует и все будут счастливы )
LIME
1253 - неадекватная цифра ) если статей много, то можно увеличить кол-во выводимых статей на 1 странице. Если сейчас оно у меня равно 5, то можно сделать 15 и значительно сократить эту цифру. Ну а если более серьезно подойти к этому делу, тогда можно например сделать кнопочку "На последнюю", или "далее" либо "назад", где просто $page = -1 или +1 - не более... - Два варианта пока предполагаю, второй конечно же при цифре 1253 предпочтительнее...
А громоздить код так, что бы он состоял из 100500 таких кусков, который я описал выше, до того как опубликовать свой код, считаю не правильным...
- и такие проверки с кучей запутанных $page +/- 1/2 просто действовали на нервы...
Вообщем слепил свой велосипед, на мой взгляд намного адекватнее по коду, чем подобные примеры.
Скрипт работает так - приходим на страничку, сразу отрисовывается нужное кол-во страниц в зависимо от кол-ва статей в БД. Если не считать всякие выводы и <br>, то скрипт состоит всего навсего из 8 строк логики для постраничной навигации. Упрощал как можно больше
Просьба оценить код и возможно даже покритиковать:
ну так и меняй по кнопке #start и $stop в ту или иную сторону
Это все понятно, как переключать странички, но вопрос в другом. Не доходит до меня то, как правильно вывести в цикле количество требуемых страниц(а именно какое условие нужно задать и почему) и как так получается, что при нажатии например странички 3, LIMIT меняется на 20, 30 и отдается пользователю именно при нажатии кнопки "3". - Какое условие задать, я не догоняю...
Принцип понимаю почти до конца, только с выводом проблемы, а именно плохо понимаю поведение данного скрипта....
Надеюсь я доступно объяснил суть моего непонимания )
Всем привет. Знаю что тема заезженная и существует много готовых решений и статей, но у меня вопрос заключается немного в другом... Очень хочу понять полностью алгоритм. Вот просидел сегодня очень долго, что то понял, а что то не очень. Итак, приступим:
Разделим структуру моего понимания алгоритма данного скрипта на две части:
1. Понял:
- Переключение страничек происходит при помощи $_GET параметра
- Нужно изначально узнать общее количество заметок в БД ( как этим воспользоваться - не очень понимаю)
- Использовать цикл for для автоматической генерации новых страничек при необходимости.
- Нужно составить SQL запрос для выборки определенного количества заметок на страницу, пусть в данном случае это количество будет равно 10.
$result=$db->query("SELECT article FROM articles LIMIT $start, $stop");
2. Не понял:
- Как и где именно нужно воспользоваться общим количеством заметок, котрые мы получаем при помощи вышеуказанного запроса(положить в переменную то понятно, а что дальше?).
- Как правильно использовать цикл for для генерации новых страничек 1 2 3 и т.д только при необходимости?
- И как сделать, что бы если нажали кнопку 2, то что бы в браузер уже выводились следующие 10 заметок. Полагаю что нужно менять LIMIT 10, 20 и так далее. Ну не буду же я это в ручную постоянно делать. Но как мы узнаем, что выбрана страничка номер 2 и нужно изменить значения LIMIT-а в запросе? И именно там, где это нужно. Тоесть что бы остальные статьи, где LIMIT 10, 20 показывались уже на второй страничке. if-ом проверять не дело каждый раз, а то опять получается что вручную... Но чую можно как то довести это дело до автоматизма. Тоесть как скрипт понимает, что нужно сгенерировать следующую страничку и положить туда не что попало, а именно следующие 10 заметок
Если кто то знает ответы на мои вопросы, пожалуйста ответье на них. Буду очень благодарен. Повторюсь, статьи читал, готовые решения видел, везде все по разному, ответы на свои вопросы так и не нашел. От объяснения много что зависит, поэтому прошу объяснить как можно доступнее, буду очень рад и признателен!
А тем временем вот "шаблон", который я набросал...
first
Это уже от вас зависит... Если почувствуете, что наступает взрыв мозга и все что вы видите и слышите никак не запоминается и вы ничего не понимаете, отдыхайте... Как почувствуете настрой учиться дальше - смотрите дальше. Если что то непонятно - пересматривайте урок вплоть до того, пока не поймете. Это может быть и час и 5 часов...
И это... если вы не знаете HTML, то начните для начала с него. Есть так же уроки "Специалист HTML и CSS". Посмотрите хотя бы до 5 урока. А дальше можете отбросить.
Ещё есть "Специалист HTML и CSS. Кроссбраузерная верстка" - это не качайте, если вы только начали обучение, то ничего не поймете из этого курса.
first
Качайте с торрента видеоуроки от Специалиста. Объясняет очень доступно, разжевывает каждую функцию более чем надо и с примерами. За одно познакомитесь с SQL и системой управления базой данных, что очень важно в PHP. Если не получится установить Apache + PHP + MySQL, качайте программу denwer, это связка перечисленного.
Примеров и заданий там более чем достаточно. После изучения каждой функции или определенной связки функций следует задание. Если не можете решить сами - далее в видеоуроке увидите решение. Можете так и написать в гугле "Скачать Специалист PHP уровень 1, 2, 3, 4 торрент".
Постепенно уже так и происходит ) Но все же считаю себя не опытным... хочется повидать много всяких ситуаций, где и как лучше поступить и все такое... Так процесс наверное быстрее пойдет я думаю. Делать то я делаю, уже со счета сбился сколько файлов переписал... Почти каждый день что то пишу. Обычно делаю так - хожу по сайтам, вижу какую то фишку, стараюсь такую же написать самому.. Обычно получается, иногда приходится спрашивать здесь или читать в гугле... Но это уже не интересно. Сейчас меня интересуют не стандартные ситуации. А не то что добавить что то в БД через админку, вывести что то в цикле, обновить инфу или что то удалить и т.д - это уже особо не интересует...
LIME
Интересная мораль, спасибо ) Я вообще стараюсь изучать все как можно на лучшем уровне, только не всегда удается найти нужную информацию, учусь сам, смотрю разные видеоуроки и толковые статьи, спрашиваю здесь если что непонятно, потом сравниваю всю полученную информацию и стараюсь как то объединить информацию и получить в итоге как можно лучший результат...
Но бывают случаи, когда тупо не знаю что искать, во что вчитываться а что вообще выбросить... Обычно это касается разработки на высшем уровне... Друзей программистов у меня нет, как и близких знакомых.. Вот был бы грамотный человек, который повозился б со мной, было бы круто )
Тонкий намёк всем участникам форума(касается опытных программистов), готов разгребать вашу работу для личной практики но с вашей помощью
Пробовал ходить на курсы, дорого и зачастую не эффективно.