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

Форум MySQL

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

 

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

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

тема: Навигация по дате
 
 автор: smalik   (28.09.2005 в 10:05)   письмо автору
 
 

Необходимо сделать навигацию по дате.
Есть каталог новинок. Они добавляются не каждый день. Дата добавления или редактирования заноситься в базу в формате Y-m-d.
Необходимо выбрать весь диапазон дат новинок из базы и отобразить строку навигации, например так:

25 21 16 11 5

Думал, но ни как не могу. Может есть какие-нибудь идеи?

   
 
 автор: napTu3aH   (28.09.2005 в 10:23)   письмо автору
 
   для: smalik   (28.09.2005 в 10:05)
 

Не совсем понятна задача. Что нужно вывести, и в каком диапазоне новинка, считаетсья новинкой.
Если вывести из БД по Дате то это можно сделать следующим запросом

SELECT * 
FROM table 
ORDER BY 'data' DESC 

А потом можно задать количество выводимых новинок

LIMIT 0 , 5 

   
 
 автор: SMAlik   (28.09.2005 в 10:36)   письмо автору
 
   для: napTu3aH   (28.09.2005 в 10:23)
 

Новинка считается новой в течении месяца. Необходимо сформировать строку ссылок дат, при нажатии на которые будут выведены из базы новинки, добавленные в выбранный день.

   
 
 автор: napTu3aH   (28.09.2005 в 11:18)   письмо автору
 
   для: SMAlik   (28.09.2005 в 10:36)
 

Этот запрос выведет только новинки за месяц, от текущей даты

SELECT * 
FROM 'table' 
WHERE 'data' > NOW( ) - INTERVAL 1 
MONTH ORDER BY 'data' DESC 


при выборе новинок для какой-то конкретной даты можно использовать такой запрос


SELECT * 
FROM 'table' 
WHERE 'data' = '$data'

В переменной $data содержиться дата за которое число вы хотите вывести новинки

А что у вас еще храниться в базе? Что кроме даты вы будете выбирать? Для формирования ссылок очень помог бы дамп базы и что конкретно из нее будет выбираться.

   
 
 автор: SMAlik   (28.09.2005 в 11:37)   письмо автору
 
   для: napTu3aH   (28.09.2005 в 11:18)
 

Я пока придумал вот что:


// Извлекаем из URL текущую страницу
$nov = $_GET['nov'];
if (!isset($nov))
{
        $data = date("Y-m-d");

}
else
{
        $data=$nov;
}
// Определяем общее число сообщений в базе данных
$result1 = mysql_query("SELECT * FROM 'tovar' WHERE 'news' =1 ORDER BY data DESC");
@$num1=mysql_num_rows($result1);
$data_d=date("d");
echo "<TABLE cellSpacing=0 cellPadding=0 width=100% border=0 align=center>
              <TBODY>";
for($i=0; $i<$num1; $i++)
{
      $row=mysql_fetch_array($result1);
      $data_first=$row[data];
      list($y, $m, $d)=explode('-',$data_first);
      list($y_r, $m_r, $d_r)=explode('-',$row[data]);
            if ($d==$d_r)
            {
                    if ($d_r==$d_tp)
                    {
                    }
                    else
                    {
                    $width=(546/$num1);

                    $data_all[$i]=$data_first;
                    list($y_r, $m_r, $d_viev)=explode('-',$data_all[$i]);
                    if ($data_all[$i]==$data)
                    {
                            echo "
                            <td class=news width=$width  align=center><b>[ $d_viev ]</b></td>
                            ";
                    }
                    else
                    {
                            echo "

                            <td class=news width=$width  align=center><a class=news_m href=index.phtml?id=0&m=0&nov=$data_all[$i]>$d_viev</a></td>
                            ";
                    }
                    }
                    $d_tp=$d;
            }
            else
            {

            }

}
echo "</tbody></table>";
$query="SELECT * FROM 'tovar' WHERE 'news' =1 and 'data'='$data' ORDER BY data DESC";

   
 
 автор: Loki   (28.09.2005 в 13:30)   письмо автору
 
   для: SMAlik   (28.09.2005 в 11:37)
 

не. это слишком жестоко:)
при выборке из mysql используйте

SELECT UNIX_TIMESTAMP(data) as data, другие поля  FROM  'tovar' WHERE  и т.д.

в этом случае, вы получите дату в формате UNIX, которую можно будет форматировать с помощью date()

   
 
 автор: SMAlik   (29.09.2005 в 08:25)   письмо автору
 
   для: Loki   (28.09.2005 в 13:30)
 

Никто не понял вопроса.

Мне надо из базы выбрать дни, и сформировать строку навигации из дат, которые в базе, а как дальше буду думать.

   
 
 автор: Loki   (29.09.2005 в 10:09)   письмо автору
 
   для: SMAlik   (29.09.2005 в 08:25)
 

Так а я вам что написал? Добавьте еще группировку по дате и вообще вам будет счастье.
На крайняк можно выполнить sql запрос для каждого дня (если тип поля datetime). Думаю, это будет быстрее чем разбирать строки с помощью php.

   
Rambler's Top100
вверх

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