Foros del Web » Programando para Internet » PHP »

Crear Función PHP con rand() y MySQL

Estas en el tema de Crear Función PHP con rand() y MySQL en el foro de PHP en Foros del Web. Hola amigos! Esta vez me encuentro atorado en un problemilla que no sé la lógica para hacerlo funcionar, y me gustaría saber si alguien me ...
  #1 (permalink)  
Antiguo 01/07/2011, 11:07
 
Fecha de Ingreso: octubre-2008
Mensajes: 147
Antigüedad: 16 años, 2 meses
Puntos: 3
Pregunta Crear Función PHP con rand() y MySQL

Hola amigos!

Esta vez me encuentro atorado en un problemilla que no sé la lógica para hacerlo funcionar, y me gustaría saber si alguien me puede apoyar.

Tengo una tabla en la base de datos, digamos que tiene 10 registros por ejemplo... y yo lo que necesito hacer con PHP es que me arroje 3 numeros al azar, de forma ascendente, que no se repitan y que no superen los registros en total de la tabla...


Algo asi como:

Código PHP:


$TotalRegistros 
mysql_num_rows($consulta);
//Supongamos que $TotalRegistros me arroja el numero 10

$registro1 //digamos que aqui me da un 4
$registro2 //digamos que aqui me da un 7
$registro3 //digamos que aqui me da un 9

//es decir, los 3 registros que me den un numero al alzar, del 1 al $TotalRegistros, ordenados de forma ascendente y sin que se repitan// 

No se si alguien me pueda apoyar para darme una idea, de como lograr mi objetivo...

Muchas Gracias de antemano por sus comentarios y ayuda.
  #2 (permalink)  
Antiguo 01/07/2011, 11:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Crear Función PHP con rand() y MySQL

Eso lo haces directamente en la consulta:
Cita:
SELECT * FROM tabla ORDER BY RAND() LIMIT 3
No es necesario hacerlo con PHP, lo siento.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 01/07/2011, 12:00
 
Fecha de Ingreso: octubre-2008
Mensajes: 147
Antigüedad: 16 años, 2 meses
Puntos: 3
Respuesta: Crear Función PHP con rand() y MySQL

Cita:
Iniciado por pateketrueke Ver Mensaje
Eso lo haces directamente en la consulta:


No es necesario hacerlo con PHP, lo siento.
Grcias, pero temo que el único problema con esta función de SQL es que no arroja los resultados de forma ascendente, solo revueltos.

Por ejemplo: 10, 5, 9 - 5, 1, 7, etc etc etc

Y yo lo que quiero es que se imprima con "echo" de forma ascendente...

¿Alguna idea de como ordenarlos?
  #4 (permalink)  
Antiguo 01/07/2011, 12:05
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Crear Función PHP con rand() y MySQL

Cita:
Iniciado por dfmex Ver Mensaje
¿Alguna idea de como ordenarlos?
Agrupa los resultados en un array y usa alguna función de ordenamiento de arrays.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 01/07/2011, 12:33
 
Fecha de Ingreso: octubre-2008
Mensajes: 147
Antigüedad: 16 años, 2 meses
Puntos: 3
Respuesta: Crear Función PHP con rand() y MySQL

Cita:
Iniciado por pateketrueke Ver Mensaje
Agrupa los resultados en un array y usa alguna función de ordenamiento de arrays.
Gracias, tu idea me ha ayudado de mucho, he hecho esto:

Código PHP:
$Numeros = array();
        
        while(
$Datos mysql_fetch_assoc($Mostrar)){
        
        
$Numeros[] = $Datos[PlanID];
        
        }
        
        echo 
"<br>".$Numeros[0];
        echo 
"<br>".$Numeros[1];
        echo 
"<br>".$Numeros[2]; 

Solo me gustaría saber si me podrías dar la última ayudita en cuestion a como usar correctamente la funcion para ordenar los numeros de array en forma ascendente...

intenté usar "asort($Numeros,SORT_NUMERIC);" asi:

Código PHP:
        $Numeros = array();
        
        while(
$Datos mysql_fetch_assoc($Mostrar)){
        
        
$Numeros[] = $Datos[PlanID];
        
        }
        
        
asort($Numeros,SORT_NUMERIC);
        
        echo 
"<br>".$Numeros[0];
        echo 
"<br>".$Numeros[1];
        echo 
"<br>".$Numeros[2]; 
Pero no me sirvio :(
  #6 (permalink)  
Antiguo 01/07/2011, 12:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Crear Función PHP con rand() y MySQL

¿Pero que quieres decir que no te sirvió?

¿Te arroja un mensaje de error?

¿Te orden los datos al revés?

Decir que no sirve es insuficiente para entender tu problema, da mas información.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 01/07/2011, 12:41
 
Fecha de Ingreso: octubre-2008
Mensajes: 147
Antigüedad: 16 años, 2 meses
Puntos: 3
Respuesta: Crear Función PHP con rand() y MySQL

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Pero que quieres decir que no te sirvió?

¿Te arroja un mensaje de error?

¿Te orden los datos al revés?

Decir que no sirve es insuficiente para entender tu problema, da mas información.
No me sirvio porque me sigue imprimiendo los datos de forma deosrdenada, es decir, con este codigo (sin el asort):

Código PHP:
        $Numeros = array();
        
        while(
$Datos mysql_fetch_assoc($Mostrar)){
        
        
$Numeros[] = $Datos[PlanID];
        
        }
        
    
        echo 
"<br>".$Numeros[0];
        echo 
"<br>".$Numeros[1];
        echo 
"<br>".$Numeros[2]; 
Obtengo los valores (por ejemplo):

5
8
2

y con este otro codigo (con el asort):

Código PHP:
        $Numeros = array();
        
        while(
$Datos mysql_fetch_assoc($Mostrar)){
        
        
$Numeros[] = $Datos[PlanID];
        
        }
        
        
asort($Numeros);
        
        echo 
"<br>".$Numeros[0];
        echo 
"<br>".$Numeros[1];
        echo 
"<br>".$Numeros[2]; 
sigo obteniendo:

5
8
2

cuando en teoria $Numeros[0] debería ser el más bajo, y $Numeros[2] el más alto

ya intente con asort($Numeros); y asort($Numeros, SORT_NUMERIC);
  #8 (permalink)  
Antiguo 01/07/2011, 12:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Crear Función PHP con rand() y MySQL

Bueno, eso es muy normal.
Cita:
asort — Sort an array and maintain index association
Porque dicha función ordena los elementos, pero mantiene la asociación de las claves.

Por lo mismo, y en tus pruebas usas los mismo índices, es que recibes todo igual.

Quizá te sirve mas sort()
http://php.net/sort
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 01/07/2011, 12:47
 
Fecha de Ingreso: octubre-2008
Mensajes: 147
Antigüedad: 16 años, 2 meses
Puntos: 3
Respuesta: Crear Función PHP con rand() y MySQL

Cita:
Iniciado por pateketrueke Ver Mensaje
Bueno, eso es muy normal.


Porque dicha función ordena los elementos, pero mantiene la asociación de las claves.

Por lo mismo, y en tus pruebas usas los mismo índices, es que recibes todo igual.

Quizá te sirve mas sort()
http://php.net/sort
Cuanta razon tienes... usé esa otra funcion y todo anda de peluche!

Muchas gracias por guiarme pateketrueke, finalmente he solucionado mi problema

Etiquetas: mysql, rand
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 01:55.