Ver Mensaje Individual
  #9 (permalink)  
Antiguo 13/10/2015, 14:23
Drowna
 
Fecha de Ingreso: junio-2014
Mensajes: 14
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Recorrer array para una consulta, solo asigna el último valor.

Cita:
Iniciado por jlopezisern Ver Mensaje
Mi problema es el siguiente, a ver si alguien me puede ayudar pues no doy con ello.
Desde una aplicación Android envío una variable del tipo Array. Esta la recibo como un String.
En concreto la variable contiene una serie de tipos de establecimientos, Restaurante, Bar, Bar-Restaurante, etc. Esta es: $tiposfin=$_POST['subTiposFin'];
En Android tiene el formato: [Restaurante, Bar, Bar-Restaurante,…] y en el mismo formato de cadena la recibo en php.
Lo que hago, es convertirla en un array, primero eliminando los corchetes:
$reemplazar1=str_replace("[", "", $tiposfin);
$reemplazar2=str_replace("]", "", $reemplazar1);
Y después convertirla en un array:
$tipos=explode(',', $reemplazar2);
El problema surge a la hora de recorrer el array para la consulta, tanto con for, foreach o while.
La consulta que me interesa es:
for ($y=0; $y<count($tipos); $y++) {
$result = mysql_query("select id_cliente, nombre, tipo, precio, icono1, localidad FROM restauracion WHERE tipo = $tipos");
}
Pero para saber que valores me está pasando, en la tabla en el campo ‘nombre’ utilizo:
for($i=0;$i<count($tipos);$i++) {
$sql = mysql_query("UPDATE restauracion SET nombre = '$tipos[$i]' WHERE tipo = 'Cómida para llevar'");
}
Y entonces el problema es el siguiente, si el array tiene tres valores p.e. (Restaurante, Bar, Bar-Restaurante), sólo devuelve el último, en este caso Bar-Restaurante. No se a que se puede deber.
Estaba buscando info porque tenia un problema parecido al tuyopero al final lo solucione. De todas formas he leido tu primer post y a mi parecer la consulta que realizas dentro del for esta mal no?.

Es decir, esta es tu consulta...

for ($y=0; $y<count($tipos); $y++) {
$result = mysql_query("select id_cliente, nombre, tipo, precio, icono1, localidad FROM restauracion WHERE tipo = $tipos");
}

Hay un fallo a mi parecer justo cuando llamas a la variable dentro del for... no le indicas que repetición es que la que quieres consultar, solo le mandas el array entero. tu consulta no debria ser.

for ($y=0; $y<count($tipos); $y++) {
$result = mysql_query("select id_cliente, nombre, tipo, precio, icono1, localidad FROM restauracion WHERE tipo = $tipos[$y]");
}