hackers! Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
15 de Marzo de 2010, 05:13:12
Inicio Buscar Ayuda Ingresar Registrarse
Noticias: Antes de preguntar utiliza boton o en su defecto Google.
Gracias gente :
Ecuador!Guatemala!!UruguayBrasilRepublica DominicanaBolivia *USAColombia!ESPAÑA!Venezuela!Chile **El Peru!ArgentinaMexico
+  Foros pOrtal Hacker
|-+  Programacion
| |-+  Desarrollo Web
| | |-+  PHP (Moderadores: carlmycol, shevchenko)
| | | |-+  Nube de etiquetas con enlaces
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Nube de etiquetas con enlaces  (Leído 200 veces)
Que buscas?..
shevchenko
Una vez un ordenador me venció jugando al ajedrez, pero no me opuso resistencia cuando pasamos al kick boxing
Moderador
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 1,191


Si la vida no te sonríe… ¡Hazle cosquillas!


Ver Perfil WWW
« : 22 de Mayo de 2009, 03:40:52 »



Mejoramos la nube de etiquetas creándola con enlaces a otras páginas.

Esta vez vamos a terminar de mejorar la nube creando enlaces en los nombres de las etiquetas.

Para ello vamos a necesitar las mismas tablas que utilizamos en el artículo anterior y fijándonos en que utilizaremos el nombre lógico para crear la url del enlace.

Aquí vamos a tener que crear otro array asociativo con los datos que necesitamos para crear el enlace, es decir, el nombre de la etiqueta y el nombre lógico. Para ello tendremos que hacer otra nueva consulta a la base de datos con los datos de cada etiqueta.

El código quedaría de la siguiente forma:

$ssql_etiquetas="select nombre_etiqueta, etiqueta.id_etiquet a from etiqueta, articulo, articulo_etiqueta where etiqueta.id_etiquet a=articulo_etiqueta.id_etiqueta and articulo.id_articul o=articulo_etiqueta.id_articulo";
}
$rs_etiquetas=mysql_query($ssql_etiquetas);
//Creo un array para meter los datos de las etiquetas
$etiquetas = array();
//Para cada etiqueta averiguo cuantas veces aparece en los articulos
while($fila_etiquetas=mysql_fetch_object($rs_etiquetas)){
   $ssql_cuantos="select count(id_etiqueta) as cuantos from breve_etiqueta where id_etiqueta=".$fila_etiquetas->id_etiqueta." order by cuantos desc ";
   $rs_cuantos=mysql_query($ssql_cuantos);
   $fila_cuantos=mysql_fetch_object($rs_cuantos);
   //Voy creando el array asociativo
   $etiquetas[$fila_etiquetas->nombre_etiqueta]=$fila_cuantos->cuantos;
   //A su vez creamos otro array donde meteremos otro con los datos que necesitamos para crear lso enlaces
   $ssql_datos="select * from etiqueta where id_etiqueta=".$fila_etiquetas->id_etiqueta;
   $rs_datos=mysql_query($ssql_datos);
   $fila_datos=mysql_fetch_object($rs_datos);
   $ids[$fila_etiquetas->nombre_etiqueta]=$fila_datos->nombre_logico;
}

Con esto ya tendríamos los dos arrays que necesitamos creados, ahora tenemos que modifcar la función nube_etiquetas que tenemos en el articulo inicial de nubes de etiquetas (enlace al articulo código php de la nubes de etiquetas)

La única modificación que tenemos que hacer es cambiar la línea que muestra la etiqueta.

echo $nombreetiqueta;

por la siguiente línea:

echo '<a href="http://www.dominio.com/etiquetas/'.$ids[$nombreetiqueta].'.html">' .$nombreetiqueta. '[/url]';

Pero claro no se nos puede olvidar añadir como variable a la función en nuevo array que hemos creado.

El código de la función seria el siguiente:

function nube_etiquetas($etiquetas,$ids){
//saco los valores máximo y minimo de la apariciones de etiquetas
$valor_max = max($etiquetas);
$valor_min = min($etiquetas);
$diferencia = $valor_max - $valor_min;

//ordeno el array
ksort($etiquetas);

//creo la capa donde se van a mostrar las etiquetas
echo '<div class="nube">';
echo '<div class="etiquetas">';

foreach ($etiquetas as $nombreetiqueta=>$apariciones){
   
    //echo $nombreetiqueta;
//calculo un valor de 0 a 10 para cada etiqueta, porcentualmente según valores máximos y mínimos encontrados
$valor_relativo = round((($apariciones - $valor_min) / $diferencia) * 10);
//escribo las etiquetas con su estilo dependiendo del valor porcentual
echo "<span class='etiquetatam$valor_relativo'>";
echo '<a href="http://www.dominio.com/etiquetas/'.$ids[$nombreetiqueta].'.html">' .$nombreetiqueta. '[/url]';

    echo "</span> ";
}
//meto una capa sin float para que tome todo el alto de las etiquetas
echo "<div style='clear:both'></div>";
//cierro la nube y las etiquetas
echo '</div>';
echo '</div>';
}

Y bueno solo nos quedaría recordar que cuando llames a la función tienes que pasarle los dos arrays.

nube_etiquetas($etiquetas,$ids);

Con la llamada terminamos los pasos a seguir para crear una completa nube de etiquetas en PHP.

fuente: webtaller
En línea

Páginas: [1] Ir Arriba Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión
Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC hacker descargas gratis
Ranking-Hits