Облако тегов

Тема в разделе "PHP", создана пользователем lolshik, 31 окт 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. lolshik

    lolshik

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

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

    $tagWeights = array(1234106300301);
    $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. FL@SH

    FL@SH Читатель

    Заблокирован
    Регистр.:
    20 июл 2008
    Сообщения:
    193
    Симпатии:
    25
    Перефразируй вопрос, уж очень запутанно всё описал, чтоб составить нормальный sql-запрос
     
  3. Kloster

    Kloster

    Регистр.:
    22 июн 2009
    Сообщения:
    216
    Симпатии:
    12
    непонятно, описываешь одно - в массиве ключ=тэг, значение=вес, а в примере приводишь два разных массива с тэгами и весами.
    Если тебе надо все в одном получить, вот попробуй запрос:
    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'];
     
    lolshik нравится это.
  4. lolshik

    lolshik

    Регистр.:
    21 фев 2008
    Сообщения:
    316
    Симпатии:
    127
    Уже решил правда. Но всё равно спасибо.

    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
     
  5. Kloster

    Kloster

    Регистр.:
    22 июн 2009
    Сообщения:
    216
    Симпатии:
    12
    Такой вариант не будет выводить категории, в которых нет новостей.
     
  6. lolshik

    lolshik

    Регистр.:
    21 фев 2008
    Сообщения:
    316
    Симпатии:
    127
    Да, но это и правильно. Зачем выводить пустые категории в облако? =)
     
Статус темы:
Закрыта.