Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение размера шрифта в зачисимости от рейтинга 
:(
    Опции темы
xarakiry
Дата 25.1.2009, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 28.5.2008

Репутация: -1
Всего: -1



Уже 3 день не могу никак придумать алгоритм для облака тегов.
Вот имеется тег. У его свой рейтинг. Выводится к примеру 30 тегов сортировкой по рейтингу DESC. Как сделать так чтобы у тех что с рейтингом побольше размер шрифта был такой то, а те что поменьше другой. Т.е изменялся от меньшего рейтинга к большему при это можно было указать минимальный и максимально допустимый размер тега. Никак не пойму как это сделать...
--------------------
Все университеты Азербайджана на students.az
PM MAIL WWW   Вверх
patap
Дата 25.1.2009, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



ну думаю самый простой способ - это задать определенные диапазоны.
т.е. допустим есть 3 этапа:
1. это рейтинг низкого уровня - диапазон [0..5)
2. средний уровень [5..10)
3 [10..и выше)

Код

    $arr=array(array(10,'X'),array(8,'Y'),array(5,'Z'),array(8,'A'),array(15,'B'),array(2,'C'),array(4,'D'),array(1,'E'));

    for ($i=0;$i<count($arr);$i++) {
        if ($arr[$i][0]>=0 && $arr[$i][0]<5) {
            echo '<div style="font-size: 100%">'.$arr[$i][1].'</div>';
        }
        elseif ($arr[$i][0]>=5 && $arr[$i][0]<10) {
            echo '<div style="font-size: 150%">'.$arr[$i][1].'</div>';
        }
        elseif ($arr[$i][0]>=10) {
            echo '<div style="font-size: 200%">'.$arr[$i][1].'</div>';
        }
    }


Это сообщение отредактировал(а) patap - 25.1.2009, 18:34


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
bars80080
Дата 25.1.2009, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



во-первых, как начисляется рейтинг?
допустим определили, что максимальный рейтинг равен 100, задаём условия:

Код

$maxR = 100;
$maxS = 9;  // градация по шрифтам на девять условных уровней
$minS = 1;
// пишем все тэги из массива $r, где $r[$i]['name'] - имя тэга, $r[$i]['rang'] - его рейтинг

$c = count($r);
for($i; $i < $c; $i++) {
    $cls = round($r[$i]['rang']*9/100);
    echo '<span class="tagS'.$cls.'">'.$r[$i]['name'].'</span>';
}

остаётся в стилях прописать:
Код

.tagS0 { font-size: 6pt; }
.tagS1 { font-size: 7pt; }
.tagS2 { font-size: 8pt; }
.tagS3 { font-size: 10pt; }
.tagS4 { font-size: 12pt; }
.tagS5 { font-size: 14pt; }
.tagS6 { font-size: 16pt; }
.tagS7 { font-size: 18pt; }
.tagS8 { font-size: 20pt; }
.tagS9 { font-size: 22pt; }

PM MAIL WWW   Вверх
patap
Дата 25.1.2009, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



или так вот, как бы отталкиваться от максимального

Код

    $arr=array(20,15,13,11,11,11,10,4,4,3,0);

    $max=$arr[0];  // максимальный элемент в массиве, самый высокий рейтинг в массиве
    $max_pr=400;   // размер для самого высокого рейтинга

    for ($i=0;$i<count($arr);$i++) {
        $per=$max_pr*$arr[$i]/$max;   // расчитываем размер для всех остальных
        if ($per<100) $per=100;
        echo '<div style="font-size: '.$per.'%">'.$arr[$i].'</div>';
    }



--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
xarakiry
Дата 25.1.2009, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 28.5.2008

Репутация: -1
Всего: -1



Рейтинг не ограничен...он начисляется по количеству ссылок с таким тегом...т.е чем больше ссылок  с тэгом к примеру CMS тем больше размер его шрифта. Если к примеру его рейтинг 130 и это максимальный рейтинг из тех 30 тегов что я вывел то ему придается максимальный размер шрифта, тот самый максимальный размер что я задал в настройках...к примеру 25.  А самый малый рейтинг из тех что я вывел принимает минимальный размер шрифта, тот что тоже указан в настройке...к примеру 8. Остальные что по возрастанию забирают себе размер шрифта по возрастанию.
--------------------
Все университеты Азербайджана на students.az
PM MAIL WWW   Вверх
bars80080
Дата 25.1.2009, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



определяй параметры перед началом вывода

находишь максимальный и минимальный рейтинги
$maxR и $minR, берёшь разницу $difR = $maxR - $minR; а затем чуть меняешь формулу:

Код

    $cls = round(($r[$i]['rang'] - $minR)*9/$difR);
и по этой градации мнимальный всегда будет с классом .tagS0 , а максимальный .tagS9
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0926 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.