|
|
|
| Необходимо сделать навигацию по дате.
Есть каталог новинок. Они добавляются не каждый день. Дата добавления или редактирования заноситься в базу в формате Y-m-d.
Необходимо выбрать весь диапазон дат новинок из базы и отобразить строку навигации, например так:
25 21 16 11 5
Думал, но ни как не могу. Может есть какие-нибудь идеи? | |
|
|
|
|
|
|
|
для: smalik
(28.09.2005 в 10:05)
| | Не совсем понятна задача. Что нужно вывести, и в каком диапазоне новинка, считаетсья новинкой.
Если вывести из БД по Дате то это можно сделать следующим запросом
SELECT *
FROM table
ORDER BY 'data' DESC
|
А потом можно задать количество выводимых новинок
| |
|
|
|
|
|
|
|
для: napTu3aH
(28.09.2005 в 10:23)
| | Новинка считается новой в течении месяца. Необходимо сформировать строку ссылок дат, при нажатии на которые будут выведены из базы новинки, добавленные в выбранный день. | |
|
|
|
|
|
|
|
для: 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 содержиться дата за которое число вы хотите вывести новинки
А что у вас еще храниться в базе? Что кроме даты вы будете выбирать? Для формирования ссылок очень помог бы дамп базы и что конкретно из нее будет выбираться. | |
|
|
|
|
|
|
|
для: 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";
|
| |
|
|
|
|
|
|
|
для: SMAlik
(28.09.2005 в 11:37)
| | не. это слишком жестоко:)
при выборке из mysql используйте
SELECT UNIX_TIMESTAMP(data) as data, другие поля FROM 'tovar' WHERE и т.д.
|
в этом случае, вы получите дату в формате UNIX, которую можно будет форматировать с помощью date() | |
|
|
|
|
|
|
|
для: Loki
(28.09.2005 в 13:30)
| | Никто не понял вопроса.
Мне надо из базы выбрать дни, и сформировать строку навигации из дат, которые в базе, а как дальше буду думать. | |
|
|
|
|
|
|
|
для: SMAlik
(29.09.2005 в 08:25)
| | Так а я вам что написал? Добавьте еще группировку по дате и вообще вам будет счастье.
На крайняк можно выполнить sql запрос для каждого дня (если тип поля datetime). Думаю, это будет быстрее чем разбирать строки с помощью php. | |
|
|
|