Entrar Regístrate
 
Recorrer array para una consulta, solo recoge el último valor seleccionado.
#1 ·

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:

foreach($tipos as $check) {

$result = mysql_query("select id_cliente, nombre, tipo, precio, icono1, localidad FROM restauracion WHERE tipo = '$check'");

}

He hecho un var_dump() del array $tipos con el siguiente resultado:

array(6) {

 [0]=>

 string(11) "Restaurante"

 [1]=>

 string(4) " Bar"

 [2]=>

 string(16) " Bar-Restaurante"

 [3]=>

 string(15) " Comida rápida"

 [4]=>

 string(19) " Comida para llevar"

 [5]=>

 string(21) " Evento gastronómico"

}

El problema surge cuando al seleccionar varias opciones solo me devuelve el último valor, si por ejemplo seleccione “Restaurante” y “Bar” solo me devuelve la opción correspondiente a “Bar”.

A ver si alguien me puede ayudar que no se me ocurre nada y no paro desde hace tiempo de darle vueltas. Gracias de antemano.


joakinricardo
Usuario Novato
Usuario Novato
Haz clic para ver el perfil del usuario
Mensajes: 2
Desde: 31/Oct/2007
·
#2 ·

Hola Joaquín, tienes 2 opciones para solucionar eso; y debes elegir si harás 1 sola consulta a la base de datos o harás una consulta por cada elemento del array.

Si eliges hacer una consulta por elemento (2da opcion) antes de cerrar el foreach debes procesar los resultados; de esta forma en cada iteracción el script trabaja con el valor actual.

La 1ra opción implica que tras cada iteracción agregues un ';' (colon o semi-colon -no sé como lo llaman allá-) y dentro del foreach lo que haces es concatenar los SQL de cada sentencia ( $sql .= "nueva sentencia con el valor actual;" ); y al finalizar el foreach ejecutas la consulta a la base de datos (sacas el sql_query fuera del foreach). Esta última generalmente es la mejor opción; pero es más complicadilla.

Saludos


GestionXls
@man / @woman
@man / @woman
Haz clic para ver el perfil del usuario
Mensajes: 4.001
Desde: 02/Ago/2008
· ·
ATENCIÓN: Este tema no tiene actividad desde hace más de 6 MESES,
te recomendamos abrir un nuevo tema en lugar de responder al actual
Foro de soporte · Espacio WEB · PHP
Opciones:
Versión imprimible del tema
Subscríbete a este tema
Date de baja de este tema
Ir al subforo:  
TU NO PUEDES Escribir nuevos temas en este foro
TU NO PUEDES Responder a los temas en este foro
TU NO PUEDES Editar tus propios mensajes en este foro
TU NO PUEDES Borrar tus propios mensajes en este foro
Ahora son las 18:55 UTC+02:00 DST
Temas similares
 I FotoPTemaMensajesÚltima respuesta
No Hay mensajes nuevosHaz clic para ver el perfil del usuario1313/Sep/2012, 13:22
JoaoTeamm Ir al último mensaje del tema