1. Главная
  2. Статьи
  3. Вопрос-Ответ
  4. Новости
  5. Форум
  6. Вики
Вход   Регистрация

Биржа комментариев

СМС рассылки

Партнерские программы

Бесплатное продвижение сайтов

VPS хостинг

Кабель оптом

Качественный контент

Офисная мебель Проспект

PHP скрипт: создать облако тегов

Пусть, мы имеем две таблицы в SQL tag и tag_info
tag – имеет записи уникальный айди тега, его имя и можно url
tag_info – таблица с двумя значениями: айди статьи и айди тега которой соответствует статья (соответствий может быть много)

Процесс создания облака тегов:
1. Извлекаем все теги и заносим их в массив $tags:

$gettags =  mysql_query("SELECT name FROM tag");
  while  ($thetags = mysql_fetch_array($gettags)) {
   if ($thetags['name'] != null) {
              $tags[] = $thetags['name'];
        }
  }

2. Для каждого тега считаем количество его использований и создаем новый массив $output, у которого два значения, сам тег и количество его использований:

foreach($tags as $tag)
    {
  // Выводим только 25 тегов (на Ваше усмотрение)
  if ($i <  25) {
  $res =  mysql_query("SELECT COUNT(*) AS totalnum
                          FROM tag_info
                          INNER JOIN tag ON  tag_info.id_tag = tag.id
                          WHERE tag.name =  '$tag'");
              $res = mysql_fetch_assoc($res);
                          if($res)
                          {
                          $output[$i]['tag'] =  $tag;
                          $output[$i]['num'] =  $res['totalnum'];
                          }
              }
  $i++;
    }

3. И в конце выводим все теги в облако.

Вот весь рабочий php скрипт создания и вывода облако тегов:

<?php
  // функция, которая создает облако тегов
  function  createTagCloud($tags) {
  // Счетчик
  $i=0;
  foreach($tags as $tag)
    {
  // Выводим только 25 тегов (на Ваше усмотрение)
  if ($i < 25) {
  $res =  mysql_query("SELECT COUNT(*) AS totalnum
                          FROM tag_info
                          INNER JOIN tag ON tag_info.id_tag = tag.id
                          WHERE tag.name = '$tag'");
              $res = mysql_fetch_assoc($res);
                          if($res)
                          {
                          $output[$i]['tag'] = $tag;
                          $output[$i]['num'] = $res['totalnum'];
                          }
              }
  $i++;
    }
$html = '<div>';

function tagFontSize($num) {
  $size = 9;
              if ($num == 1) $size = 10;
              elseif ($num == 2) $size = 11;
              elseif ($num <= 4) $size = 12;
              elseif ($num <= 8) $size = 13;
              elseif ($num <= 16) $size = 14;
              elseif ($num <= 32) $size = 15;
              elseif ($num <= 64) $size = 16;
              elseif ($num <= 128) $size = 17;
              elseif ($num <= 256) $size = 18;
               else $size = 19;
  return $size;
  }

foreach($output as $tag)
              {
$html.= '
<span style="font-size:'.tagFontSize($tag['num']).'px"><a href="/tag='.$tag['tag'].'">'.$tag['tag'].'</a></span>';
  if($tag != end($output)) $html.= ',';
              }
  $html.= '
  </div>';
   return $html;
  }
  // Извлекаем и аписываем теги в массив
  $gettags = mysql_query("SELECT name FROM tag");
  while ($thetags = mysql_fetch_array($gettags)) {
   if ($thetags['name'] != null) {
              $tags[] = $thetags['name'];
        }
  }
  echo "<h3>Теги:</h3>
  ";
  echo createTagCloud($tags);
  ?>

Скрипт рабочий 100%. Используется на некоторых сайтах.

Читайте так же: Вывод наиболее соответствующих статей по тегам

Категория статьи: Веб-программирование | Просмотров: 5324 | Добавлена: 22.03.2013

Почему Вы еще не прокомментировали?
Оставьте свой комментарий! Весь Интернет уже заждался!

Ваше Имя Муж. Жен. Как Вас величать?
Антиспам защита

– Напишите название этого сайта по-русски
(если Вы не в курсе, сайт называется "РапидАп")

Текст комментария
 
О сайте ⋅  Контакты