Foros del Web » Programando para Internet » ASP Clásico »

Nube de tags (etiquetas)

Estas en el tema de Nube de tags (etiquetas) en el foro de ASP Clásico en Foros del Web. Buenas, se me ha mandado programar una nube de tags en ASP con VBscript Las etiquetas se guardan en una base de datos, que consta ...
  #1 (permalink)  
Antiguo 16/10/2008, 05:40
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 2 meses
Puntos: 0
Nube de tags (etiquetas)

Buenas, se me ha mandado programar una nube de tags en ASP con VBscript

Las etiquetas se guardan en una base de datos, que consta de 3 campos:
Id, Nombre, Click

Id para el número
Nombre para el nombre visible de la etiqueta
Click para un número que va aumentando a medida que la gente pincha en esa etiqueta para ver los resultados.

Al haber muchas etiquetas diferentes he creado un formulario (dentro de la administración) en el cual insertas un número (20 por ejemplo) y coge 20 tags aleatoriamente y los guarda en un array de un include, para poder sacarlo en la web.
Aparecerán los mismos tags hasta que meta otro número (30 por ejemplo) entonces se borrará esa información y cogerá 30 aleatoriamente.

Una vez hecho esto, me surge la duda. Qué fórmula aplicar para distribuir los diferentes tamaños de letra para cada etiqueta.

Si os fijais en las nubes de tags de las web, generalmente hay una o dos etiquetas con un tamaño máximo, luego 5 etiquetas (u otro número) con un tamaño un poco menor y así sucesivamente, hasta quedar muchas etiquetas con el tamaño de letra pequeño.

Teniendo en cuenta que en la BD alguna etiqueta pueda tener 100 clicks, otras 10, otras 0, etc...

A alguien se le ocurre una fórmula equilibrada?

Ya se que la pregunta es un poco extravagante, pero necesito alguna que me de un resultado piramidal (pocas de gran tamaño, muchas de tamaño menor) que sea quizá por porcentajes, ya que yo puedo sacar 20 tags, o 50, o 100, o 200...

Un saludo y gracias.
  #2 (permalink)  
Antiguo 16/10/2008, 07:42
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
Respuesta: Nube de tags (etiquetas)

quizás un poco de lectura te sirva

http://www.forosdelweb.com/f15/nube-tags-asp-498073/
http://www.maestrosdelweb.com/actual...nubes-de-tags/

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #3 (permalink)  
Antiguo 18/10/2008, 18:36
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 5 meses
Puntos: 16
Respuesta: Nube de tags (etiquetas)

yo tengo uno asi:

[highlight=asp]<%'REALIZA TU CONEXION

SQL="Select * From palabras order by id"
RS.open sql, oconn

do while not rs.eof
Randomize
minimo = 2
maximo = 4
p_id = Int(((maximo-minimo+1) * Rnd) + minimo)
%><h<%=p_id%> style="clear:none !important; display:inline !important; background:none !important;">
<a href="<%=rs("enlace")%>"><%=rs("palabra")%></a>
</h><%=p_id%>>
<%rs.movenext
loop%>
[/highlight]

Aqui lo que hago es intercambiar etiquetas <H2> a <H4> aleatoriamente
__________________
CreandoWebs.com
www.creandowebs.com
PLANTILLAS TEMPLATEMONSTER CON 10% DE DESCUENTO

Última edición por sjam7; 18/10/2008 a las 19:06
  #4 (permalink)  
Antiguo 20/10/2008, 02:51
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Nube de tags (etiquetas)

Hola, gracias por responderme, me estuve mirando los links y he sacado buenas ideas, pero ahora me surge un problema:

El proceso es el siguiente:
Establezco un número de tags a aparecer (30 por ejemplo)
Verifico que el número introducido sea menor o igual a las palabras contenidas en la base de datos
Crear array
Cojo números aleatorios
Recorrer el array para verificar que no se ha introducido con anterioridad (si ya se ha introducido no lo almacena y coje otro al azar, hasta que encuentre uno que no se haya introducido, entonces lo almacenará y pasaremos al siguiente elemento del array)

El problema viene al comprobar que si me mete números duplicados, no debo hacer bien la verificación...

No hagais caso a comentarios del tipo "escribir físicamente el array" que es código sin terminar...

Mirad donde pone en comentario FORMA1 y FORMA2

Código:
Num=int(request.Form("text1"))

'Verificamos que Num no sea mayor que el total de registros
SQL0="Select * From Nube_Tags"
Set RS0 = Server.CreateObject("ADODB.Recordset")
RS0.Open SQL0, cn,1,1
Registros=RS0.RecordCount
if(Num>Registros) then
Num=Registros
end if

RecorridoTotal=0

'Cogemos el máximo valor de la BD
SQL1="Select max(id) as maximo From Nube_Tags"
Set RS1 = Server.CreateObject("ADODB.Recordset")
RS1.Open SQL1, cn,1,3
Maximo=RS1("maximo")
Response.Write("Máximo: "& Maximo)

'Creamos el array
Dim vector()
Redim vector(Num-1)

Response.Write("<br>Aleatorios<br><br>")

while(RecorridoTotal<Num)

'Hallamos números aleatorios
Randomize
Rand = Int((Maximo) * Rnd)

'Hacer sql para coger un número al azar
SQL2="Select * From Nube_Tags where Id="&Rand
Set RS2 = Server.CreateObject("ADODB.Recordset")
RS2.Open SQL2, cn,1,3

Incluido=0

if not RS2.EOF then
'Recorrer el array para verificar que no se ha introducido con anterioridad

'FORMA 1                                 <<<----ESTO!!!!
'For i=0 to ubound(vector)
'if (vector(i)=Rand) then
'Incluido=1
'end if
'next


'FORMA 2                                 <<<----ESTO!!!!
for each valor in vector
if (valor=Rand) then
Incluido=1
end if
next

If(Incluido=0) then
'Agregarlo al array
vector(total)=Rand

'Escribir fisicamente el array

Response.Write(Rand&"<br>")
RecorridoTotal=RecorridoTotal+1
End if
End if
wend

Gracias por vuestro tiempo
  #5 (permalink)  
Antiguo 22/10/2008, 20:31
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 5 meses
Puntos: 16
Respuesta: Nube de tags (etiquetas)

no funciona ya lo del highlight=asp???????

oye, y que base de datos usas? si usas mysql puedes usar la opcion RAND()

algo asi:
SELECT * FROM tabla WHERE grupo=2 ORDER BY RAND() LIMIT 30

Si no usas Mysql te la recomiendo, sobre access
__________________
CreandoWebs.com
www.creandowebs.com
PLANTILLAS TEMPLATEMONSTER CON 10% DE DESCUENTO
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 22:46.