Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Duda con array

Estas en el tema de Duda con array en el foro de PHP en Foros del Web. Hola a todos, Desde un formulario envío los siguientes datos por POST: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original < input type = 'text' name = ...
  #1 (permalink)  
Antiguo 24/02/2016, 08:15
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
Duda con array

Hola a todos,

Desde un formulario envío los siguientes datos por POST:
Código HTML:
Ver original
  1. <input type='text' name='cant[]' class='canti'><
  2. <input type='checkbox' value='$nombre' name='equipo[]'>
Estos son datos generados con checkboxes.

Lo que necesito es, para efectos de hacer una consulta posterior la BD con cada uno de los datos del array y luego publicarlos en su debido orden.

Resulta que cuando leo y publico los resultados por separado, me los muestra sin problema, para eso hago esto:

Código PHP:
Ver original
  1. $equipo = $_POST["equipo"];
  2. $cantidad = $_POST["cant"];
  3.  
  4. $count_equipo = count($equipo);
  5.                             for ($i=0; $i< $count_equipo; $i++){
  6.                                 echo "<tr><td>".$equipo[$i]."</td>";
  7.                             }
  8.                            
  9.                         $count_cantidad = count($cantidad);
  10.                             for ($i=0; $i< $count_cantidad; $i++){
  11.                                 echo "<td>".$cantidad[$i]."</td></tr>";
  12.                             }

Obviamente me muestra los resultados por separado, para hacer lo que necesito, he pensado que debo construir un array nuevo con los datos obtenidos para luego si recorrerlo y hacer las operaciones que necesito, sin embargo, lo he hecho de dos formas y de ninguna me da resultado.

La primera es esta

Código PHP:
Ver original
  1. $equipo = $_POST["equipo"];
  2. $cantidad = $_POST["cant"];
  3.  
  4.  
  5.                             $datos = count($equipo,$cantidad);
  6.                                 for ($i=0; $i< $datos; $i++){
  7.                                     $arreglo = array($equipo => $cantidad);
  8.                                     echo "<tr><td>".$arreglo[0][$i]."</td>".$arreglo[1][$i]."</td></tr>";
  9.                                 }

Con esta lo que pretendía era contar primero los datos en los dos array que me llegaban, pero no fue posible, me daba este error:

Cita:
count() expects parameter 2 to be long, array given in
Supogo que es por que no puedo contar dos arrays en simultaneo, luego entonces intenté con

Código PHP:
Ver original
  1. $equipo = $_POST["equipo"];
  2.                             $cantidad = $_POST["cant"];
  3.  
  4. $data = array($equipo=>$cantidad);
  5. $datos = count($data);
  6. for ($i=0; $i< $datos; $i++){
  7. echo "<tr><td>".$data[0][$i]."</td>".$data[1][$i]."</td></tr>";
  8.                                 }
Cita:
Illegal offset type in C:\wamp\www\consicon\movimientos\preremision.php on line 45
y la linea 45 es
Código PHP:
Ver original
  1. $data = array($equipo=>$cantidad);

Alguien me puede dar ideas de como solucionar mi inconveniente?
__________________
Say no more.......
  #2 (permalink)  
Antiguo 24/02/2016, 08:57
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Duda con array

Puedes utilizar array_merge para unificar los 2 arrays y luego contarlo con count


Pero también podrías utilizar sólo un array en tu formulario para que ya vengan los datos en un solo array usando el mismo name en todos los imputados necesarios. Este según tus necesidades
  #3 (permalink)  
Antiguo 24/02/2016, 09:40
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
Respuesta: Duda con array

Gracias xeri, lo hice con un solo array y funcionó, sin embargo, al momento de querer mostrar los datos organizados en una tabla, hice
Código PHP:
Ver original
  1. $count_equipo = count($equipo);
  2.                             for ($i=0; $i< $count_equipo; $i++){
  3.                                 echo "<tr><td>".$equipo[1][$i]."</td><td>".$equipo[0][$i]."</td></tr>";
  4.                             }


pero me da este error

Uninitialized string offset: 0 in C:\wamp\www\consicon\movimientos\preremision.php on line 53

la linea 53 es
Código PHP:
Ver original
  1. echo "<tr><td>".$equipo[1][$i]."</td><td>".$equipo[0][$i]."</td></tr>";
__________________
Say no more.......
  #4 (permalink)  
Antiguo 24/02/2016, 09:45
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
Respuesta: Duda con array

cuando hago el print_r de $equipo el resultado es
Cita:
Array ( [0] => [1] => 7 [2] => Hidrolavadora Gasolina [3] => 9 [4] => Accesorios de Paral [5] => 10 [6] => Camilla [7] => )
Y el var_dump
Cita:
array (size=8)
0 => string '' (length=0)
1 => string '7' (length=1)
2 => string 'Hidrolavadora Gasolina' (length=22)
3 => string '9' (length=1)
4 => string 'Accesorios de Paral' (length=19)
5 => string '10' (length=2)
6 => string 'Camilla' (length=7)
7 => string '' (length=0)
__________________
Say no more.......
  #5 (permalink)  
Antiguo 24/02/2016, 09:46
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Duda con array

Oye el_cesar, pues los errores que obtienes es por querer usa PHP como se te de la gana, sin leer el manual para saber si es posible lo que intentas.

Programar no es cosa de hacer lo que uno tenga en mente, hay normas, hay reglas que seguir, para eso está el manual: para que te informes antes de hacer locuras.

Ahora, si ambos arrays tienen los mismos elementos con que iteres uno sólo es suficiente:
Código PHP:
Ver original
  1. $x = array(1, 2, 3);
  2. $y = array('a', 'b', 'c');
  3.  
  4. foreach (array_keys($x) as $i) {
  5.   var_dump($x[$i], $y[$i]);
  6. }

¿Se entiende la idea?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 24/02/2016, 11:53
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Duda con array

Tienes razón pateketrueke se podría hacer así.

Edito, se me h ido la cabeza.

El problrma es que tienes un array simple y tratas de acceder a posiciones que no existen


Prueba así

Código PHP:
Ver original
  1. $count_equipo = count($equipo);
  2.                             for ($i=0; $i< $count_equipo; $i++){
  3.                                 echo "<tr><td>".$equipo[$i]."</td><td>".$equipo[$i]."</td></tr>";
  4.                             }

Última edición por xerifandtomas; 24/02/2016 a las 12:10
  #7 (permalink)  
Antiguo 29/02/2016, 14:30
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
Respuesta: Duda con array

Por más que le he dado vueltas y vueltas, no logro obtener el resultado correcto,

envio los datos así
Código HTML:
Ver original
  1. "</td><td align='center'><input type='text' name='cant[]' class='canti'></td><td><input type='checkbox' value='$nombre' name='equipo[]'></td></tr>

los recibo así
Código PHP:
Ver original
  1. $equipo = $_POST["equipo"];
  2.                             $cantidad = $_POST["cant"];

luego filtro el array cantidad para eliminar los campos vacios asi
Código PHP:
Ver original
  1. $cantifilter = array_filter($cantidad);
Luego uno los array para conseguir uno solo
Código PHP:
Ver original
  1. $unido=array_merge($equipo,$cantifilter);
y le hago un var_dump, y efectivamente me muestra un solo array, pero todos los datos están en una sola columna, y lo que yo necesito son dos columnas, una que sea el nombre del equipo y la otra que sea la cantidad que corresponde.
__________________
Say no more.......
  #8 (permalink)  
Antiguo 29/02/2016, 14:42
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Duda con array

Precisamente eso hace array_merge(), combina dos arrays en uno sólo.

Creo que array_combine() suena mejor, consulta en el manual: http://php.net/manual/es/function.array-combine.php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 29/02/2016, 16:25
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
Respuesta: Duda con array

Efectivamente era lo que necesitaba, muchas gracias
__________________
Say no more.......

Etiquetas: formulario
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 04:40.