Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] array multidimensional o consultas sql

Estas en el tema de array multidimensional o consultas sql en el foro de PHP en Foros del Web. Buenas tardes a todos. Quisiera preguntar que es mas eficiente para utilizar uno u otro metodo. Actualmente tego una variable de sesion ($_SESSION['datos']) que un ...
  #1 (permalink)  
Antiguo 25/06/2014, 15:09
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
array multidimensional o consultas sql

Buenas tardes a todos.

Quisiera preguntar que es mas eficiente para utilizar uno u otro metodo.

Actualmente tego una variable de sesion ($_SESSION['datos']) que un array donde voy almaceno el id_producto y la cantidad selecionada de cada producto (id=>cantidad).

Posterior mente recorro el array con un foreach(), haciendo una consulta a la bd por cada elemento del array para extraer el resto de datos de cada producto (nombre, categoria, precio, etc...).

La duda que planteo es, si seria mas eficiente, crear un array multidimensional que contenga todos los datos del producto, ya que en el momento de añadir un nuevo elemento del array dispongo de todos los datos necesarios (hago una consulta previa a la bd para generar una tabla con todos los productos) o seguir el procedimiento antes explicado.

Código:
Caso 1
-consulta sql tabla
-añado elemento array(id=>cantidad)
-consulta sql datos a procesar
-procesar datos


Caso 2
-consulta sql tabla
-añado elemento array multidimensional
array(id=>array(
nombre=>nombre_producto
cantidad=>cantidad_selecionada
precio=>el_precio) )
-proceso datos

Espero haberme explicado bien.
Gracias por su tiempo.
  #2 (permalink)  
Antiguo 25/06/2014, 16:21
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: array multidimensional o consultas sql

Cita:
Iniciado por xerifandtomas Ver Mensaje
Buenas tardes a todos.
Posterior mente recorro el array con un foreach(), haciendo una consulta a la bd por cada elemento del array
Eso es lo que no es eficiente.Haz 1 query para obtener los datos de todos los productos a la vez.Las queries dentro de bucles son una plaga....Si te preocupas por la eficiencia, el no meter una query en un bucle es lo más básico.
La segunda opción que planteas (cachear los datos dentro de la sesion) es peligrosa, a menos que puedas asegurar que nada ni nadie va a tocar ese producto durante el tiempo de vida de la sesión (lo cual, si lo que estás haciendo es un carrito de compra, no puedes asegurar).
  #3 (permalink)  
Antiguo 25/06/2014, 16:54
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: array multidimensional o consultas sql

Cita:
Iniciado por dashtrash Ver Mensaje
Eso es lo que no es eficiente.Haz 1 query para obtener los datos de todos los productos a la vez.Las queries dentro de bucles son una plaga....Si te preocupas por la eficiencia, el no meter una query en un bucle es lo más básico.
La segunda opción que planteas (cachear los datos dentro de la sesion) es peligrosa, a menos que puedas asegurar que nada ni nadie va a tocar ese producto durante el tiempo de vida de la sesión (lo cual, si lo que estás haciendo es un carrito de compra, no puedes asegurar).
Gracias por la respuesta.

Es la pescadilla que se muerde la cola.

Efectivamente es como un carrito de la compra.
No puedo asegurar 100% que los datos de la bd no se modifiquen mientras dura la sesion.

Por tu comentario entiendo, cosa que ya intuia y tenia asumido que una consulta dentro del bucle era/es un desperdicio de recursos y que lo mejor es utilizar el bucle para construir la consulta (en la medida de lo posible) y posteriormente ejecutarla.

Etiquetas: multidimensional, sql, tabla, variable
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 18:39.