Foros del Web » Programando para Internet » PHP »

Consulta de array 2

Estas en el tema de Consulta de array 2 en el foro de PHP en Foros del Web. Estimados compañeros, quisiera realizar la sgte consulta: $id=$_POST["id"]; //$id es un array: Array ( [0] => 03502 [1] => 05408 ) for($i=0; $i<count($id); $i++){//intento recorrer ...
  #1 (permalink)  
Antiguo 13/11/2008, 16:47
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 9 meses
Puntos: 2
Pregunta

Estimados compañeros,
quisiera realizar la sgte consulta:
$id=$_POST["id"]; //$id es un array: Array ( [0] => 03502 [1] => 05408 )
for($i=0; $i<count($id); $i++){//intento recorrer desde la clave 0 hasta ej. 1
$qry=mysql_query("select * from catalogo where id='".$id."'"); //esta ingresando el array mas lo que intento es que ingrese el primer codigo segun el for
}
quisiera sus sugerencias que es lo que puedo cambiar en el codigo?????

Saludos,

Estoy implementandolo de esta manera:

$qry=mysql_query("select * from catalogo where id='".$id[i]."'");

pero no es el correcto, lo que quisiera es que el array: Array ( [0] => 03502 [1] => 05408 )
solamente vaya en el where por ejm 03502, 05408 que son los valores mas no las claves

Última edición por GatorV; 13/11/2008 a las 19:39
  #2 (permalink)  
Antiguo 13/11/2008, 21:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Consulta de array 2

mmm... eso de hacer varios SELECT es atroz!

por eso esta diseñado el operador IN...

dices que $id es un arreglo... bien, eso es bueno...

Código PHP:
$ids join(','$id); // 03502,05408

$sql "SELECT * FROM `foo` WHERE item_id IN($ids)"
esto debe producir algo así...
Código:
SELECT * FROM `foo` WHERE item_id IN(03502,05408)
lo que hace es "seleccionar (como normalmente se hace) donde los item_id se encuentren en la lista IN(x,y,z,...,N)"

esto produce una consulta mas eficiente, que espero es lo que querías... cierto?


pero digamos que no quieres eso, y debes aprender a usar el for... bien, es mejor un foreach

Código PHP:
foreach ($id as $val)
{
  
$sql "SELECT * FROM `foo` WHERE item_id=$val";
  
// ...

y eso es todo, tal ves necesitas leer de nuevo un poco del manual de PHP... eh?

http://php.net/foreach



espero te sepas servir, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 14/11/2008, 01:05
 
Fecha de Ingreso: junio-2008
Mensajes: 76
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Consulta de array 2

No entiendo exactamente lo que quieres...

¿Solo quieres que el valor "03502" vaya dentro de la sentencia MySQL?
Ejemplo:
$qry=mysql_query("select * from catalogo where id='03502' ");

¿Sólo así?
Si entendí bien... tu arreglo sólo es de 2 elementos, el primero es la clave y el segundo el valor. Entonces tu codigo debería ser:
$qry=mysql_query("select * from catalogo where id='".$id[0]."' ");

Sorry, no entendí bien tu duda.
  #4 (permalink)  
Antiguo 17/11/2008, 16:28
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 9 meses
Puntos: 2
Hola amigos estoy realizando lo sugerido por Pateketrueke,
$id=$_POST["id"];
$arrId=implode(",",$id);
$qry=mysql_query("select * from catalogo where id in(".$arrId.")");
$row=mysql_fetch_array($qry);
echo $row[medicamento]."<br>";

pero en los prints me salen:
echo $row[medicamento]: Solo un producto, pero son dos como confirma print_r($arrId)
print_r($arrId): 03502,05408
print_r($id): Array ( [0] => 03502 [1] => 05408 )
print_r($autori): Array ( [0] => 140 [1] => 80 )

por favor si me pueden decir que esta pasando con el codigo????????



y en print

He intentado con esto:
$qry=mysql_query("select * from catalogo where id in($arrId)");

y sigue con lo mismo, me muestra solo el primero producto...ayudenme por favor

Intento con esto:
$arrId=join(", ",$id);

y sigue sin recorrrer el WHERE item_id IN(03502,05408)

porque me sale el print de echo $row['producto']=producto1 //pero mentira xk son dos productos

gracias de antemano por su desinteresadas colaboraciones ...

Gracias de todas maneras, la rpta estaba en error de codigo:
while($row=mysql_fetch_array($qry));

Última edición por GatorV; 17/11/2008 a las 19:28
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:31.