Foros del Web » Programando para Internet » PHP »

consulta con un arreglo

Estas en el tema de consulta con un arreglo en el foro de PHP en Foros del Web. Hola amigos del foro tengo un problema con un arreglo y una consulta este es mi codigo. Código PHP: $arr =array( 0911 , 12860 , ...
  #1 (permalink)  
Antiguo 12/12/2012, 18:19
 
Fecha de Ingreso: diciembre-2012
Ubicación: Puebla
Mensajes: 34
Antigüedad: 11 años, 4 meses
Puntos: 1
consulta con un arreglo

Hola amigos del foro

tengo un problema con un arreglo y una consulta
este es mi codigo.
Código PHP:
$arr=array(0911,12860,324);
//lo que contiene el arreglo son claves de productos

$clp=$arr;
$arraypre=split(",",$clp);

for(
$i=0;$i<count($arraypre);$i++) {
$conspre=mysql_query("select precio_compra from productos where clave='".$arraypre[$i]."'");
$res=mysql_fetch_array($conspre);


echo 
$res[precio_compra]; 

lo que quiero es que me ejecute varias consultas a la misma tabla llamada productos con las claves que estan en $arr para sacar los precios de cada clave pero no logro imprimir los precios

espero puedan ayudarme

Bendiciones.
  #2 (permalink)  
Antiguo 12/12/2012, 18:30
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: consulta con un arreglo

No entiendo por qué usas split, quizás lo que necesitas es implode:
http://php.net/implode

Y usar IN en lugar de comparar por igualdad, así solo necesitarás una consulta:
Código PHP:
Ver original
  1. 'SELECT ... FROM ... WHERE campo IN (' . implode(', ', $arr) . ')'
Luego, solo tienes que recorrer todos los registros que devuelve la consulta.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 12/12/2012, 20:58
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: consulta con un arreglo

Holas,

Muy buen consejo de @David; tambien siempre tratemos de llamar poco a la base de datos, mientras mas la llamemos consumirmos mas recursos y eso cuesta en rapidez (si queremos claro).

Se imaginan que el array tenga 10000 valores y que el for este llamando 10000 veces a la BD?. Facil colgamos a nuestro propio server.

Saludos,
__________________
.: Gildus :.
  #4 (permalink)  
Antiguo 27/12/2012, 12:31
 
Fecha de Ingreso: diciembre-2012
Ubicación: Puebla
Mensajes: 34
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: consulta con un arreglo

Tienes razon @gildus pero es la unica forma de la que tengo que sacar los precios para para poder meterlos en otra tabla mira estoy haciendo un carrito de compras y pues a mi parecer no tengo de otra opcion o ¿Que piensan ustedes?
  #5 (permalink)  
Antiguo 27/12/2012, 12:51
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: consulta con un arreglo

podrías traer todos los productos de una vez,


Código PHP:
$conspre=mysql_query("SELECT precio_compra,clave FROM productos");
$productos = array();
while(
$res=mysql_fetch_array($conspre)){

$productos[$res['clave']] = $res['precio_compra'];


Ahora tenes todos los productos existentes en el array $productos, su key es la clave del producto, y su valor es el precio.
Entonces si tus productos a consultar son

Código PHP:
$arr=array(0911,12860,324); 

lo unico que harías será poner la clave en la key de array productos y listo
ejemplo:

Código PHP:
echo $productos[0911]; 
te imprimirá el valor de ese producto.
El array productos podes guardarlo en una variable de session para no tener que volver a consultar la base de datos.


Es solo otra forma de hacerlo. No quiere decir que sea la única, ni que así debas hacerlo.



.
__________________
la la la

Etiquetas: sql, tabla, arreglos
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 09:32.