Автор Тема: Автоматический вывод новостей на страничке  (Прочитано 7656 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн 3D-Dragon

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 161
  • +0/-0
  • 0
    • Просмотр профиля
    • http://wp-club.net
Я закончил административную часть своего новостного скрипта и подошел к части вывода новостей непосредственно на страницу.

Сначала хотел просто выводить последних 10 новостей, но в связи с тем, что на странице будет присутсвовать и календарь, теряется логичность этого вывода.

Я решил выводить новости автоматом за текущий день.
Проблема заключается в том, что новости не всегда обновляются ежедневно и при их отсутвстии будет показываться пустая страничка, а это не хорошо.


Вопрос:
----------
Как автоматически вывести новости, присутствующие в базе, только за один день и если за этот день новостей нет, то выводить новости за первый ближайший прошлый день с новостями ?
Всё в одном месте для начинающих и профессионалов
-= Web-Profi CLUB =-  Хостинг (бесплатный, платный, dedicated), Баннерная Сеть, Форум для web-мастеров

Оффлайн NAS

  • Неопытный юзер
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2951
  • +1/-0
  • 1
    • Просмотр профиля
    • http://nhouse.ru
Автоматический вывод новостей на страничке
« Ответ #1 : 06 Декабря 2001, 11:32:21 »
Просто выводи последние новости за один день и всё.

Оффлайн 3D-Dragon

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 161
  • +0/-0
  • 0
    • Просмотр профиля
    • http://wp-club.net
Автоматический вывод новостей на страничке
« Ответ #2 : 06 Декабря 2001, 14:33:05 »
Это понятно, а если их нет в этот день.
Всё в одном месте для начинающих и профессионалов
-= Web-Profi CLUB =-  Хостинг (бесплатный, платный, dedicated), Баннерная Сеть, Форум для web-мастеров

Оффлайн NAS

  • Неопытный юзер
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2951
  • +1/-0
  • 1
    • Просмотр профиля
    • http://nhouse.ru
Автоматический вывод новостей на страничке
« Ответ #3 : 06 Декабря 2001, 14:36:03 »
Проверяй предыдущие пока они не появятся.

Оффлайн 3D-Dragon

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 161
  • +0/-0
  • 0
    • Просмотр профиля
    • http://wp-club.net
Автоматический вывод новостей на страничке
« Ответ #4 : 06 Декабря 2001, 14:39:06 »
Вы меня извините, но логику я понимаю.
Я не могу правильно НАПИСАТЬ код :(
Всё в одном месте для начинающих и профессионалов
-= Web-Profi CLUB =-  Хостинг (бесплатный, платный, dedicated), Баннерная Сеть, Форум для web-мастеров

Оффлайн MHz

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 44
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.jafar.ru
Автоматический вывод новостей на страничке
« Ответ #5 : 06 Декабря 2001, 18:34:25 »
Можно сделать так: дату использовать только как дату последней новости, а из базы просто извлекать фиксированное кол-во последних по дате новостей. Тогда вся логика помещается в тот же запрос, что извлекает новости.

Насколько я помню:
$query="SELECT id,post_date,title,news FROM news WHERE 1 AND TO_DAYS(post_date) < TO_DAYS($dataF) LIMIT 0, $limit

$dataF - день по "календарю"
$limit - максимальное кол-во новстей на странице, например 10
Feci, quod potui, faciant meliora potentes

Оффлайн 3D-Dragon

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 161
  • +0/-0
  • 0
    • Просмотр профиля
    • http://wp-club.net
Автоматический вывод новостей на страничке
« Ответ #6 : 06 Декабря 2001, 23:34:48 »
MHz

Не работает :(

Вот кусок измененного по твоему совету кода

$show_rows = 10;
$dateF=date ( "Y-m-d H:i:s",mktime ());
if (!isset($limit)) $limit=0;
else $limit=$limit-1;

$query="select post_date,title,news,istochnik,url,autor,mail from news order by post_date WHERE 1 AND TO_DAYS(post_date) < TO_DAYS($dataF) desc limit $limit,$show_rows";

$result=mysql_query ($query);
while ($row=mysql_fetch_array ($result))
{
$post_date=$row["post_date"];
$title=$row["title"];
$news=$row["news"];
$istochnik=$row["istochnik"];
$url=$row["url"];
$autor=$row["autor"];
$mail=$row["mail"];
$limit=$limit+1;
?>

Где копать ???

Я уже сам вижу, что у меня неправильно определена $dateF
:mad:
Блин, как-же их сравнивать эти post_date и $dateF ?
Всё в одном месте для начинающих и профессионалов
-= Web-Profi CLUB =-  Хостинг (бесплатный, платный, dedicated), Баннерная Сеть, Форум для web-мастеров

Оффлайн Stek

  • Обожатель PHP
  • Ветеран
  • *****
  • Сообщений: 532
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.phpdevs.com
Автоматический вывод новостей на страничке
« Ответ #7 : 06 Декабря 2001, 23:59:24 »
Короче. Логика такова
SELECT post_date FROM news ORDER BY post_date DESC LIMIT 1

подгоняешь этот запрос под себя. чтобы тебе возвращалась дата последнего сообщения.

Ну а далее
select * from news where post_date=\'что получили из прудидущего селекта\'
PHP без башни - сделай свою жизнь разнообразнее.
Разбираю скрипты, собираю заново, вытираю пыль с баз данных.

Оффлайн MHz

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 44
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.jafar.ru
Автоматический вывод новостей на страничке
« Ответ #8 : 07 Декабря 2001, 00:12:57 »
можно попробовать так:

$show_rows = 10;
$dateF=date ( "Y-m-d",mktime ()); // текущая дата, но подразумевается что может быть любая

if (!isset($limit)) $limit=0;
else $limit=$limit-1;  // это что такое ?  навигация по страницам?
// тогда так ($page - текущая страница, должна передаваться через GET или POST):
$limit = ($page -1) * $show_rows;

$query="select post_date,title,news,istochnik,url,autor,mail from news WHERE TO_DAYS(post_date) < TO_DAYS(\'$dateF\') order by post_date limit $limit,$show_rows";

..и т.д.
« Последнее редактирование: 07 Декабря 2001, 00:19:39 от MHz »
Feci, quod potui, faciant meliora potentes

Оффлайн MHz

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 44
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.jafar.ru
Автоматический вывод новостей на страничке
« Ответ #9 : 07 Декабря 2001, 01:34:29 »
Цитировать
SELECT post_date FROM news ORDER BY post_date DESC LIMIT 1


По-моему, лучше так ;) :

SELECT max(post_date) FROM news
Feci, quod potui, faciant meliora potentes

Оффлайн 3D-Dragon

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 161
  • +0/-0
  • 0
    • Просмотр профиля
    • http://wp-club.net
Автоматический вывод новостей на страничке
« Ответ #10 : 07 Декабря 2001, 02:19:39 »
MHz

Так работает, но выводятся 10 новостей, начинаются с самой поздней (по дате) и в порядке возрастания, а также не за один день, а за все которые попадаются в этом промежутке ...

Я уже вообще запутался :(
Пошел вешаться ...

Это ответ на твое предыдущее сообщение в 19:59
Всё в одном месте для начинающих и профессионалов
-= Web-Profi CLUB =-  Хостинг (бесплатный, платный, dedicated), Баннерная Сеть, Форум для web-мастеров

Оффлайн MHz

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 44
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.jafar.ru
Автоматический вывод новостей на страничке
« Ответ #11 : 07 Декабря 2001, 11:47:49 »
Цитировать
Так работает, но выводятся 10 новостей, начинаются с самой поздней (по дате) и в порядке возрастания, а также не за один день, а за все которые попадаются в этом промежутке ...

Так и задумывалось ... мной ;)

По-моему, здесь нужно определиться с идеологией:
если ты используешь календарь и новости выводятся за конкретный день, то не надо боятся что некоторыйе дни будут пустые. В этом случае нужно таким образом выводить календарь чтобы дни без новостей были не активны. А выбор последнего дня с новостями сделать так, как предложил Stek

Если же новостей не много, то, по-моему, лучше просто выводить определнное количество последних новостей за заданный инстервал и отказаться от календаря.
Feci, quod potui, faciant meliora potentes

Оффлайн 3D-Dragon

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 161
  • +0/-0
  • 0
    • Просмотр профиля
    • http://wp-club.net
Автоматический вывод новостей на страничке
« Ответ #12 : 07 Декабря 2001, 13:55:47 »
MHz ,


В этом случае нужно таким образом выводить календарь чтобы дни без новостей были не активны.


У меня календарь так и выводиться. Если новость есть за определенный день, то число в календаре является ссылкой на этот день, а если нет, то выводиться просто число без ссылки


А выбор последнего дня с новостями сделать так, как предложил Stek


Да, я так и хочу выводить, но у меня ПОКА не хватает знаний все правильно написАть.

Stek,

Разжуй мне пожалуйста вот это поподробнеее, учусь ведь

Короче. Логика такова
SELECT post_date FROM news ORDER BY post_date DESC LIMIT 1

подгоняешь этот запрос под себя. чтобы тебе возвращалась дата последнего сообщения.

Ну а далее
select * from news where post_date=\'что получили из прудидущего селекта\'

 
MHz ,

Если же новостей не много, то, по-моему, лучше просто выводить определнное количество последних новостей за заданный инстервал и отказаться от календаря.

Мне нужно чтобы новости выводились только за определенный день и календарь у меня для этого есть и правильно работатет.
Всё в одном месте для начинающих и профессионалов
-= Web-Profi CLUB =-  Хостинг (бесплатный, платный, dedicated), Баннерная Сеть, Форум для web-мастеров

Оффлайн Stek

  • Обожатель PHP
  • Ветеран
  • *****
  • Сообщений: 532
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.phpdevs.com
Автоматический вывод новостей на страничке
« Ответ #13 : 07 Декабря 2001, 14:42:09 »
кинь SQL код таблицы (структура только) в который ты новости хранишь и как ты вставляешь дату (в каком формате). Попробуем всем миром тебе запрос составить :)
PHP без башни - сделай свою жизнь разнообразнее.
Разбираю скрипты, собираю заново, вытираю пыль с баз данных.

Оффлайн MHz

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 44
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.jafar.ru
Автоматический вывод новостей на страничке
« Ответ #14 : 07 Декабря 2001, 16:22:05 »
Ну что, попробуем:

$show_rows = 10;

$query = mysql_query("SELECT TO_DAYS(MAX(post_date)) AS last_post_day FROM news");
$query_string = mysql_fetch_array($query);
$last_post_day = $query_string[\'last_post_day\']; // Дата последней новости

$query="SELECT post_date,title,news,istochnik,url,autor,mail FROM news WHERE TO_DAYS(post_date) = $last_post_day ORDER BY post_date DESC LIMIT 0, $show_rows";

Так, на скорую руку, так что ... (см подпись)
Feci, quod potui, faciant meliora potentes

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28