Foros del Web » Programando para Internet » PHP »

A quien le sirva recupera datos a un array

Estas en el tema de A quien le sirva recupera datos a un array en el foro de PHP en Foros del Web. Recuperar datos a un array, deopendiendo de las filas llenadas... o sea tabla dinamica. -variable inicio indeica cantidad de filas: aqui va: <?php for ($i ...
  #1 (permalink)  
Antiguo 28/08/2003, 10:47
Avatar de skatomundo  
Fecha de Ingreso: junio-2002
Ubicación: Santiago - CL
Mensajes: 2.532
Antigüedad: 21 años, 9 meses
Puntos: 125
A quien le sirva recupera datos a un array

Recuperar datos a un array, deopendiendo de las filas llenadas...
o sea tabla dinamica.

-variable inicio indeica cantidad de filas:

aqui va:


<?php

for ($i = 1; $i <= $inicio; $i++)
{
//Aqui recupaero los nombres de campo y aignando la variable "i" para indicar el numero.. a que corresponde en el formulario

$pie_var = 'piezas' .$i;
$kg_var = 'kg' .$i;
$bins_var = 'num_bins' .$i;

$pie[$i] = $$pie_var;
$klg[$i] = $$kg_var;
$bins[$i] = $$bins_var;
}
?>






ACA VA LA tabla DEL FORM:


<table>
<?php
for ($i = 1; $i <= $inicio; $i++)
{
?>
<tr>
<td><input name="piezas<?php echo $i ?>"></td>
<td><input name="kg<?php echo $i ?>"></td>
<td><input name="num_bins<?php echo $i ?>"></td>
</tr>
<?php
} //fin for
?>
</table>


BUENO SALUDOS SKATOMUNDO::.

Que guste-... para Uds. con amor...
  #2 (permalink)  
Antiguo 28/08/2003, 11:15
Avatar de skatomundo  
Fecha de Ingreso: junio-2002
Ubicación: Santiago - CL
Mensajes: 2.532
Antigüedad: 21 años, 9 meses
Puntos: 125
Más explicación para que les sirva:


Tengo una tabla formada por un FOR dependiendo dela variable "inicio"
lleno mis campos del Formulario y luego los paso desde el form.

lleno cada array leyendo los campos que fueron asigandos con la numeracion de "i"
  #3 (permalink)  
Antiguo 28/08/2003, 22:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cuando se trabaja con arrays que se generan por un formulario .. lo que se suele usar es definir el nombre de tu variabel del formulario como un array de indice automático:

Código PHP:
<table>
<?php
for ($i 1$i <= $inicio$i++)
{
?>
<tr> 
<td><input name="piezas[<? echo $i ?>]"></td>
<td><input name="kg[<? echo $i ?>]>"></td>
<td><input name="num_bins[<? echo $i ?>]"></td>
</tr>
<?php 
//fin for
?>
</table>
En tu script donde procesas ese formulario .. Si quieres leer array por array (campo por campo de tu formualrio) Se puede emplear un simple bucle foreach():

Código PHP:
<?
// POST o GET .. depende del formulario y su method empleado ..
foreach($_POST['piezas'] as $pieza){
   echo 
$pieza;
}
?>
Y .. ya está .. ahi tienes:
$_POST['piezas'][$i]

Por si quieres acceder a ese valor directo por el indice indicado ..

En estos casos .. se suele usar mucho para "organizar" los datos mejor el pasarlo a un array bidimensional para .. por ejemplo; guardarlo en una cookie o sessión (típico ejemplo de un "carrito de compras" ..)

Para ello puedes usar un bucle 'for' contando el total de elementos de uno de los arrays implicados .. y asignarlo al array bidimensional (asociativa):

ejemplo:
Código PHP:
<?
$incio
=count($_POST['piezas'];
for (
$i 1$i <= $inicio$i++){
// y usar su indice en los tres arrays implicados
$producto['pieza'][$i]=$_POST['piezas'][$i];
$producto['kg'][$i]=$_POST['kg'][$i];
$producto['num_bins'][$i]=$_POST['num_bins'][$i];
}
?>

Un saludo,

pd: .. a todos nos ha pasado eso, al no conocer que existe [] y que lo podemos usar como nombre de variable de un formulario .. empezamos a buscar "cómo crear variables dinámicamente" ... Pero creo que la solución más "límpia" y óptima es la de usar [].
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 28/08/2003 a las 22:27
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 16:30.