joakinricardo
Usuario Novato
Usuario Novato

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.

Avatar Image
@man / @woman
@man / @woman

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

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
Opciones:
Ir al subforo:
Permisos:
TU NO PUEDES Escribir nuevos temas
TU NO PUEDES Responder a los temas
TU NO PUEDES Editar tus propios mensajes
TU NO PUEDES Borrar tus propios mensajes
Temas similares
TemaUsuariosRespuestasVisitasActividad
Por: , el 31/Ago/2012, 13:11
JoaoTeamm NoSetup.org Tito GestionXls1314kSep/12