[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Облако тегов
OrlenkoKN
В общем, переделываю кодик один, который выводит облако тегов.
В базе метки хранятся так:
id labels
1 метка1, метка2
2 метка3
3 метка4 метка5, метка2
то есть встречаются словосочетания.

В моём случае скрипт выводит все слова поодиночке через пробел, вот так:
метка1 МЕТКА2 метка3
и тд. мне же нужно, чтобы словосочитания он не обрезал, а выводил как надо, то есть:
метка1 метка4 метка5

вот оригинал:
PHP
$tag1 mysql_query("select * from Blogg where status=1");
while(
$tags1 mysql_fetch_array($tag1))
{
      
$label=$tags1['labels'];
      
$all_labels.=$label." ";
}

for (
$i=0$i<=strlen($all_labels);$i++)
{
  
$symb substr($all_labels,$i,1);
  if (
$symb!=","$all_labels_new.=$symb;
}

$all_labels_cut explode(" "$all_labels_new);
$all_labels_cut_count count($all_labels_cut);
$all_labels_cut array_unique($all_labels_cut);

for (
$i=0$i<=$all_labels_cut_count$i++)
{
   
$vhojd substr_count($all_labels_new$all_labels_cut[$i]);
   
$vhojd2=($vhojd+5)*2;
   
$vivod_metok.="<span>
                     <a href='http://site.su/labels/"
.$all_labels_cut[$i]."' style='font-size:".$vhojd2."pt'>".$all_labels_cut[$i]."</a>
                  </span>"
;
   
$vhojd2="";
}


Подскажите, пожалуйста, что мне подправить нужно?



Спустя 44 минуты, 13 секунд (22.09.2009 - 10:59) hara_ написал(а):
наверно как то так:
PHP
$tag1 mysql_query("select * from Blogg where status=1");
$labels = array();
$f create_function('$v,$k,&$labels','if(isset($labels[$v])){$labels[$v]++;}else{$labels[$v]=0;}');
while(
$tags1 mysql_fetch_array($tag1)){
    
array_walk(explode(',',$tags1['labels']),$f,&$labels);
}
foreach(
$labels as $k=>$v){
    
$vivod_metok.="<span> <a href='http://site.su/labels/".$k."' style='font-size:".(($v+5)*2)."pt'>".$k."</a></span>";
}

Спустя 10 минут, 12 секунд (22.09.2009 - 11:09) OrlenkoKN написал(а):
Огромнейшее спасибо, Уважаемый! Всё работает, осталось только в ссылках метки-транслиты прописать...

Спустя 50 минут, 48 секунд (22.09.2009 - 12:00) OrlenkoKN написал(а):
Помогите, пожалуйста ещё один моментик доделать... Я сейчас просто соображаю чего-то туго(((

В общем в базе есть 2 поля с метками: рус и транслит.. рус для текста, а транслит, для урла соответственно.

то есть, ссылка должны быть примерного вида:
PHP
<a href='http://site.su/labels/".$k."' style='font-size:".(($v+5)*2)."pt'>".$k2."</a>

где k - $tags1['labels_trans']
k2 - $tags1['labels']

что мне доделать нужно?

Спустя 2 часа, 47 минут, 43 секунды (22.09.2009 - 14:48) hara_ написал(а):
А если постоянно пытаться соображать, то постепенно это будет происходить не так туго как в начале.

Как то так:
PHP
//variant with translated labels
$tags mysql_query("SELECT `labels`,`labels_trans` FROM `blogg` WHERE `status`=1");
$labels = array();
$f create_function('$v,$k,&$labels','$k=trim($k);if(isset($labels[$k])){$labels[$k][0]++;}else{$labels[$k][0]=0;}$labels[$k][1]=$v;');
while(
$tag mysql_fetch_array($tags)){
    @
array_walk(array_combine(
        
explode(',',$tag['labels_trans']),
        
explode(',',$tag['labels'])),
        
$f,&$labels);
}
foreach(
$labels as $k=>$v){
    
$vivod_metok.="<span><a href='http://site.su/labels/".$k."' style='font-size:".(($v[0]+5)*2)."pt'>".$k."</a></span>";
}


Ахтунг! Если строка меток с транслитом не будет совпадать по количеству с то этой же строкой но на на русском, - то будет проигнорирована.

Эксклюзивно для вас допустил одну ошибку ( одну официально, а там кто знает) )
исключительно в образовательных целях.

Спустя 16 часов, 49 минут (23.09.2009 - 07:37) OrlenkoKN написал(а):
Как-то так в общем:

PHP
//variant with translated labels
$tags = mysql_query("SELECT * FROM Blogg WHERE status=1");
$labels = array();
$f = create_function('$v,$k,&$labels','$k=trim($k);if(isset($labels[$k])){$labels[$k][0]++;}else{$labels[$k][0]=0;}$labels[$k][1]=$v;');
while(
$tag = mysql_fetch_array($tags)){
    @array_walk(array_combine(
        explode(',',$tag['labels_trans']),
        explode(',',$tag['labels'])),
        $f,&$labels);
}
foreach(
$labels as $k=>$v){
    $vivod_metok.="<span> <a href='http://site.su/labels/".$k."' style='font-size:".(($v[0]+5)*2)."pt'>".$v[1]."</a></span>";
}


Спасибо огромное!=)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.