Foros del Web » Programando para Internet » PHP »

como hacer nube (tag cloud) con decadas en campo tipo date

Estas en el tema de como hacer nube (tag cloud) con decadas en campo tipo date en el foro de PHP en Foros del Web. Buenas de nuevo! Ahora me toca practicar con los tag cloud... Mi intención es hacer una nuve de etiquetas con las decadas de las fechas ...
  #1 (permalink)  
Antiguo 02/09/2008, 11:43
 
Fecha de Ingreso: mayo-2006
Mensajes: 18
Antigüedad: 18 años
Puntos: 0
como hacer nube (tag cloud) con decadas en campo tipo date

Buenas de nuevo!

Ahora me toca practicar con los tag cloud...

Mi intención es hacer una nuve de etiquetas con las decadas de las fechas de los datos de mi BDD.

Me explico mejor, en una tabla tengo una serie de datos, entre ellos se encuentra un campo tipo date, el cual quiero usar para hacer una nube... pero por decadas!

Con este código ya he conseguido hacer-lo por años...

Código PHP:
<?php
define
("DBHOST""MIHOST");
define("DBNAME""MIBDD");
define("DBUSER""MIUSUARIO");
define("DBPASSWORD""MIPASSWORD");
mysql_connect(DBHOSTDBUSERDBPASSWORD) or die(mysql_error());
mysql_select_db(DBNAME) or die(mysql_error());
echo 
"<br />";
?>
<div style="width:400px;">
<font face="verdana">
<?php

$fontmax
=20;    //mida maxima
$fontmin=8;     //mida minima
$tagmax=10;     //maximes etiquetes a mostrar
if ( $tagmax <= 0)
        
$tagmax 10;

$query ="SELECT year(data) as tag,count(year(data)) as quantity FROM propia GROUP BY year(data) LIMIT 0,$tagmax";
$result mysql_query($query);

//Array
while ($row mysql_fetch_array($result)) {
        
$tags[$row['tag']] = $row['quantity'];
}

//Quantitat d'elements i sumatori de tots
$max_qty max(array_values($tags));
$universo array_sum(array_values($tags));

//Formula de WordPress
$elemento_menor min(array_values($tags));
$hoja max(array_values($tags)) - $elemento_menor;

if ( 
$hoja <= 0)
        
$hoja 1;
        
$letra_hoja $fontmax $fontmin;

if ( 
$letra_hoja <= 0)
        
$letra_hoja 1;
        
$font_step $letra_hoja $hoja;

//Recorrem l'Array
foreach ($tags as $key => $value) {

//Reinicialitzem variable
$porcentaje=0;

//Calcular el Porcentatge Real
$porcentaje=($value/$universo)*100;

//Calcul
$tamanio=( $fontmin + ( ( $value $elemento_menor ) * $font_step ) );

//Imprimir Tag
echo '<a href="fitxa.php?seleccio='.$key.'" style="font-size: '.$tamanio.'pt"';
echo 
' title="'.$value.' resultats trobats relacionats amb '.$key.'"';
echo 
'>'.$key.'</a> ';
}

mysql_close();

?>
</font>
</div>
Y el resultado que obtengo es este:



Y a mi me gustaria tener algo de este estilo...

1960 1970
1980

Es posible hacer-lo?

Alguien me puede hechar una mano?

Gracias gurus!!!
  #2 (permalink)  
Antiguo 02/09/2008, 13:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: como hacer nube (tag cloud) con decadas en campo tipo date

Hola nandelbosc,

Lo que podrías hacer es irlo guardando en un arreglo por decadas, y cada que veas un dato de la BDD lo sumas a esa decada y posteriormente generas el tag cloud.

Saludos.
  #3 (permalink)  
Antiguo 02/09/2008, 14:59
 
Fecha de Ingreso: mayo-2006
Mensajes: 18
Antigüedad: 18 años
Puntos: 0
Respuesta: como hacer nube (tag cloud) con decadas en campo tipo date

Gracias GatorV,

de hecho me estoy planteando seriamente lo que comentas, por dos motivos:

1.- después de buscar por la red un par de horas, no veo mas solucion que entrar las decadas en un campo o liarme una barbaridad haciendo cálculos en PHP con varias consultas SQL.

2.- ya que la base de datos que tengo esta aún en pruebas, es decir, no tengo todos los datos introducidos, es una solucion válida.

Esperaré a hasta mañana, a ver si alguién tiene la solución (o tengo el dia para programar), y si no lo haré de esta manera.

Gracias a todos/as!
  #4 (permalink)  
Antiguo 02/09/2008, 16:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: como hacer nube (tag cloud) con decadas en campo tipo date

No es necesario hacer varias consultas, con un solo arreglo puedes hacer las cosas:
Código PHP:
$decadas = array();
while (
$row mysql_fetch_array($result)) {
        
$year $row['tag'];
        
$decada substr$year0);
        if( !isset( 
$decadas[$decada] ) ) {
               
$decadas[$decada] = 0;
        }
       
        
$decadas[$decada] += (int) $row['quantity'];

Ya en $decadas tendras un array separado por decadas.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:33.