Jarlyk
Помогающий
Offline
|
|
« : 04-12-2004 10:20 » |
|
Есть сайт: http://jarlyk.h12.ruХотелось бы, чтобы на сайте все новости по достижении 10 добавлений автоматически делились на страницы и появлялись ссылки на предыдущую страницу или следующую. Перепробовал кчу вариантов, но все как-то не получается...
|
|
|
Записан
|
Бедные маленькие мышки плакали и кололись, но все равно продолжали жрать кактус.
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #1 : 04-12-2004 11:42 » |
|
полагаю, что новости хранятся в БД Тебе нужно получить число новостей. Если оно больше 10, то рисовать номера страниц, если меньше - не рисовать. Номера страниц часто делают в виде ссылок (тег <a>), где в href пишется что-то вроде news.php?page=3 для каждой страницы. Тебе нужно по запросу пользователя формировать такой select к базе данных, который выбирает новости по десяткам. с 1 по 10, с 11 по 20 и т.д. для каждой страницы. Понятно, что номера страниц однозначно определяют, какие по счёту новости нужно вывести на текущей странице. Запрос очень зависит от СУБД. Если самих страниц много, что аналогичным способом осуществляется прокрутка списка страниц. Если ты много чего пробовал, и не получается, то проблема не в том, что ты не понимаешь механизма формирования страниц. Проблема в чём-то другом. Сформулируй вопрос точнее .
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Jarlyk
Помогающий
Offline
|
|
« Ответ #2 : 04-12-2004 19:26 » |
|
Прошу прощения, но на БД мои познания еще не распространяются. Хотелось бы как-нибудь без этого...
|
|
|
Записан
|
Бедные маленькие мышки плакали и кололись, но все равно продолжали жрать кактус.
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #3 : 05-12-2004 18:31 » |
|
а как у тебя новости хранятся, добавляются и удаляются?
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Jarlyk
Помогающий
Offline
|
|
« Ответ #4 : 05-12-2004 20:53 » |
|
все новости хранятся в одном файле - news.php вообще сайт я сделал по статье МОРОЗа (где-то здесь же на форуме лежит) частично изменил, частично добавил и т.д. вот теперь и совершенствую его
|
|
|
Записан
|
Бедные маленькие мышки плакали и кололись, но все равно продолжали жрать кактус.
|
|
|
Dracul
|
|
« Ответ #5 : 06-12-2004 04:14 » |
|
Jarlyk, тебе надо зделать вот чего: Файл news.php, будет собирать новости из папки. То есть в определенной папке (папках), будут храниться файлы (текстовые, можно html разметкой), твой скрипт будет их собирать в единую страницу, с помощью include. Сам скрипт запишу попозже, сечас просто времени тю-тю...
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #6 : 06-12-2004 08:32 » |
|
Прошу прощения, но на БД мои познания еще не распространяются. Хотелось бы как-нибудь без этого... С БД или без, неважно. Димка предложил тебе решение и реализовать его можно и без бд.
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Dracul
|
|
« Ответ #7 : 07-12-2004 03:57 » |
|
Вот обещанное: <?php $dir=opendir("ПУТЬ К ДИРЕКТОРИИ, В КОТОРОЙ ХРАНЯТСЯ НОВОСТИ"); while ($fail=readdir($dir)) { if (($fail!=".")&&($fail!="..")){ $arrNow[]=$fail; //Если нужно ограничение, то вставь здесь счетчик, который подсчитает, сколько всего файлов с новостями (а значит и всего новостей) }} closedir($dir); rsort($arrNow); foreach ($arrNow as $Val){ print "<br>"; include("new/new/$Val");} ?> Где ни будь зделай условный оператор, который и будет разделять, в зависемости, от значения счетчика.
Файлы для новостей - любые, то есть если ты поместишь здесь рисунок иль папку, они будут выведены тоже...
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #8 : 07-12-2004 07:41 » |
|
Dracul, ИМХО плохое решение. Представь что файлов соберётся много. Каждый раз их парсить будет затруднительно. Всё же лучше с базой сделать.
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Jarlyk
Помогающий
Offline
|
|
« Ответ #9 : 07-12-2004 20:21 » |
|
Dracul, спасибо, временно так и сделаю =) MOPO3, теперь жду-недождусь обещанной статьи по БД! понятно объясняешь, как раз для ленивых и немного туповатых... Кстати, люди, никто не знает где скачать хороший учебник по РНР? Скачал уже штук 20 самых разных, но все они или слишком поверхностно, или слишком непонятно пишут...
|
|
|
Записан
|
Бедные маленькие мышки плакали и кололись, но все равно продолжали жрать кактус.
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #10 : 08-12-2004 07:40 » |
|
Jarlyk, вот тут поищи : http://forum.ru-board.com в разделе Варезник Насчёт статьи, затормозил я, сорри :oops: К понедельнику постараюсь выложить в форум отредактированую первую статью и вариант второй статьи.
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Dracul
|
|
« Ответ #11 : 09-12-2004 04:02 » |
|
MOPO3, я бы с удовольствием написал, чего получьше но не умеем, мы только учимся, я так с базами данных разобраться и не могу (тупой наверное), а вот если ты статью напишешь, то честь тебе и хвала...
|
|
|
Записан
|
|
|
|
[BiOs]
Гость
|
|
« Ответ #12 : 07-04-2005 07:01 » |
|
предлагаю свое решение этого вопроса на мой взгляд самое простое... Кстати советую перебраться всеже на БД. Файлы (особенно когда их будет много) будут не самым удобным решением. $post_on_page=10; //записей на страницу $total_record=1287; //всего записей в базе $links=Array(); //массив в который запишем ссылки
//определяем кол-во страниц $page_count if ($total_record%$post_on_page > 0) {$page_count=floor(($total_record/$post_on_page))+1;} else $page_count=($total_record/$post_on_page); //получаем номер страницы с которой начинать выборку $begin if (!$_GET['page'] or $_GET['page'] < 0) {$cur_page=1;$begin=0;} else {$begin=$_GET['page']-1;$cur_page=$_GET['page'];} //устанавливаем параметры начала для ссылок на страницу $start $start=$begin*$post_on_page;
//выбираем ссылки и упаковываем в массив for ($i=1;$i<=$page_count;$i++) { if ($i==$cur_page) {$add_link=" $i ";array_push($links,$add_link);} //если мы смотрим на текущую страницу то ее не подсвечиваем else {$add_link=" <a href=?page=$i>$i</a> ";array_push($links,$add_link); } //ссылки на другие страницы }
$query="select * from test where clause limit $start,$post_on_page"; print "$query<br>";
//выбираем из массива ссылок текущую ссылку, 2 предыдущих и две следующих...
$links_page=$cur_page-1; //номер ссылки на страницу в массиве ссылок
//выводим ссылку на 1 страницу если ее уже не видно if ($cur_page>=4) {print "<a href=?page=1>1</a> <b><</b> ";}
//выводим две предыдущих for ($i=2;$i>=1;$i--) { $param=$links_page-$i; print $links[$param]; }
//выводим текущую страницу print $links[$links_page];
//выводим две следующие ссылки for ($i=1;$i<=2;$i++) { $param=$links_page+$i; print $links[$param]; }
//выводим ссылку на последнюю страницу если ее еще не видно или если это не она if ($cur_page<= $page_count-3) {print " <b>></b> <a href=?page=$page_count>$page_count</a> ";}
|
|
« Последнее редактирование: 20-12-2007 20:45 от Алексей1153++ »
|
Записан
|
|
|
|
RXL
|
|
« Ответ #13 : 08-04-2005 23:38 » |
|
[BiOs], пользуйся форматированием - теги code крайне полезны - иначе читать код напряжно и лениво.
|
|
« Последнее редактирование: 08-04-2005 23:59 от RXL »
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
|