[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Соседние новости
fire
Ребят, помогите определится с алгоритмом. Есть некое подобие новостной ленты, к каждой новости нужно выводить несколько соседних новостей (количество можно указать в функции). Новости у меня лежат в файле, в сеаризованом виде. Как я понимаю для начала нужно задать количество соседних новостей которые будем выводить, определить сколько всего новостей в файле, узнать id текущей новости для дальнеших подсчетов.

Проблема в том что нужно нужно правильно выбрать новости из файла, т.е. например текущий id страницы 1 (счет страниц начинается с 0), всего нужно выводить 4 записи, а в файле 6 новостей, тогда скрипт отсчитывает 1 новость до 1 новости и 3 после и отдает результат.

Вот, вроде обяснил как смог, надеюсь поймете. ph34r.gif



Спустя 1 день, 18 часов, 5 минут, 26 секунд (17.11.2010 - 12:20) fire написал(а):
ап темы

Спустя 14 минут, 7 секунд (17.11.2010 - 12:34) m4a1fox написал(а):
У вас новости в БД находятся? И что значит в !!--сеаризованом виде--!!?

Спустя 4 минуты, 23 секунды (17.11.2010 - 12:39) kovaldm написал(а):
В сериализованном, наверное...

Спустя 3 минуты, 19 секунд (17.11.2010 - 12:42) sharki написал(а):
Лучше конечно же держать все новости в БД, после того как организуешь правильную структуру БД, и сделаешь между ними связь, будет намного легче..там ты просто подаешь пару запросов в одном, и все, всё что ты хочешь он тебе выведет.

Спустя 2 минуты, 55 секунд (17.11.2010 - 12:45) m4a1fox написал(а):
<?
$query = "SELECT * FROM `you_table` ORDER BY date DESC LIMIT 6";
$id = mysql_query($query);
if(!$id) exit("Ошибка - ".mysql_error());
while($ind=mysql_fetch_array($id))
{
echo "<li type=1><b><a href=edit_you_mail.php?ind=$ind[id]><img src='img/edit.gif'> $ind[title] </a></b>  <span class='date'>Дата: $ind[date_now] | Время: $ind[time]</span></li>";
}
?>
это пример моего вывода новостей из БД! Насколько он безопасен и правилен с точки зрения опытных программистов не знаю. Но - он работает"

Спустя 5 часов, 55 минут, 24 секунды (17.11.2010 - 18:40) fire написал(а):
Цитата
У вас новости в БД находятся?

все данные хранятся в файле
Цитата
В сериализованном, наверное...

верно :)
Цитата
Лучше конечно же держать все новости в БД, после того как организуешь правильную структуру БД, и сделаешь между ними связь, будет намного легче..там ты просто подаешь пару запросов в одном, и все, всё что ты хочешь он тебе выведет.

не хотелось бы использовать в данном случае mysql или ему подобные бд
Чтоб было более понятно выложу еще код
index.php - файл отвечающий за вывод новостей
Свернутый текст


<?php
$file = file ('text.txt');

$page = !empty($_GET['page'])?$_GET['page']:0;

if (isset($page)) {

$content = unserialize( $file[$page] );

}

//$related_news = related_news(4,$file,$page);
//$paginator = paginator ($page);


include 'template.tpl';
?>


text.txt - здесь хранятся новости
Свернутый текст

a:4:{s:8:"keywords";s:4:"keys";s:11:"description";s:4:"desc";s:5:"title";s:5:"title";s:4:"body";s:23:"body das asd sadsdsadas";}
a:4:{s:8:"keywords";s:4:"keys";s:11:"description";s:4:"desc";s:5:"title";s:5:"title";s:4:"body";s:23:"body das asd sadsdsadas";}

template.tpl - файл шаблона
Свернутый текст

всякий html
<?php echo $content['title']; ?>
<?php
echo $content['body']; ?>
всякий html


Спустя 19 минут, 22 секунды (17.11.2010 - 19:00) kovaldm написал(а):
В text.txt лежит массив

keywords=>keys
description=>desc
title=>title
body=>body das asd sadsdsadas

скрипт выводит это

titlebody das asd sadsdsadas

Что изменить хочешь?

Спустя 6 минут, 19 секунд (17.11.2010 - 19:06) fire написал(а):
kovaldm, из text.txt нужно зделать выборку соседних записей (сгенирировать ссылки на них), подробнее в 1 посте.

Спустя 17 минут, 41 секунда (17.11.2010 - 19:24) kovaldm написал(а):
Тогда массив неправильно записан, ключами должны быть id новости, то есть массив должен иметь вид

0=>тра-ла-ла
1=>тро-ло-ло
2=>тра-ля-ля
3=>жвадпьпо

Спустя 12 минут, 7 секунд (17.11.2010 - 19:36) fire написал(а):
Немного недопонял что ты имеешь ввиду, весь txt это считай и есть массив, типа
Цитата

0 => массив с новостью
1 => массив с новостью
2 => массив с новостью

или ты предлагаешь сменить
Цитата

keywords=>keys
description=>desc

на
Цитата

0=>keys
1=>desc

нипанятна вообщем

Спустя 8 минут, 42 секунды (17.11.2010 - 19:45) kovaldm написал(а):
Цитата
весь txt это считай и есть массив, типа

Тогда уж такой

array[0]['keywords']=>бла бла бла
array[0]['description']=>тра-ла-ла

То есть многомерный.
Только записан как несколько отдельных массивов. Я бы сначала создавал массив, а потом сериализовал/записывал его, тогда придется искать отдельную запись в массиве, а не в файле.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.