La solucion que a continuacion esta sujeta a que tus tags esten separados por algun caracter; bien lo primero que tienes que hacer es concatenar todos los registros del campo tag
Luego si usas por ejemplo una coma ( , ) separadora enre tags, tendrias que ser un explode de la concatenacion con la coma (,) como separador, luego ordenar de acuerdo a la cantidad que se repite en la variable de tipo array en donde almacenara el tag junto con el numero de repeticiones que se repite en el array, y luego un poco de css y tienes tu nube de tags
te doy algunas pautas con codigo
Código PHP:
<?php
$alltags=//sera igual a la concatenacion de todas los registros del campo tag
$tags=explode(",",$alltags);
array_walk($tags,trim($tags)); //eliminas los espacios
$total=count($tags);
$tags= array_count_values($tags); // devuelve array("prueba"=>2, "chicos"=>2, "chicas"=>1)
ksort($tags); //se ordena atendiendo al índice que tienen.
reset($tags); //Fija el puntero interno de una matriz a su primer elemento
while (list($clave, $valor) = each($tags)){
$porcentaje= @round($valor*100/$total); //$por = @round($valor*100/$total,1);
echo "<a href='#' title='".$porcentaje."% con ".$valor." Entradas'>";
echo $clave."</a> <span>(".$valor.")</span> -- ";
}
?>