Foros del Web » Programando para Internet » PHP »

Mejora de codigo

Estas en el tema de Mejora de codigo en el foro de PHP en Foros del Web. Tengo una funcion que lo que hace es pedir los elementos de una base de datos y los guarda en un array entonces despues ese ...
  #1 (permalink)  
Antiguo 27/05/2012, 20:11
Avatar de Reco-X  
Fecha de Ingreso: julio-2007
Mensajes: 14
Antigüedad: 16 años, 9 meses
Puntos: 0
Pregunta Mejora de codigo

Tengo una funcion que lo que hace es pedir los elementos de una base de datos y los guarda en un array entonces despues ese array lo desordeno y guardo la primer posicion en una variable, hago esto ultimo 2 veces mas y luego las 3 variables que tengo las guardo en un array de 3 posiciones y retorno este ultimo array
Código PHP:
    public function obtenerItems(){
            
$arrayItems=array();
            
$link= new Conexion();
            
$link->open();
            
$resultado $link->query("SELECT * from items");
            while (
$row mysql_fetch_array($resultado)){
                
$item = new Item ($row["nombre"],$row["valor"]);
                
$arrayItems[]=$item;
                
shuffle ($arrayItems);
                
$valor1 $arrayItems[0];
                
shuffle ($arrayItems);
                
$valor2 $arrayItems[0];
                
shuffle ($arrayItems);
                
$valor3 $arrayItems[0];
                
$arrayValores = array ($valor1$valor2$valor3);
            }
            
$link->close();
            return 
$arrayValores;    
        } 
  #2 (permalink)  
Antiguo 27/05/2012, 22:46
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Mejora de codigo

Y qué es lo que pretendes hacer con tanto shuffle?

Supongo que si en la consulta agregas un ORDER BY RAND() LIMIT 3 después sólo necesitas cargar los 3 registros en un array y devolverlo.

- ORDER BY RAND() seleccionará los registros al azar, ya no necesitarías el shuffle, además de que en tu código podrías enviar lo mismo en las 3 posiciones.
- LIMIT 3 hará que la consulta te devuelva sólo 3 registros.
- UPS! No me había fijado que ese proceso lo repites en cada iteración del while!
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 27/05/2012 a las 22:49 Razón: Agregar UPS! y :ojotes:
  #3 (permalink)  
Antiguo 27/05/2012, 22:51
Avatar de rigobcastro  
Fecha de Ingreso: febrero-2012
Ubicación: Lejanías
Mensajes: 69
Antigüedad: 12 años, 2 meses
Puntos: 21
Respuesta: Mejora de codigo

Como dice Triby con la función RAND() de SQL se puede ejecutar un orden aleatorio, sin embargo, no es recomendable ya que consume muchos recursos. Claro, siempre y cuando no sean mas de 10 datos dentro de la tabla no habrá problema...

http://systemadmin.es/2010/11/order-...-es-buena-idea

El Shuffle lo puedes usar una vez obteniendo los datos de la consulta.


Código PHP:
Ver original
  1. $row = mysql_fetch_array($resultado);
  2. shuffle($row);

Sería algo mucho más fácil si necesitas un random rapido... Personalmente lo uso para los "recomendados" de las secciones.

Etiquetas: mejora, mysql, variables
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 10:30.