|
|
|
| Всем привет. Вот код:
$query = mysql_query("SELECT DISTINCT left(date,7) AS month FROM data ORDER BY month DESC",$db);
$myrow4 = mysql_fetch_array($query);
$temp_year = array();
$i = 0;
while ($row = mysql_fetch_assoc($query));
{
list ($year,$month) = explode("-",$myrow4["month"]);
$temp_year[$i] = $year;
$i++;
}
$result = array_unique($temp_year);
|
1.Запрос выбирает из таблицы data поле date обрезая число...
2.Заносим данные в массив
3.Объявляем новый массив
4.Объявляем переменную, кот. будем использовать в качестве индекса
5.Создаем цикл, в кот. будем выводить не повторяющиеся года
6.Функцией list разбиваем полученную дату на год и месяц
7.В созданный массив с индексом записуем год
8.Увеличиваем индекс на 1
9.После цикла отбрасываем повторяющиеся года и заносим в переменную result
В итоге должно вывести 2008 и 2007 Пробую echo $result[$i]; пишет ошибку...Или я не так вывожу данные? Кто подскажет?...Спасибо
Или есть попроще вариант узнать все года с поля date и выбрать уникальные?
Я себе поставил задачу вывести все не повторяющиеся года и при нажатии на определенный год выведется список месяцев, те месяца которые принадлежат этому году будут ссылкой, т.е. при нажатии на один из этих месяцев выведется список фильмов за этот месяц этого года...Плиз хелп | |
|
|
|
|
|
|
|
для: TetRiska
(27.11.2008 в 19:38)
| | Может так ?
<?php
$query = mysql_query("SELECT DISTINCT YEAR(date) FROM data ORDER BY date DESC",$db);
$temp_year = array();
while (list ($date) = mysql_fetch_row($query)) $temp_year[] = $year;
print_r($temp_year);
?>
|
подозревается что поле date типа date в mysql | |
|
|
|
|
|
|
|
для: devzorg
(27.11.2008 в 20:10)
| | цикл while можно было и упростить | |
|
|
|
|
|
|
|
для: Trianon
(27.11.2008 в 20:12)
| | > цикл while можно было и упростить
Как?! | |
|
|
|
|
|
|
|
для: devzorg
(27.11.2008 в 20:10)
| | соорри) опечатался .. заменить
while (list ($date) на while (list ($year) | |
|
|
|
|
|
|
|
для: devzorg
(27.11.2008 в 20:21)
| | какой list?
while ($row = mysql_fetch_row($query)) $temp_year[] = $row[0]; | |
|
|
|
|
|
|
|
для: Trianon
(27.11.2008 в 21:00)
| | Обычный list, а чо? | |
|
|
|
|
|
|
|
для: BinLaden
(27.11.2008 в 21:06)
| | ну не вижу я вящего смысла применять list в вырожденном случае одной переменной.
Разве что - если все остальные выборки SELECT оформлены аналогично - дабы не нарушать выбранный стиль. | |
|
|
|
|
|
|
|
для: devzorg
(27.11.2008 в 20:21)
| | Сделал так:
$query = mysql_query("SELECT DISTINCT YEAR(date) FROM data ORDER BY date DESC",$db);
$temp_year = array();
while (list ($date) = mysql_fetch_row($query)) $temp_year[] = $year;
print_r($temp_year);
|
Вывело лишь Array ( [0] => 2007 [1] => 2007 )
А сделал так:
$query = mysql_query("SELECT DISTINCT YEAR(date) FROM data ORDER BY date DESC",$db);
$temp_year = array();
while (list ($year) = mysql_fetch_row($query)) $temp_year[] = $year;
print_r($temp_year);
|
Вывело Array ( [0] => 2008 [1] => 2007 ) Что есть более правильно, т.к. в базе 2008 год есть
А теперь как можно их в цикле вывести?
Тоесть идея была такова чтобы год выводился таблично в цикле...Пример:
echo "<table class='post' cellspacing='0' cellpadding='0'>
<tr>
<td>год</td>
</tr>
<tr>
<td>месяца этого года</td>
</tr>
</table>";
|
Так:
$query = mysql_query("SELECT DISTINCT YEAR(date) FROM data ORDER BY date DESC",$db);
$temp_year = array();
while ($row = mysql_fetch_row($query)) $temp_year[] = $row[0];
print_r($temp_year);
|
Выводит Array ( [0] => 2008 [1] => 2007 ) | |
|
|
|
|
|
|
|
для: TetRiska
(27.11.2008 в 21:03)
| |
<?php
$query = mysql_query("SELECT DISTINCT YEAR(date) as `year` FROM data ORDER BY date DESC",$db);
if(mysql_num_rows($query) > 0)
{
?><table class='post' cellspacing='0' cellpadding='0'><?
while (list($year) = mysql_fetch_row($query))
{
?><tr><td><?=$year?></td></tr><tr><td>месяца этого года</td></tr><?
}
?></table><?
}
?>
|
так ? | |
|
|
|
|
|
|
|
для: devzorg
(27.11.2008 в 22:53)
| | :) Клева...Да так..Огромное спасибо...Но попробовав в запрос добавить еще месяц :
$query = mysql_query("SELECT DISTINCT YEAR(date) as `year` MONTH(date) as 'month' FROM data ORDER BY date DESC",$db);
|
и в лист переменную месяца и там где вывод...то не так отобразило как нужно :(
вывело
Надо чтобы имело такой вид:
Подправте пожалуйста ..Спс | |
|
|
|
|
|
|
|
для: TetRiska
(27.11.2008 в 23:19)
| | Ктото подскажет? Оччень нада :( | |
|
|
|
|
|
|
|
для: TetRiska
(28.11.2008 в 01:04)
| |
SELECT YEAR(`date`) as `year`, GROUP_CONCAT(DATE_FORMAT(`date`, '%m')
ORDER BY `date` DESC SEPARATOR ' ') AS `month_list` FROM `data`
GROUP BY `year` DESC;
|
P.S. Ну тут list() можете поюзать. Никто Вам ничего уже не скажет. | |
|
|
|
|
|
|
|
для: BinLaden
(28.11.2008 в 01:24)
| | благодарю :) постараюсь уже сам исправить ошибку Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource | |
|
|
|
|
|
|
|
для: TetRiska
(28.11.2008 в 01:49)
| | Это значит ошибка при выполнении запроса. Покажите текст ошибки через mysql_error(). Хотя я её в упор не вижу... | |
|
|
|
|
|
|
|
для: BinLaden
(28.11.2008 в 02:26)
| | Invalid query: You have an error in your SQL syntax near '(DATE_FORMAT(`date`, '%m') ORDER BY `date` DESC SEPARATOR ' ') AS `month_list` F' at line 1 | |
|
|
|
|
|
|
|
для: TetRiska
(28.11.2008 в 02:59)
| |
<?php
# ...
$r = mysql_query("SELECT VERSION();");
echo "MySQL version: ", mysql_result($r, 0), "<br />\r\n";
?>
|
Что выдаёт такой код? | |
|
|
|
|
|
|
|
для: BinLaden
(28.11.2008 в 03:04)
| | MySQL version: 3.23.53-max
Версия устарела?
Или я ошибся правя код?
$query = mysql_query("SELECT YEAR(`date`) AS `year`, GROUP_CONCAT(DATE_FORMAT(`date`, '%m') ORDER BY `date` DESC SEPARATOR ' ') AS `month_list` FROM `data` GROUP BY `year` DESC",$db);
if(mysql_num_rows($query) > 0)
{
?><table class='post' cellspacing='0' cellpadding='0'><?
while (list($year,$month_list) = mysql_fetch_row($query))
{
?><tr><td><?=$year?></td></tr><tr><td><?=$month_list?></td></tr><?
}
?></table><?
}
|
| |
|
|
|
|
|
|
|
для: TetRiska
(28.11.2008 в 03:06)
| | > Версия устарела?
Очень сильно. Надо бы версию до 5.0 обновить хотя бы... | |
|
|
|
|
|
|
|
для: BinLaden
(28.11.2008 в 03:07)
| | Ясн спасиб...обновлю если что напишу результат)
Вот и результат:) Все ок..Вывело:
2008
12 11 11 11 11 11 11 10 10 10 09
2007
11 09
|
Останется сгруппировать месяца, сделать на них ссылки, чтобы клацнув по месяцу вывелись заметки за этот месяц этого года и вывести остальные месяца (не активными)...Придется посидеть:)
Пасиба за помощь...Мде поставил обновленный Денвер 3 c мускулом 5, то что не работало - работает, а что работало не работает :( Пришлось откатится до мускула MySQL version: 4.1.16-max Так заработало все:) | |
|
|
|