|
|
|
| Здравствуйте.
не могу найти ошибку в скрипте, который выводит архив статей по годам.
За 2014 год, За 2013 год - выводится за 2014 года, и За 0000 год - вообще не понятно.
Архив
За 2014 год
За 2013 год
За 0000 год
<?php
$result4 = mysql_query("SELECT DISTINCT LEFT (date, 4) AS month FROM data ORDER by month DESC", $db);
if (!$result4)
{
echo "Запрос на выборку данных из базы не прошел.";
exit (mysql_error());
}
if (mysql_num_rows($result4) > 0)
{
$myrow4 = mysql_fetch_array($result4);
do
{
printf ("<h3><a href='view.php?date=%s'>За %s год</a></h3>", $myrow4["month"], $myrow4["month"]);
}
while ($myrow4 = mysql_fetch_array($result4));
}
else
{
echo "<p>1) Информация по запросу не может быть извлечена - в таблице нет записей.</p>";
exit ();
}
?>
|
| |
|
|
|
|
|
|
|
для: franko
(30.07.2014 в 03:05)
| | Скорее всего в базе есть запись вида '0000-00-00' для поля date
По коду:
1. Если поле date типа DATE, то лучше использовать функцию YEAR() вместо LEFT(date, 4)
2. Вот это:
<?
$myrow4 = mysql_fetch_array($result4);
do
{
printf ("<h3><a href='view.php?date=%s'>За %s год</a></h3>", $myrow4["month"], $myrow4["month"]);
}
while ($myrow4 = mysql_fetch_array($result4));
|
лучше заменить на
<?
while ($myrow4 = mysql_fetch_array($result4)) {
printf ("<h3><a href='view.php?date=%s'>За %s год</a></h3>", $myrow4["month"], $myrow4["month"]);
}
|
3. Ну и год лучше назвать year, а не month) | |
|
|
|