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

Форум PHP

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

 

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

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

тема: ошибка в выводе года
 
 автор: franko   (30.07.2014 в 03:05)   письмо автору
 
 

Здравствуйте.
не могу найти ошибку в скрипте, который выводит архив статей по годам.
За 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 ();
}
?>

  Ответить  
 
 автор: Igorek   (30.07.2014 в 08:03)   письмо автору
 
   для: 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)

  Ответить  
Rambler's Top100
вверх

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