Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Joaquin59 en 11 de Octubre 2015, 17:11
-
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 sé a qué se puede deber.
-
Hola Joaquin59 pega el código php como se indica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0
Esta consulta parece que la tienes mal planteada:
for ($y=0; $y<count($tipos); $y++) {
$result = mysql_query("select id_cliente, nombre, tipo, precio, icono1, localidad FROM restauracion WHERE tipo = $tipos");
}
En cada pasada del bucle se destruye el valor de $result, además $tipos no tiene indicado el índice que debe utilizarse.
En esta consulta:
for($i=0;$i<count($tipos);$i++) {
$sql = mysql_query("UPDATE restauracion SET nombre = '$tipos[$i]' WHERE tipo = 'Cómida para llevar'");
}
En cada pasada del bucle se destruye el valor de $sql, quedando únicamente el valor correspondiente a la última pasada, donde $tipos[ i ] es el último elemento del array, es decir, Bar-Restaurante
Un pequeño código de ejemplo:
<?php
echo 'Prueba <br/>';
$tipos[0] = 'Restaurante';
$tipos[1] = 'Bar';
$tipos[2] = 'Bar-Restaurante';
echo 'Recorrido primer bucle<br/>';
for ($y=0; $y<count($tipos); $y++) {
echo $tipos.'<br/>';
}
echo 'Recorrido segundo bucle<br/>';
for ($y=0; $y<count($tipos); $y++) {
echo $tipos[$y].'<br/>';
}
?>
Te recomiendo seguir este curso http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193 donde se explican los conceptos relacionados con bucles, arrays, consultas, etc.
Salu2