Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Блок "Новости" на PHP (MySQL)
 
 автор: denya   (16.01.2006 в 13:57)   письмо автору
 
 

Уважаемые господа!
Использую вашу систему публикации новостей.
Всё очень нравится, но вот есть несколько вопросов.

1) Почему новые новости добавляются в конец списка, а не в начало?
2) Формат даты хотелось бы выводить не на американский манер, а на наш (например: 16.01.2006, а не 2006-01-16). Без времени!

Насколько возможно сделать поправки в код?

Спасибо!

   
 
 автор: ZC   (16.01.2006 в 14:09)   письмо автору
 
   для: denya   (16.01.2006 в 13:57)
 

1) Нужно вместо ORDER BY putdate написать ORDER BY putdate DESC
2) Для этого можно рег.выражение использовать. Это к cheops-у

   
 
 автор: denya   (16.01.2006 в 14:13)   письмо автору
 
   для: ZC   (16.01.2006 в 14:09)
 

а кто это...cheops?
:)

   
 
 автор: P@Sol   (16.01.2006 в 14:18)   письмо автору
 
   для: denya   (16.01.2006 в 14:13)
 

он вас сам найдет:)

   
 
 автор: denya   (16.01.2006 в 14:25)   письмо автору
 
   для: ZC   (16.01.2006 в 14:09)
 

>1) Нужно вместо ORDER BY putdate написать ORDER BY putdate DESC
У меня так и написано!
А все равно добавляется в конец списка :-\

   
 
 автор: denya   (16.01.2006 в 14:31)   письмо автору
 
   для: ZC   (16.01.2006 в 14:09)
 

Я наверное немного неточно описал проблему.
Например я в один день сделал 5 новостей. Получается, что последняя новость, добавленная в этот день находится пятой по счету. Так ведь неправильно! Последняя должна быть первой!

   
 
 автор: XPraptor   (16.01.2006 в 14:37)   письмо автору
 
   для: denya   (16.01.2006 в 14:31)
 

Нужно еще в ORDER BY после даты добавить сортировку по полю ключа в DESC.
Поле ключа всегда первое в таблице, его имя и добавьте
ORDER BY pub_date DESC, id_key DESC

   
 
 автор: denya   (16.01.2006 в 14:48)   письмо автору
 
   для: XPraptor   (16.01.2006 в 14:37)
 

$new = mysql_query("select * from news order by putdate DESC limit $start, $all_number_news");

вот строчка.
Как нужно сделать?
Я просто в php плохо шарю :)

   
 
 автор: denya   (16.01.2006 в 14:54)   письмо автору
 
   для: XPraptor   (16.01.2006 в 14:37)
 

Получилось.
Осталось дату только на русский манер сделать :) Жду ответа

   
 
 автор: Loki   (16.01.2006 в 15:27)   письмо автору
 
   для: denya   (16.01.2006 в 14:54)
 


$new = mysql_query("select DATE_FORMAT(putdate ,'%d.%m.%Y') as putdate,* from news order by putdate DESC limit $start, $all_number_news");

   
 
 автор: cheops   (16.01.2006 в 16:28)   письмо автору
 
   для: Loki   (16.01.2006 в 15:27)
 

Необольшое уточнение, в файлах index.php и news.php в запросах расположенных в строках 36 и 41, соответственно, символ * заменить на
  id_news,
  name,
  body,
  DATE_FORMAT(putdate ,'%d.%m.%Y') as putdate,
  url,
  url_text,
  url_pict,
  hide

PS Вероятно, скоро будет выложена новая версия блока "Новости", так как этот вопрос всплывает регулярно.

   
 
 автор: denya   (16.01.2006 в 16:52)   письмо автору
 
   для: cheops   (16.01.2006 в 16:28)
 

Спасибо, всё получилось :)
Ждём новую версию Новостей :)

   
 
 автор: XPraptor   (16.01.2006 в 15:28)   письмо автору
 
   для: denya   (16.01.2006 в 14:54)
 

А дату ищи строку где выводится дата на страницу, там должна быть функция Date(
так тебе нужно в нее первым параметром передать вместо имеющегося формата следующее:
Date("d.m.Y",

   
 
 автор: ZC   (16.01.2006 в 19:26)   письмо автору
 
   для: denya   (16.01.2006 в 14:54)
 

Вот еще один способ переобразования даты

<?php
    
///////////////////////////////////////////////
    // Функция для конвертирования даты из формата 
    // YYYY-MM-DD в DD.MM.YYYY
    /////////////////////////////////////////////// 
    
function convertdate($strdate$separator)
    {
        
// Проверяем переданные переменые на допустимые значения
        
if(empty($strdate)) return false;
        if(empty(
$separator)) return false;
        
// Формируем регулярное выражение для переобразования даты
        
$pattern "|([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})|i";
        
// Разделитель между днем месяцем и годом
        
$separator ".";
        
// Переобразовываем дату, при ошибке возвращаем 
        // отрицательный результат
        
if(preg_match($pattern$strdate$regs))
        {
            
// Выводим конвертированную дату в формате DD.MM.YYYY
            
return $regs['3'].$separator.$regs['2'].$separator.$regs['1'];
        }
        else
        {
            
// Возвращаем отрицательный результат
            
return false;
        }
    }
    
    
///////////////////////////////////////////////////////////
    // Пример использования функции convertdate([string date])
    ///////////////////////////////////////////////////////////
    // Дата в формате YYYY-MM-DD
    
$date_old "2006-01-09";
    
// Переобразовываем дату
    
$date_new convertdate($date_old".");
    
// Выводим ковертированную дату 
    
echo "$date_new";  
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования