Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Manejar array

Estas en el tema de Manejar array en el foro de PHP en Foros del Web. Buenas Recibo de un formulario externo un array de post que con el print_r lo veo de la siguiente forma: producto [0] => 13 [1] ...
  #1 (permalink)  
Antiguo 09/01/2014, 17:31
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 21 años, 3 meses
Puntos: 3
Manejar array

Buenas

Recibo de un formulario externo un array de post que con el print_r lo veo de la siguiente forma:

producto

[0] => 13
[1] => 22
[2] => 343

precio

[0] => 120
[1] => 10
[2] => 15

sku

[0] => 12
[1] => 2
[2] => 43

Y necesigo guardar esa info en una base de datos, es decir necesito guardar en la base el valor de producto[0] el de precio[0] y sku[0] en el mismo insert y los demas en el suyo...como recorro este array?, no puedo modificar el modo en que lo recibo...

Alguien sabe como armar el foreach???
  #2 (permalink)  
Antiguo 09/01/2014, 17:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Manejar array

El foreach() es simple, suponiendo que tienes los 3 arrays: $a, $b y $c
Código PHP:
Ver original
  1. foreach ($a as $k => $v) {
  2.   print_r($a[$k]);
  3.   print_r($b[$k]);
  4.   print_r($c[$k]);
  5. }


Si lo piensas, los 3 arrays comparten las mismas claves, y esa es la solución.

Sólo necesitas un loop para acceder a todos los elementos.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 09/01/2014, 20:19
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 21 años, 3 meses
Puntos: 3
Respuesta: Manejar array

Hola Amigo

Lo he probado pero me devuelve la pagina en blanco, es un post lo que recibo probe de esta forma:

Código PHP:
  foreach ($_POST as $k => $v) {
                  
print_r($_POST['producto'][$k]);
                  
print_r($_POST['valor'][$k]);
                  
print_r($_POST['unidad'][$k]);
                } 
producto, valory unidad las variables de los input del formulario...

Volvi a cambiarlo, haciendo esto:

Código PHP:
  foreach ($_POST as $k => $v) {
                  echo 
"<pre>";
                  
print_r($_POST['producto']);
                  
print_r($_POST['valor']);
                  
print_r($_POST['unidad']);
                  echo 
"</pre>";
                } 
Me devuelve esto:

Array
(
[0] => 1
[1] => 25
[2] => 30
)
Array
(
[0] => 64356
[1] => 64356
[2] => 6456
)
Array
(
[0] => m2
[1] => m2
[2] => m2
)
Array
(
[0] => 1
[1] => 25
[2] => 30
)
Array
(
[0] => 64356
[1] => 64356
[2] => 6456
)
Array
(
[0] => m2
[1] => m2
[2] => m2
)
Array
(
[0] => 1
[1] => 25
[2] => 30
)
Array
(
[0] => 64356
[1] => 64356
[2] => 6456
)
Array
(
[0] => m2
[1] => m2
[2] => m2
)
Array
(
[0] => 1
[1] => 25
[2] => 30
)
Array
(
[0] => 64356
[1] => 64356
[2] => 6456
)
Array
(
[0] => m2
[1] => m2
[2] => m2
)
Array
(
[0] => 1
[1] => 25
[2] => 30
)
Array
(
[0] => 64356
[1] => 64356
[2] => 6456
)
Array
(
[0] => m2
[1] => m2
[2] => m2
)
Array
(
[0] => 1
[1] => 25
[2] => 30
)
Array
(
[0] => 64356
[1] => 64356
[2] => 6456
)
Array
(
[0] => m2
[1] => m2
[2] => m2
)
Array
(
[0] => 1
[1] => 25
[2] => 30
)
Array
(
[0] => 64356
[1] => 64356
[2] => 6456
)
Array
(
[0] => m2
[1] => m2
[2] => m2
)
  #4 (permalink)  
Antiguo 09/01/2014, 21:08
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Manejar array

Inténtalo así:

Código PHP:
Ver original
  1. foreach ($_POST as $key => $array){
  2.     echo "Producto: " . $_POST["producto"][$key] . "<br />";
  3.     echo "Precio: " . $_POST["precio"][$key] . "<br />";
  4.     echo "Unidad: " . $_POST["unidad"][$key] . "<br /><br />";
  5. }

Así quedaría (con datos de ejemplo): http://ideone.com/9jEtFA

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 09/01/2014 a las 21:21
  #5 (permalink)  
Antiguo 09/01/2014, 21:25
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 21 años, 3 meses
Puntos: 3
Respuesta: Manejar array

Exactamente es como quiero que se vea, pero me faltan estos datos:

$a = [13, 120, 12];
$b = [2, 10, 2];
$c = [12, 2, 43];
$post = [];

array_push($post, $a, $b, $c);

yo solamente se esto:

$_POST['producto']
$_POST['unidad']
$_POST['valor']

Por lo que veo en el ejemplo lo hace teniendo ya la info de los valores...
  #6 (permalink)  
Antiguo 09/01/2014, 21:27
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Manejar array

Inténtalo como te sugiero:

Código PHP:
Ver original
  1. foreach ($_POST as $key => $array){
  2.     echo "Producto: " . $_POST["producto"][$key] . "<br />";
  3.     echo "Valor: " . $_POST["valor"][$key] . "<br />";
  4.     echo "Unidad: " . $_POST["unidad"][$key] . "<br /><br />";
  5. }

Date cuenta que, en el ejemplo, $a es igual a $_POST["producto"], $b es igual a $_POST["valor"] y $c es igual a $_POST["unidad"] porque también son arrays.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 09/01/2014, 21:36
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 21 años, 3 meses
Puntos: 3
Respuesta: Manejar array

Bien, comprendo, lo he probado asi:

Código PHP:
$a $_POST['producto'];
                
$b $_POST['unidad'];
                
$c $_POST['valor'];
                
$post = [];
                 
                
array_push($post$a$b$c);
                 
                foreach (
$post as $key => $array){
                    echo 
"Producto: " $a[$key] . "\r\n";
                    echo 
"Precio: " $b[$key] . "\r\n";
                    echo 
"Unidad: " $c[$key] . "\r\n\r\n";
                } 
Me dice: Parse error: syntax error, unexpected '[' in

En este $post = [];

no se que me puede estar faltando?
  #8 (permalink)  
Antiguo 09/01/2014, 21:38
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Manejar array

Seguramente tu versión de PHP es inferior a la 5.4 que es en donde ya se pueden declarar los arrays de esa forma.

Inténtalo así:
Código PHP:
Ver original
  1. $post = array();

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 09/01/2014, 21:43
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 21 años, 3 meses
Puntos: 3
Respuesta: Manejar array

ERES UN GENIO!!! 12:44am iba a estar toda la noche, muchisimasss graciasss

ya te di las gracias desde el post.
  #10 (permalink)  
Antiguo 10/01/2014, 08:33
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 21 años, 3 meses
Puntos: 3
Respuesta: Manejar array

Tengo un problema mas...y es que solo pasa 3 veces el foreach, porque puede ser? por mas que sean mas datos, muetra hasta 3...alguna idea?
Código PHP:
$a $_POST['producto'];
                
$b $_POST['unidad'];
                
$c $_POST['valor'];
                
$post = array();
                 
                
array_push($post$a$b$c);
                 
                foreach (
$post as $key => $array){
                                        
$sql2 "UPDATE base SET idProducto = '".$a[$key]."', unidad = '".$b[$key]."', valorUnidad = '".$c[$key]."'";
                                        
$connection->query($sql2);    
                                        
                                } 
  #11 (permalink)  
Antiguo 10/01/2014, 09:28
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Manejar array

Lo que pasa es que el bucle itera la cantidad de elementos que contiene, los cuales son 3 (tres arrays). Inténtalo de esta forma:

Código PHP:
Ver original
  1. $producto = $_POST["producto"];
  2. $valor = $_POST["valor"];
  3. $unidad = $_POST["unidad"];
  4.  
  5. for ($i = 0, $limite = count($producto); $i < $limite; $i++){
  6.     echo "Producto: " . $producto[$i] . "\r\n";
  7.     echo "Valor: " . $valor[$i] . "\r\n";
  8.     echo "Unidad: " . $unidad[$i] . "\r\n\r\n";
  9. }

Como los tres arrays tienen la misma cantidad de elementos, basta con que iteres uno para obtener los valores de los tres.

Así se vería: http://ideone.com/9jEtFA

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: formulario, manejar
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 00:17.