![]() |
Разбиение каталога ссылок постранично.
Ребята, надо мне помочь :) Незная PHP тяжело на нем программировать. Я уже это понял. А изучать с самого начала много времени нужно. Ну в общем есть у меня скрипт каталога ссылок и выдается этот каталог весь на одной странице. Это очень весело, но если в каталог наберется пару сотен ссылок, то такая страница будет час открываться. Вобщем мне нужно этот каталог разбить постранично. Может объясните на пальцах и в примерах ? :biggrin: Или я вам скрипт этот вышлю для корректировки. Заранее благодарен.
|
А эти ссылки где хранятся? В БД (MySQL), или в отдельном файле, или еще как?
|
Ссылки хранятся в базе MySQL.
|
тада все просто ... определяеш количество саписей в таблице, делаеш сапрос и укасиваеш w нем интервал с откуда по куда ...
вот пример: SELECT * FROM table LIMIT 10 , 20 патом пишеш на странице линки на все страници ... пример линка: <a href=index.php?page=10>10</a> и собсна все ... |
Гораздо проще будет так сделать.
Допустим 5 страниц, в каждой по 20 линков. Внизу странички где-нить цикл, выводящий список страниц. PHP код:
PHP код:
В качестве скрипта используй то, что есть там, только сам запрос слегка модифицируй: PHP код:
Вот, вроде так. Если что, не серчайте ;) |
Ребята, спасибо огромное, я попробовал разобраться, но не выходит ничего. Может быть я код кину а вы посмотрите. Вот он
PHP код:
|
mihas
Ну а в чем трабла, мой пост присобачь к своему и все ок будет. В первом коде link.php - адрес страницы каталога. Его замени. Добавь его после @mysql_close(); Во втором коде ничего менять не надо, пихни его после include "config.inc"; ну а третий код, вот для твоего случая: $db_query = @mysql_query("SELECT * FROM $tb_linex"); замени на $db_query = @mysql_query("SELECT * FROM $tb_linex LIMIT 20, ".$start); |
SergoZD
Спасибо за помощь. Трабла в моем практически полном незнании PHP :biggrin: Сделал все как ты сказал, появились внизу страницы, но ссылки пропали. Дает ошибку Цитата:
Цитата:
|
Исправь так попробуй:
$start=($i-1)*20; и $sql_query="SELECT * FROM ".$tb_linex." LIMIT ".$start.", 20"; $db_query = @mysql_query($sql_query); |
Вот гад, не хочет. Та же ошибка, но на конце
Цитата:
|
а у тебя там в таблице есть хотя бы 20 линков?
Можешь дать ссылку на страницу эту, если она в нете? Я с mysql пока ещё оч. мало успел поработать, поэтому не совсем разобрался в тонкостях синтаксиса, пока не соображу в чем трабла. |
Хм... Замени
$start=($i-1)*20; на $start=($id-1)*20; Цитата:
|
О. Вот это уже по моему оно. Спасибо ребята. Очень благодарен, правда. Только последний вопрос, заключительный. Вот эта ссылка
Цитата:
Цитата:
|
echo "<a href=http://страница..ру/base.php?ssilka=link&id=".$i.">Страница ".$i."</a>";
Важно проследить, чтобы этот переменная id не использовалась в других скриптах на странице, если где-то ещё встречается, то замени на другую. |
Ага, почти нормально. Переменная id нигде не используется, уже просмотрел. Только я что то не пойму. В данном случае количество ссылок на страницу 20? Ведь так понял? Если да, то у меня что то не выходит. Я меняю 20, например на 2, на первой странице 2 ссылки и на втрой эти же 2 и т.д.
Т.е. на всех страницах одно и то же. |
Если смотреть на код, то такого в принципе не должно быть. Mihas, нужны уточнения:
1) Ссылки на сгенеренной странице имеют вид: Цитата:
|
Так точно. Только в одну строчку а не друг под другом, что не принципиально. И ссылки формируются правильно, т.е. в конце ссылки Страницы 1 id=1, страницы 2 id=2 и т.д.
Но при нажатии страница с ссылками не меняется, на всех страницах одно и тоже. Даже если все оставить как есть, т.е. с 20, все страницы одинаковы. |
mihas
Фишка в проверке валидности id Замени PHP код:
PHP код:
|
А! Доперло! Вот здесь исправляй:
Вместо: PHP код:
PHP код:
|
:idontnow: к сожалению ничего не изменилось.
Вот черт, ни так, ни так не работает. |
Уффф... Запусти
PHP код:
|
Переменная не определена.
|
Да, кстати, какая версия php? (нужно запустить phpinfo())
PS: Сейчас решил быстро все это проверить на своем сайте. Думаю, ошибка будет найдена окончательно и бессповоротно. |
Версия 5.0.4
в принципе если нужно, то давай я весь скрипт сброшу, может быть так проще будет |
PHP код:
|
Ничего не понимаю. Но я точно делаю все правильно. При таком раскладе я получаю сообщение переменная не определена и к этому все ссылки пропали. Нет вообще ни одной не на одной странице.
Стоп стоп, я лоханулся немного, сейчас еще попробую. Нет, все равно все по старому. Переменная не определена, и содержимое страниц одинаково, одни и те же ссылки на всех страницах. |
Так, если ты думаешь, это все проблемы, то ты глубоко ошибаешься. :) Было бы грамотно знать, сколько ссылок типа "Страница 1, Страница 2, ..."нужно генерить, чтобы получить на выборку все возможные ссылки, ведь число ссылок может измениться.
Нам поможет такой запрос к базе данных: Цитата:
заменой Цитата:
Цитата:
Цитата:
|
mihas
Открой ссылку /base.php?ssilka=link&id=1 И скажи что написалось. "Переменая не определена"? Со ссылками потом разберемся, это одно из самых простых, просто на момент текущих изменений они не будут отображаться. Главное сейчас разобраться, как это id передавать от страницы к странице. |
Так, по порядку, код из лички запустил, получил следующее
Цитата:
Вот тут Цитата:
Все сделал. Теперь выходит, что есть только первая страница. Например у меня 3 ссылки, я меняю в коде 20 на 2, должно быть 2 страницы, но показывает только одну с двумя ссылками. |
Цитата:
Цитата:
|
Нет. Есть только надпись Страница 1 с двумя ссылками, надписи страница 2 нет вообще. Если же в адресной строке браузера набрать ссылку на вторую страницу , т.е. в конце id=2 опять же ничего не происходит, вторая страница полностью идентична первой, одинаковое содержимое.
Ой, я тебя не понял, ты про тот код, что в личку скинул. Да, там все работает, при нажатии на страницы идет переключение. А может быть сама ссылка сформирована не правильно Цитата:
|
Ну тогда у тебя все данные для решения поставленной задачи уже есть. Смотри:
1) Есть код, который генерит правильные ссылки (см. мой код в личке или код SergoZD) 2) Переменная $id точно проходит через нашу многострадальную проверку валидности как надо (это потверждается надписями "Эта страница 1", "Эта страница 2"...) 3) переменная $start=20*($id-1) принимает значения 0, 20, 40... (а с чего бы ей их не принимать?) Если все это соединить воедино, то запрос Цитата:
Ищи ошибку и делись своими идеями. Цитата:
|
Все. Я все понял. Ты прав на все 100. Проблема в этой ссылке. Вот только как исправить. Надо было сразу весь скрипт выкладывать. Незнаю как объяснить. Короче это система автоматического обмена ссылками. Этот файл с которым мы воевали, находится на центральном сервере. На сайтах, которые регистрируются в системе обмена линками лежит маленький php файл, который забирает информацио с центрального сервера и таким образом формирует каталог. Поэтому и ссылка такая. Незнаю понятно ли я объяснил. Давай я тебе на мыло скрипт кину, так понятнее будет.
|
| Часовой пояс GMT +4, время: 08:05. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.