Облако тегов

Статус
В этой теме нельзя размещать новые ответы.

lolshik

Постоялец
Регистрация
21 Фев 2008
Сообщения
316
Реакции
127
Доброе время суток. Нашёл отличный алгоритм вывода облака тэгов. Написан в виде класса. Принимает массив, где ключ - тэг, а значение кол-во повторений этого тега в записях.

PHP:
$tags = array('Aliquam', 'Duis', 'Fusce', 'Integer', 'Lorem', 'Phasellus', 'Quisque');

$tagWeights = array(1, 2, 3, 4, 106, 300, 301);
$testArray = array_combine($tags, $tagWeights);

Не могу представить имеющуюся у меня информацию из mysql в нужно виде.

Есть таблица категорий - id_category_news, order_category_news, name_category_news

И таблица самих постов - id_news, id_region_news, id_category_news, top_news, date_time_news, name_news


Как получить массив из id категорий я знаю.

Подскажите пожалуйста как получить на выходе массив из значений категорий (меток), и кол-ва их повторений.

Спасибо.
 
  • Заблокирован
  • #2
Перефразируй вопрос, уж очень запутанно всё описал, чтоб составить нормальный sql-запрос
 
непонятно, описываешь одно - в массиве ключ=тэг, значение=вес, а в примере приводишь два разных массива с тэгами и весами.
Если тебе надо все в одном получить, вот попробуй запрос:
select c.id_category_news, c.name_category_news, count(n.id_news) as count from table_cat c left join table_news n on c.id_category_news=n.id_category_news
group by c.id_category_news, c.name_category_news

В результате получишь табличку id, название, вес
Потом пробегаешь по результатам циклом и толкаешь в массив

$data_array[$data['name_category_news']]=$data['count'];
 
непонятно, описываешь одно - в массиве ключ=тэг, значение=вес, а в примере приводишь два разных массива с тэгами и весами.
Если тебе надо все в одном получить, вот попробуй запрос:
select c.id_category_news, c.name_category_news, count(n.id_news) as count from table_cat c left join table_news n on c.id_category_news=n.id_category_news
group by c.id_category_news, c.name_category_news
В результате получишь табличку id, название, вес
Потом пробегаешь по результатам циклом и толкаешь в массив
$data_array[$data['name_category_news']]=$data['count'];

Уже решил правда. Но всё равно спасибо.

SELECT cn.name_category_news, COUNT( * ) FROM news n, category_news cn WHERE n.id_category_news = cn.id_category_news GROUP BY n.id_category_news LIMIT 0 , 30
 
Уже решил правда. Но всё равно спасибо.
SELECT cn.name_category_news, COUNT( * ) FROM news n, category_news cn WHERE n.id_category_news = cn.id_category_news GROUP BY n.id_category_news LIMIT 0 , 30
Такой вариант не будет выводить категории, в которых нет новостей.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху