Ver Mensaje Individual
  #3 (permalink)  
Antiguo 24/08/2008, 16:31
acido69
 
Fecha de Ingreso: julio-2008
Mensajes: 21
Antigüedad: 16 años, 8 meses
Puntos: 2
Respuesta: Algoritmo de Etiquetas / Tags

La primera pregunta sería:
¿En base a qué quieres crear esa nube?
  1. según las popularidad de los artículos y por ende, las etiquetas que más interés tienen.
  2. según la cantidad de tags relacionados a los artículos, que creo que te refieres a esta

para el segundo hay dos formas de hacerlo

1) necesitas una tabla de "tags" asociado a tu articulo (n:1), la relación la haces a la hora de crear el árticulo con los tags

2) la manera un poco sucia, un campo de tags en tu tabla de árticulos. Aquí te paso un código que use para uno:

Código PHP:
/* 
$data es el valor que te devuelve el campo(donde tengas tu tag) de todos los artículos. yo pongo un array de ejemplo
*/
$rows=array();
$rows[]='peras, manzanas, plátanos, uno';
$rows[]='peras, dos, tres,           cuatro, cinco, manzanas'
//los espacios valen para simular, y la función para limpiar
function _cleanSpace(&$string)
    {
        
$string ereg_replace("(\n|\t|\v|\r)"' '$string);
        if(
ereg(", +"$string)){
            
$string ereg_replace(", +"','$string);
        }
        if(
ereg(" +,"$string)){
            
$string ereg_replace(" +,"','$string);
        }
        
    }


$string '';
foreach(
$rows as $row){
            
$string .= ','.$row;
}
cleanSpace($string); //  limpia los espacios en blanco entre las comas
$string substr($string1);
        
$list split(','$string);
$out  = array();
$maxvalue 0;
for(
$i=0$n=count($list);$i<$n;$i++){
  if(
array_key_exists($list[$i], $out)){
        
$out[$list[$i]]++;                
    }else{
        
$out[$list[$i]] = 1;
    }
    if(
$out[$list[$i]]>$maxvalue){
        
$maxvalue $out[$list[$i]]; 
    }
}        
foreach(
$out as $k=>$v){
    
$out[$k] = round(($v/$maxvalue)*10);
}
var_dump($out); 
espero te valga, el foreach creo que dará error, mi ratelo a ver si te vale.
ojo, este código en una web con cientos de registros(artículos) es muy lento