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

4 registros aletoriamente

Estas en el tema de 4 registros aletoriamente en el foro de ASP Clásico en Foros del Web. hola, he estado buscando mucha informacion en el foro ultimamente, ya que me pidieron que hiciera un monton de cosas que no se, mi problema ...
  #1 (permalink)  
Antiguo 20/08/2005, 23:34
Avatar de thejuve  
Fecha de Ingreso: abril-2003
Mensajes: 26
Antigüedad: 21 años, 2 meses
Puntos: 0
4 registros aletoriamente

hola, he estado buscando mucha informacion en el foro ultimamente, ya que me pidieron que hiciera un monton de cosas que no se, mi problema esta vez es mostrar 4 imagenes al azar de una base de datos cada que se llame a la pagina, en realidad son 4 campos con el nombre de la imagen,

he visto 4 o 5 post con el tema, pero era mostrarlas en forma aleatoria en la pagina y no son con ASP, yo lo necesito con ASP ya que las llamaria de una base de datos

necesito mostrar 4 registros (que contienen el nombre de la imagen) en Linea hoorizontal (una tabla con 4 columnas ) y que no se repitan
  #2 (permalink)  
Antiguo 20/08/2005, 23:51
Avatar de macedo  
Fecha de Ingreso: enero-2002
Ubicación: Madrid
Mensajes: 124
Antigüedad: 22 años, 4 meses
Puntos: 0
Hola thejuve.

Sería más o menos así.

Select * From Tabla Order by Rand() limit 4

Saludos
__________________
"Hay que simplificar las cosas tanto como sea posible, pero no más".
Albert Einstein.
  #3 (permalink)  
Antiguo 21/08/2005, 00:25
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
eso seria con mysql

con access, sql server... select top 4....
  #4 (permalink)  
Antiguo 21/08/2005, 01:03
Avatar de macedo  
Fecha de Ingreso: enero-2002
Ubicación: Madrid
Mensajes: 124
Antigüedad: 22 años, 4 meses
Puntos: 0
El Access de los c***nes siempre con su propia version.
En vez de limit 4 seria Top 4 después del Select y en vez de Rand() sería Rnd(%Nombre de un campo numerico%).

En fin, con Access sería

SELECT Top 4 * From Tabla Order By Rnd (IdFoto)

Siendo IdFoto un campo numérico.

Saludos
__________________
"Hay que simplificar las cosas tanto como sea posible, pero no más".
Albert Einstein.
  #5 (permalink)  
Antiguo 21/08/2005, 21:46
Avatar de thejuve  
Fecha de Ingreso: abril-2003
Mensajes: 26
Antigüedad: 21 años, 2 meses
Puntos: 0
gracias macedo y trasgukaby, pero el hecho es que no es un campo numerico, no quiero seleccionar los primeros 4,

es un campo memo el que quiero randomizar ya que el campo contiene el path donde esta la imagen, y quiero poner estas 4 imagenes dentro de una hilera en 4 columnas en una tabla

<table>
<tr>
<td>campo al azar uno</td>
<td>campo al azar dos</td>
<td>campo al azar tres</td>
<td>campo al azar cuatro</td>
</tr>
</table>

pero no se si se tengan que hacer 4 variables distintas y que estas no sean las mismas ya que se tienen que separar de alguna manera para poder poner las cuatro columnas, o como tendria que hacer para separar los 4 registros?
  #6 (permalink)  
Antiguo 22/08/2005, 02:48
Avatar de macedo  
Fecha de Ingreso: enero-2002
Ubicación: Madrid
Mensajes: 124
Antigüedad: 22 años, 4 meses
Puntos: 0
A ver thejuve.

Con las consultas anteriores seleccionas los cuatro primeros registros de una tabla, pero, los registros estan ordenados al azar. Es decir, que Top 4 o Limit 4 no implica que sean los cuatro primeros de la tabla sino los cuatro primeros del resultado que esta ordenado al azar. Pero para poder hacer eso necesitas tener un campo numérico en tu tabla. Ese campo numérico NO es el que estas consultando sino un Id por ejemplo. Por otra parte siempre es buena política tener un índice en las tablas (un primary key) y este te podría servir para lo que te contamos.

Lo que hace Order by Rnd (IdFoto) es ordenar aleatoriamente el resultado según ese campo númerico (IdFoto es un ejemplo).

Eso si trabajas con Access. En MySql no hace falta el campo numérico para ordenar los registros aleatoriamente.

Saludos
__________________
"Hay que simplificar las cosas tanto como sea posible, pero no más".
Albert Einstein.

Última edición por macedo; 22/08/2005 a las 02:54
  #7 (permalink)  
Antiguo 22/08/2005, 09:51
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Hola macedo, fijate que thejuve está hablndo de "campos" y no registros:

Cita:
en realidad son 4 campos con el nombre de la imagen

Cita:
es un campo memo el que quiero randomizar ya que el campo contiene el path donde esta la imagen
Supongo tiene ésta estructura:
ID | Memo1 | Memo2 | Memo3 | Memo4

(Que la verdad que usar un campo memo para guardar un path... es como mucho -al menos que tenga paths con más de 255 caracteres y entonces no hay otra alternativa en access-)

Lo que haría yo es una función que devuelva un array con 4 números enteros aleatorios entre 1 y 4 (sin repeticiones) para referirme a los campos. Si en realidad son campos y no registros, otra alternativa no se me ocurre.

Saludos
__________________
...___...
  #8 (permalink)  
Antiguo 22/08/2005, 11:18
Avatar de thejuve  
Fecha de Ingreso: abril-2003
Mensajes: 26
Antigüedad: 21 años, 2 meses
Puntos: 0
Perdon amigos, eso pasa por no saber ni de que hablo; todo lo que se lo he ido aprendiendo en foros, nunca estudie ASP access o javascript, sino de lo que he ido recompilando es de donde se, y bueno `pues no se los terminos exactos de lo que estoy hablando mil disculpas....

la estructura de mis tabla en ACCESS es asi

IDninos (autonumerico)| foto (solo el path) | nombre| paterno| materno

y lo que quiero es que muestre 4 fotos distintas en una tabla

SELECT Top 4 * From sisTabninos Order By Rnd (IDninos)

pero como los pongo en la tabla??
  #9 (permalink)  
Antiguo 22/08/2005, 12:41
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
ok, entonces eran registros y no campos ;)

necesito mostrar 4 registros (que contienen el nombre de la imagen) en Linea hoorizontal (una tabla con 4 columnas )

Ok, intentá ésto:

Código:
...
<table>
<tr>
<% While Not Rs.EOF %>
<td>Nombre: <% Rs("nombre") %><br><img src="<% = Rs("foto") %>"></td>
<%
Rs.MoveNext
Wend
%>
</tr>
</table>
Modificá lo que sea necesario y fijate si va por ese lado.
__________________
...___...
  #10 (permalink)  
Antiguo 22/08/2005, 14:27
Avatar de thejuve  
Fecha de Ingreso: abril-2003
Mensajes: 26
Antigüedad: 21 años, 2 meses
Puntos: 0
sip, lo siento.

gracias Al, creo que es lo que necesito, lo chekare y les comento como me fue!
  #11 (permalink)  
Antiguo 22/08/2005, 16:48
Avatar de thejuve  
Fecha de Ingreso: abril-2003
Mensajes: 26
Antigüedad: 21 años, 2 meses
Puntos: 0
bueno, pues cheke el code y pues si funciona, solo que aunque refresque me sigue mostrando los mismos 4, osea no randomiza cada vez que refresco la pagina
por lo que le puse encabezados meta para que no se guardara en cache pero aun si no funciona


...
sSql="SELECT Top 4 * From sisTabninos Order By Rnd(id) desc"
Set rsCon=conecta.execute(sSql)
%>

<html>
<head>

<title>Muestra niño</title>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<link href="pdvstilin.css" rel="stylesheet" type="text/css">
</head>
<body>
<table>
<tr>
<% While Not rsCon.EOF %>
<td class="rowleft"><a href="showkid.asp?id=<%=rsCon("id") %>"><img src="../../public/kidpix/<%=rsCon("foto1") %>" height="160" width="92" alt="<%=rsCon("nombre") %>"></a></td>
<%
rsCon.MoveNext
Wend
%>
</tr>
</table>
<%
conecta.Close
Set conecta = Nothing
%>
  #12 (permalink)  
Antiguo 22/08/2005, 17:49
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
hummm... lo dije en un post anterior:

El ...Order By Rnd(CampoNumérico)... seguro funciona en una consulta/vista DENTRO del Ms Access porque lo comprobé. Pero nunca lo probé mediante una página ASP. La lógica dice que debería funcionar... pero ya sabemos cómo funciona la lógica, muchas veces, dentro del mundo MS ;)

Cuando tenga un rato lo pruebo de esa manera (igual no me esperes que suelo olvidar las cosas :p)
__________________
...___...
  #13 (permalink)  
Antiguo 22/08/2005, 17:54
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Es que segun yo, la funcion rnd, al igual que en SQL, regresara exactamente el mismo resultado para cada ID, es decir, generara un numero aleatorio con ese ID, pero siempre sera el mismo numero

Salu2, y veamos si alguien lo resuelve, quizas la clave sea una doble "randomizacion", pero sho no tengo mucho tiempo de ponerme a ver esto

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #14 (permalink)  
Antiguo 22/08/2005, 21:30
Avatar de thejuve  
Fecha de Ingreso: abril-2003
Mensajes: 26
Antigüedad: 21 años, 2 meses
Puntos: 0
pues se me ocurre algo a ver si dentro de mi logica funciona y alguien que me ayude con el code:

seria crear la tabla con las 4 columnas, y hacer un randon en cada imagen y asi randomizar cada imagen y no hacer el select randon, sino randomizar el que vamos a poner en cada imagen, no se si me explique o si se pueda hacer asi

saludos y gracias por tomarse el tiempo de ayudarme
  #15 (permalink)  
Antiguo 23/08/2005, 11:44
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Cita:
Iniciado por u_goldman
Es que segun yo, la funcion rnd, al igual que en SQL, regresara exactamente el mismo resultado para cada ID, es decir, generara un numero aleatorio con ese ID, pero siempre sera el mismo numero
Efestivamente!
Me puse a buscar un rato es como ud. lo dice, mi estimado u_g (de paso, encontré la solución):


Código:
Randomize()
intRandomNumber = Int (1000*Rnd)+1

SQL = "SELECT TOP 4 CampoID, NOMBRE FROM Tabla ORDER BY Rnd(" & -1 * (intRandomNumber) & "*CampoID)"
Ahora si funciona

También probé la solución anterior (sin el randomize de ASP) dentro de una consulta de access y allí SI funciona. El resultado varía con cada ejecusión.

Saludos
__________________
...___...
  #16 (permalink)  
Antiguo 23/08/2005, 12:29
Avatar de thejuve  
Fecha de Ingreso: abril-2003
Mensajes: 26
Antigüedad: 21 años, 2 meses
Puntos: 0
you're all rocks!

gracias Al, u_g, macedo y trasgukaby, funciono!
  #17 (permalink)  
Antiguo 23/08/2005, 12:57
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Gracias al senor moderador, por fin se encontro esta solucion!

Salu!
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
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:30.