Разбитие списка новостей

Статус
В этой теме нельзя размещать новые ответы.

ZizA

Guest
Разбитие списка новостей

Помогите пожалуйста.
Изучаю ПХП недавно... по-этому программы все примитивные пока. И вот у меня возник вопрос...
Каждая новость у меня хранится в отдельном файле, которые я потом включаю циклом в index.php
Как можно сделать, чтобы выводилось на экран, например, по 20 новостей (включалось 20 файлов) ну и снизу были ссылки типа 1 2 3 4 5 и т.п.?
Может у кого есть готовый скриптик?
 

Фанат

oncle terrible
Команда форума
поиск готовых скриптиков производится в форуме оффтопик.
И уровень опыта в пхп для этого не имеет никакого значения. Не так ли?
 

ZizA

Guest
Автор оригинала: Фанат
поиск готовых скриптиков производится в форуме оффтопик.
И уровень опыта в пхп для этого не имеет никакого значения. Не так ли?
Так вот дело в чем.. мне как раз не хочется брать готовое, это в крайнем случае... Мне нужна идея ;) (алгоритм)
 

Фанат

oncle terrible
Команда форума
ну вот, так бы и писал.
для идеи тебе надо сначала прочитать все файлы в массив.
это тебе понадобится для того, чтобы узнать общее количество файлов, чтобы вывести ссылки на страницы.
А затем выводить в цикле из массива, но не весь, а только те, которые нужны.
к примеру, на первой странице выводятся файлы от 0 до 19
 

ZizA

Guest
Автор оригинала: Фанат
ну вот, так бы и писал.
для идеи тебе надо сначала прочитать все файлы в массив.
это тебе понадобится для того, чтобы узнать общее количество файлов, чтобы вывести ссылки на страницы.
А затем выводить в цикле из массива, но не весь, а только те, которые нужны.
к примеру, на первой странице выводятся файлы от 0 до 19
:( Не получается... не знаю как сделать

Вот есть у меня папка /news в ней содержатся отдельные файлы, в которых по одной новости.

Теперь, в index.php у меня вот что:

PHP:
chdir("./news"); 
$dir = opendir("."); 
$count = 0; 
while($file = readdir($dir)) { 
   if(is_file($file)) $count++; 
}
//count - число файлов в директории news
for ($x=20001-$count; $x<=20000; $x++)
{
$incfile = "news$x".".shtml";
include ("$incfile");
}
Т.е. у меня самая первая новость будет news20000.shtml и далее на убывание.

А вставка происходит наоборот, самой первой вставляется новость с наименьшим $x потом идет на возрастание... и так пока не доходит до news20000.shtml и останавливается...

В конечном итоге, если у меня 60 новостей, то они все будут на главной странице :), а мне нужно разбить на несколько, не создавай index1.php... index2.php и т.п.
Если кому не лень, ответьте!
 

Фанат

oncle terrible
Команда форума
Забавный алгоритм.
Честно говоря, я его тоже не понимаю.
что это за число такое волшебное - 20000 и зачем оно нужно.
 

ZizA

Guest
Автор оригинала: Фанат
Забавный алгоритм.
Честно говоря, я его тоже не понимаю.
что это за число такое волшебное - 20000 и зачем оно нужно.
Это первое что мне пришло в голову...

Просто это выдуманное число, это я подумал что больше чем 20000 новостей мне на сайте не надо и поставил лимит :)

Я просто начинаю идти от этого числа вниз.. и так до 0.
 

Фанат

oncle terrible
Команда форума
а просто вниз, без всяких чисел, если идти?
тебя в школе не учили считать обратно, от произвольного числа?
не 1 2 3 4, а 4 3 2 1?
чтобы сделать обратный отсчёт, нужно, по-твоему, жёстко фиксированное число?
А от $count - нельзя?
 

ZizA

Guest
Автор оригинала: Фанат
а просто вниз, без всяких чисел, если идти?
тебя в школе не учили считать обратно, от произвольного числа?
не 1 2 3 4, а 4 3 2 1?
чтобы сделать обратный отсчёт, нужно, по-твоему, жёстко фиксированное число?
А от $count - нельзя?
Да это все можно...
Мне самое главное чтобы на страницы разбить:) Как это сделать? Вот именно в моем случае...
 

Фанат

oncle terrible
Команда форума
ZizA, два вопроса.
Вычитать умеешь?
Что, по-твоему, делает оператор $x++ в твоем цикле?

Да это все можно...
Пока, как я вижу - нельзя.
пока ты и весь список задом наперед вывести не можешь.
У тебя точно есть скоипт, который выводит новости?
причем последняя вверху?
ми как он работает?
 

ZizA

Guest
Ладно.. тогда вот так... news1, news2, news3... news$x

Теперь самая свежая новость news$x и выводится она первой.. потом за ней $x-1 и т.д. Т.е. теперь все правильно :)
А вот самый главный вопрос...
Как разбить index.php на части?

index.php

PHP:
<?php
chdir("./news"); 
$dir = opendir("."); 
$count = 0; 
while($file = readdir($dir)) { 
   if(is_file($file)) $count++; 
}
for ($x=$count; $x>=1; $x--)
{
$incfile = "news$x".".shtml";
include ("$incfile");
}
?>
Скрипт работает.. я проверил ;)
 

ZizA

Guest
Автор оригинала: empty
ZizA
ты файлы в массив сумел положить?
Нет... я не понимаю как.. ну точнее не знаю :(

Ну покажите как это сделать... Плиииз :rolleyes:

Мне как раз это и нужно... ну и, собсно, что после этого сделать?
 

Eagle

Guest
Запиши файлы в массив:
$news[$i] (типа этого)

Потом введи переменную $page. Сделай так:
$page=$_GET[page] - переменная берется из заголовка.
Затем простая проверка - если, к примеру, http://mysite.com/news.php?page=3 , то печатаем новости с 40 по 60. Это делается циклом. От элемента массива 40 до элемента 60. Попробуй. Не получится - обращайся.
Для начала просто введи файлы в массив и выведи его на экран.
Я вчера делал себе как раз страницы. Правда, на mysql. Но разницы нет. Могу скинуть сюда скрипт, если нужно.
 

empty

Guest
ZizA
ты должен пройтись циклом по директории, в которой у тебя храняться файлы с новостями и занести в массив или имена файлов, или содержимое этих файлов (не знаю, как тебе точно нужно..). сможешь это сделать?
 

ZizA

Guest
Автор оригинала: empty
ZizA
ты должен пройтись циклом по директории, в которой у тебя храняться файлы с новостями и занести в массив или имена файлов, или содержимое этих файлов (не знаю, как тебе точно нужно..). сможешь это сделать?
Вот как раз и не могу... Хорошы бы названия файлов в массив сунуть. Объясните как :D
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху