Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Автоматическое разделение страниц  (Прочитано 16055 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Jarlyk
Помогающий

ee
Offline Offline

« : 04-12-2004 10:20 » 

Есть сайт: http://jarlyk.h12.ru
Хотелось бы, чтобы на сайте все новости по достижении 10 добавлений автоматически делились на страницы и появлялись ссылки на предыдущую страницу или следующую. Перепробовал кчу вариантов, но все как-то не получается...
Записан

Бедные маленькие мышки плакали и кололись,
но все равно продолжали жрать кактус.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 04-12-2004 11:42 » 

полагаю, что новости хранятся в БД

Тебе нужно получить число новостей. Если оно больше 10, то рисовать номера страниц, если меньше - не рисовать.

Номера страниц часто делают в виде ссылок (тег <a>), где в href пишется что-то вроде news.php?page=3 для каждой страницы.

Тебе нужно по запросу пользователя формировать такой select к базе данных, который выбирает новости по десяткам. с 1 по 10, с 11 по 20 и т.д. для каждой страницы. Понятно, что номера страниц однозначно определяют, какие по счёту новости нужно вывести на текущей странице. Запрос очень зависит от СУБД.

Если самих страниц много, что аналогичным способом осуществляется прокрутка списка страниц.

Если ты много чего пробовал, и не получается, то проблема не в том, что ты не понимаешь механизма формирования страниц. Проблема в чём-то другом. Сформулируй вопрос точнее Улыбаюсь.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Jarlyk
Помогающий

ee
Offline Offline

« Ответ #2 : 04-12-2004 19:26 » 

Прошу прощения, но на БД мои познания еще не распространяются.
Хотелось бы как-нибудь без этого...   Вот такой я вот
Записан

Бедные маленькие мышки плакали и кололись,
но все равно продолжали жрать кактус.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 05-12-2004 18:31 » 

а как у тебя новости хранятся, добавляются и удаляются?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Jarlyk
Помогающий

ee
Offline Offline

« Ответ #4 : 05-12-2004 20:53 » 

все новости хранятся в одном файле - news.php
вообще сайт я сделал по статье МОРОЗа (где-то здесь же на форуме лежит)  
частично изменил, частично добавил и т.д.

вот теперь и совершенствую его Улыбаюсь
Записан

Бедные маленькие мышки плакали и кололись,
но все равно продолжали жрать кактус.
Dracul
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 06-12-2004 04:14 » 

Jarlyk, тебе надо зделать вот чего:
Файл news.php, будет собирать новости из папки. То есть в определенной папке (папках), будут храниться файлы (текстовые, можно html разметкой), твой скрипт будет их собирать в единую страницу, с помощью include. Сам скрипт запишу попозже, сечас просто времени тю-тю...
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #6 : 06-12-2004 08:32 » 

Цитата: Jarlyk
Прошу прощения, но на БД мои познания еще не распространяются.
Хотелось бы как-нибудь без этого...   Вот такой я вот


С БД или без, неважно. Димка предложил тебе решение и реализовать его можно и без бд.
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Dracul
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #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
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #8 : 07-12-2004 07:41 » 

Dracul, ИМХО плохое решение. Представь что файлов соберётся много. Каждый раз их парсить будет затруднительно. Всё же лучше с базой сделать.
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Jarlyk
Помогающий

ee
Offline Offline

« Ответ #9 : 07-12-2004 20:21 » 

Dracul, спасибо, временно так и сделаю =)

MOPO3, теперь жду-недождусь обещанной статьи по БД!  Улыбаюсь
понятно объясняешь, как раз для ленивых и немного туповатых...

Кстати, люди, никто не знает где скачать хороший учебник по РНР?
Скачал уже штук 20 самых разных, но все они или слишком поверхностно, или слишком непонятно пишут...   Здесь была моя ладья...
Записан

Бедные маленькие мышки плакали и кололись,
но все равно продолжали жрать кактус.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #10 : 08-12-2004 07:40 » 

Jarlyk, вот тут поищи : http://forum.ru-board.com в разделе Варезник

Насчёт статьи, затормозил я, сорри  :oops:  К понедельнику постараюсь выложить в форум отредактированую первую статью и вариант второй статьи.
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Dracul
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #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
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 08-04-2005 23:38 » 

[BiOs], пользуйся форматированием - теги code крайне полезны - иначе читать код напряжно и лениво.
« Последнее редактирование: 08-04-2005 23:59 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines