Como hacer una Nube de Etiquetas con Php
Algunos de nuestros lectores nos han enviado sus emails preguntado de cómo hacer una nube de etiquetas. Pues para todos los que la pidieron aquí les traemos un ejemplo muy simple de cómo hacer una de esas famosas nubes con un array.
Recuerda que si tienes ejemplos que quieras compartir con la comunidad de empresario, puedes enviarlos por mail.
Una nube de etiquetas (tag cloud en inglés) es una representación visual de las «etiquetas» usadas en un sitio Web. Generalmente este listado de palabras se ordena alfabéticamente; las etiquetas más utilizadas se representaran con un tipo de letra de tamaño mayor que el resto. Wikipedia
Pues vamos a hacer una nube de etiquetas partiendo de un array.
Lo primero que necesitamos es crear un archivo de nombre nube.php y en dentro vamos a colocar el código CSS para el estilo que aplicaremos a las palabras de nuestra nube. Fíjate que en a.etiqueta5 estoy aplicando un formato distinto a los demás.
- <style type="text/css">
- <!--
- a:link {
- color: #990000;
- text-decoration:none;
- }
- a:visited {
- color: #990000;
- }
- a:hover {
- color: #999999;
- }
- a:active {
- color: #990000;
- }
- .etiqueta0 {
- color:#CCCCCC;
- font-size: 10px;
- }
- a.etiqueta1 {
- font-size: 12px;
- }
- a.etiqueta2 {
- font-size: 14px;
- }
- a.etiqueta3 {
- font-size: 18px;
- }
- a.etiqueta4 {
- font-size: 22px;
- }
- a.etiqueta5:link {
- font-size: 26px;
- color:#000099;
- text-decoration:none;
- }
- a.etiqueta5:visited {color: #000099;}
- a.etiqueta5:hover {color: #999999;}
- a.etiqueta5:active {color: #000099;}
- a.etiqueta6 {
- font-size: 36px;
- }
- -->
- </style>
Ahora hacemos la conexión a nuestro servidor y seleccionamos la base de datos que utilizaremos.
- <?php // indicamos que es código php
- /*
- tag cloud
- Nube de etiquetas formada por un array
- Autor: Doroteo Catalán L.
- Web: www.empresario.mx
- */
- function conecta_db() {
- //esta función la puedes ingresar en un archivo externo y después llamarla con include("");
- @mysql_connect('localhost','root','password')or die ('Ha fallado la conexión: '.mysql_error());
- @mysql_select_db('mi_base')or die ('Error al seleccionar la BD: '.mysql_error());
- }
- conecta_db();
Seleccionamos el campo que tiene las etiquetas separadas por comas “,”. Y Agregamos el contenido a una variable, también separándola con comas.
En este mismo query debes indicar un rango de fechas con Where.
- <?php
- function nube_etiquetas(){
- global $urlSitio ; // vamos a utilizar la direccion del sitio
- $result = mysql_query('SELECT etiquetas FROM preguntas LIMIT 10');
- while($row = mysql_fetch_array($result)) {
- $var1 .= $row['etiquetas'].',';
- }
- $var1=substr($var1,0,strlen($var1)-1);
- $array_sustitucion = array(',,','.','/',':'); // por si acaso tengas alguno de estos caracteres
- $etiquetas=str_replace($array_sustitucion, ",", $var1);
- $etiquetas=explode(",",$etiquetas); // creamos y llenamos un array
- array_walk($etiquetas,'quitaEspacio');
- $total=count($etiquetas);
- $etiquetasOk = array_count_values($etiquetas); // devuelve array("prueba"=>2, "chicos"=>2, "chicas"=>1)
- echo 'Total de etiquetas'.$total.'<br />';
- foreach($etiquetasOk as $palabra=>$valor) {
- $porcentaje = round($valor*100/$total);
- if($porcentaje >= 70){
- $estilo = 6;
- }elseif($porcentaje >= 35){
- $estilo = 5;
- }elseif($porcentaje >= 30){
- $estilo = 4;
- }elseif($porcentaje >= 22){
- $estilo = 3;
- }elseif($porcentaje >= 10){
- $estilo = 2;
- }else{
- $estilo = 1;
- }
- echo '<a href="'.$urlSitio.'" class="etiqueta'.$estilo.'">'.$palabra.'<span class="etiqueta0">'.'('.$valor.')</span> </a>';
- }
- }
- function quitaEspacio($elemento=' '){
- $elemento = trim($elemento);
- }
- ?>
Para llamar la nube solo llamamos la función con :
- <?php
- nube_etiquetas();
- ?>