Загрузка в массив и сортировка для "облака тегов"

rolph

Новичок
Загрузка в массив и сортировка для "облака тегов"

Есть 2 таблицы в БД Mysql
в одной:
id и name(фотоальбома)

в другой
parent_id - это id из предыдущей базы
Отсюда определяем кол-во фоток в определенном parent_id

Есть идея сделать изменение размера шрифта у альбомов с определенным кол-вом фотографий.

Как это дело засунуть в двумерный массив?
array (id => 'количество фоток')
отсортировать его и выводить разные размеры name (связан с id)

пока есть вот это:
PHP:
<?php 
echo '<br>';
$res1=mysql_query('SELECT * FROM wp_aniga_albums WHERE 1');

if (mysql_num_rows($res1)>0)
{
while ($row1=mysql_fetch_array($res1))
{
$res2=mysql_query('SELECT * FROM wp_aniga_picture WHERE parent_id='.$row1['id'].'');
if (mysql_num_rows($res2)>0)
{
$vol=mysql_num_rows($res2);
}
$a_name=$row1['name']; 
$url=$row1['id'];
echo '
<table border="0" cellSpacing="1" class="birth_table">
<tr>
<td>—&nbsp;&nbsp;альбом</td>
<td><a href="?page_id='.$url.'">«'.$a_name.'»</a></td>
<td>   '.$vol.' фото</td>
</tr>
</table>';
}
}

?>
 

HraKK

Мудак
Команда форума
GROUP BY count

-~{}~ 21.11.07 16:59:

а вообще удаляюсь, голова не варит нефига не пойму что ты делаешь.
 

rolph

Новичок
Автор оригинала: HraKK
GROUP BY count

-~{}~ 21.11.07 16:59:

а вообще удаляюсь, голова не варит нефига не пойму что ты делаешь.
Есть несколько фотоальбомов.

Есть список, вот я хочу этот список сделать привязанным к количеству фот в альбоме.
Т.е. чем больше фоток, тем больше размер шрифта

PHP:
SELECT parent_id, COUNT( parent_id ) FROM wp_aniga_picture GROUP BY parent_id ORDER BY COUNT( parent_id ) DESC
Выводит это дело по убыванию:
id, количество

Как теперь запихнуть в массив?
 

Pigmeich

Новичок
Как теперь запихнуть в массив?
позвать Ктулху.

Можно и просто еще раз просмотреть документацию по функциям твоей клиентской библиотеки.

ЗЫ: скажи честно, кусок из заглавного поста был написан копи-пастом?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
rolph
Неужели за полтора года ничего не поменялось?

Необходимый минимум
[m]mysql_query[/m]
[m]mysql_fetch_assoc[/m]
[m]while[/m]

-~{}~ 21.11.07 19:54:

в цикле
$my_array[] = $.............................
 

rolph

Новичок
Автор оригинала: Pigmeich
позвать Ктулху.

Можно и просто еще раз просмотреть документацию по функциям твоей клиентской библиотеки.

ЗЫ: скажи честно, кусок из заглавного поста был написан копи-пастом?
К вашему сожалению - нет...
Данный код написал сам, как доработку для модуля фотогалереи anigo для wordpress'a.

-~{}~ 21.11.07 23:07:

Автор оригинала: Mr_Max
rolph
Неужели за полтора года ничего не поменялось?

Необходимый минимум
[m]mysql_query[/m]
[m]mysql_fetch_assoc[/m]
[m]while[/m]

-~{}~ 21.11.07 19:54:

в цикле
$my_array[] = $.............................
Спасибо!

PS: за полтора года поменялось многое... Просто бывает иногда, из-за недостатка знаний по таким легким вопросам входишь в ступор

-~{}~ 22.11.07 12:23:

Немного подредактировал(упрастил) код:
PHP:
<?php
echo '<br>';
$res=mysql_query('SELECT wp_aniga_albums.id, name, count( * ) cnt FROM wp_aniga_albums JOIN wp_aniga_picture ON wp_aniga_albums.id = wp_aniga_picture.parent_id GROUP BY wp_aniga_albums.id');

if (mysql_num_rows($res)>0)
{
while ($row=mysql_fetch_array($res))
{
$vol=$row['cnt'];
$a_name=$row['name']; //album's name
$url=$row['id'];
echo '<span class="birth_table">&#151;&nbsp;&nbsp;альбом&nbsp;<a href="?page_id='.$url.'">&#171;'.$a_name.'&#187</a>&nbsp;'.$vol.' фото</span><br>';
}
}

echo $row;
?>
Можно ли сделать привязку к размеру шрифта?
Т.е. у максимального 2em, а у минимального 1em
шаг=кол-ву альбомов
 

rolph

Новичок
Автор оригинала: HraKK
можно
Help, при двух элементах выводит 3
PHP:
<?php
echo '<br>';
$result=mysql_query('SELECT wp_aniga_albums.id, name, count( * ) as cnt FROM wp_aniga_albums JOIN wp_aniga_picture ON wp_aniga_albums.id = wp_aniga_picture.parent_id GROUP BY wp_aniga_albums.id ORDER BY RAND()');

if (mysql_num_rows($result)>0)
{
while ($row=mysql_fetch_array($result))
{

$url=$row['id'];

$tags[$row['name']] = $row['cnt']; //разделяем название альбома и кол-во фоток

$max_size = 1.7; // максимальный размер шрифта в em
$min_size = 1.4; // максимальный размер шрифта в em

$max_qty = max(array_values($tags));//определение альбома с наибольшим числом фоток
$min_qty = min(array_values($tags));//определение альбома с наименьшим числом фоток

// определение интервала
$spread = $max_qty - $min_qty;
if (0 == $spread) { // чтобы избежать деления на ноль в дальнейшем
    $spread = 1;
}

$step = ($max_size - $min_size)/($spread);//считаем шаг

foreach ($tags as $key => $value) {

    $size = $min_size + (($value - $min_qty) * $step);//приращение от минимального к максимальному
    echo '<span class="birth_table">&#151;&nbsp;&nbsp;альбом&nbsp;<a href="?page_id='.$url.'" style="font-size: '.$size.'em">'.$key.'</a>&nbsp;'.$value.' фото</span><br>';
	echo
	}

}
}

?>
 

rolph

Новичок
Автор оригинала: Ermitazh
rolph куда выводит? как считаешь количество элементов?
Переношу результат запроса в массив.
Считается всё в запросе. Но, когда тестил не дублировалась одна запись
 

akond

Новичок
Послушайте, а зачем вообще это облако тагов? Есть от него хоть какая-нибудь польза?
 

Pigmeich

Новичок
akond
Ну типа позволяет посетителю перейти на самые лучшие (=популярные) альбомы.

-~{}~ 22.11.07 22:17:

rolph

У тебя ведь код переборки выборки написан еще в первом посту. Какие вообще проблемы?
 

akond

Новичок
Автор оригинала: Pigmeich
akond
Ну типа позволяет посетителю перейти на самые лучшие (=популярные) альбомы.
Так, хорошо. А зачем тогда называть его облако тагов? Сделали бы список "самые популярные альбомы" и баста. Зачем так усложнять?
 
Ну как же зачем, это же "гламурный десигн" нонче ! Это нам, черни, не понять.

P.S. Дизайнер - враг программиста ))))))))

-~{}~ 23.11.07 10:20:

Я тоже недавно парился с такой хренью, занимался "пропорционированием", шкалированием, бегал искал учебники по математики за 5-ый класс... и нихрена не сделал ))))))). Но потом сел, нарисовал всё на бумажке (конкретно с цифрами, а не с "x" и "y", как в школе учили)))) и придумал самопальную формулу, которая (о, господи!) работает !!!
А коллега с работы, юный гений математики, чуть ли не за 15 минут, накатал каких-то формул, с какими то нормализациями... я чуть в обморок не упал. Так что это очень весёлая проблема, на самом деле )))))))))
 

Pigmeich

Новичок
akond
Смысл в том, что мы выводим все теги.

Фича важная и полезная.

Но, кроме того, мы хотим помочь юзеру разобраться в 79 ссылках, потому у самых популярных увеличиваем шрифт, а у непопулярных - уменьшаем.

Так как отформатировать все это нереально, то мы выводим поток тегов в ячейку с фиксированной шириной (и слабо фиксированной высотой ;) ). Из-за непостоянного форматирования этот элемент дизайна обзывают облаком.
 
Pigmeich
Ничего против, лично, не имею. Соглашусь с полезностью, иронично улыбнусь над важностью... но название, внатуре, просто "замечательное". У людей с утра после жёсткой пьянки лицо "опухает" )))))))... О! да это же облако мяса !! )))))))
Просто очень тонкая связь, данного термина с облаком ))))

Извиняюсь за оффтоп ))))))))
 

Pigmeich

Новичок
akond
Ну самый маленький шрифт должен быть не меньше чем css'ный small. А размеры шрифтов служат затем что бы человек зашедший на сайт по скейтбоардам (и просматривающий его по диагонали) увидел бы слова "конвент" (или чего там у них?). А постоянный посетитель имел возможность присмотреться и выбрать тег "Вася Пупкин".
 
Сверху