Foros del Web » Programando para Internet » PHP »

Problema con FOREACH

Estas en el tema de Problema con FOREACH en el foro de PHP en Foros del Web. soy nueva manejando el foreach pero me resultaria de gran ayuda aprenderlo a manejar.... tengo dos campo texto dinamico <td class="unidad"><input type="text" name=<?php echo "und".$i ...

  #1 (permalink)  
Antiguo 06/09/2008, 07:25
 
Fecha de Ingreso: abril-2008
Mensajes: 151
Antigüedad: 16 años
Puntos: 0
Problema con FOREACH

soy nueva manejando el foreach pero me resultaria de gran ayuda aprenderlo a manejar.... tengo dos campo texto dinamico
<td class="unidad"><input type="text" name=<?php echo "und".$i ?> id ="<?php echo "und".$i ?>"></td>
<td class="cantidad"><input type="text" name=<?php echo "cant".$i ?> id ="<?php echo "cant".$i ?>"></td>


los cuales necesito recibir en mi siguiente pagina con foreach y verificar su contenido... si alguien me explica como lo recibe.... mil gracias
  #2 (permalink)  
Antiguo 06/09/2008, 07:44
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Problema con FOREACH

foreach(expresion_array as $value)
foreach(expresion_array as $key => $value

UN EJEMPLO SENCILLO PODRIA SER:
Cita:

<?php
$arr = array("one", "two", "three");
reset ($arr);
while (list(, $value) = each ($arr)) {
echo "Value: $value<br>\n";
}

foreach ($arr as $value) {
echo "Value: $value<br>\n";
}
?>
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #3 (permalink)  
Antiguo 06/09/2008, 07:45
 
Fecha de Ingreso: abril-2008
Mensajes: 151
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema con FOREACH

Los text son dinamicos santos.... no tengo valores definidos.... $arr = array("one", "two", "three"); NO
  #4 (permalink)  
Antiguo 06/09/2008, 07:46
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Aun que no se, si solo tienes esos dos input, no es mas facil tomarlos normalmente, con POST o GET??

la mayoria de las veces que se utiliza el foreach, es cuando se recorre un arreglo o si creaste los input dinamicamente y no sabes con exactitud cuantos son y los envias.

Saludos

bueno si es asi utiliza algo como esto!

Cita:
<?php
foreach ($_POST[sortlist] as $varname => $varvalue) {

..............sentencias....................

}

?>
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.

Última edición por GatorV; 06/09/2008 a las 10:14
  #5 (permalink)  
Antiguo 06/09/2008, 07:49
 
Fecha de Ingreso: abril-2008
Mensajes: 151
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema con FOREACH

EXACTO.... no se cuantos inputs tendre que tomar de la otra pagina... imaginate que son 500 input y ponerme a recogerlos todos con post ...... como q no
  #6 (permalink)  
Antiguo 06/09/2008, 07:53
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Problema con FOREACH

Declaras los input asi:
<input type=text size='5' name='ide[$count]' value='$lou[puntos']>");

y los retomas asi:

foreach($_POST['id'] as $ide => $puntos) ....
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #7 (permalink)  
Antiguo 06/09/2008, 08:03
 
Fecha de Ingreso: abril-2008
Mensajes: 151
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema con FOREACH

<td class="unidad"><input type="text" name=<?php echo "und".$i ?> id ="<?php echo "und".$i ?>"></td>
<td class="cantidad"><input type="text" name=<?php echo "cant".$i ?> id ="<?php echo "cant".$i ?>"></td>

En este formato no me sirve?
  #8 (permalink)  
Antiguo 06/09/2008, 08:09
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Debes colocarlo en forma de arreglo, para poder usar el foreach, recuerda q debes colocar el nombre de la variable en el POST, si los nombres son distintos, como los colocaras.

A menos que tengas digamos, n cantidad de und, n cantidad de cant, si es asi entonces deberas hacer varios foreach!

Aunque te sigo recomendando el formato que te di, en una sola variable como arreglo, y un solo foreach, eso va a depender de como tengas el formulario
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.

Última edición por GatorV; 06/09/2008 a las 10:15
  #9 (permalink)  
Antiguo 06/09/2008, 08:11
 
Fecha de Ingreso: abril-2008
Mensajes: 151
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema con FOREACH

Es que son dos campos text dinamicos, el de und y cant.... y tienen el $i que es el que le va dando nombres diferentes und1, und2,... etc.... igual que a los cant....
  #10 (permalink)  
Antiguo 06/09/2008, 08:16
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Problema con FOREACH

Bueno si son dos campos dinamicos, colocalos en formato de arreglo, pero deberas hacer dos foreach, uno para cant y otro para und.

Si los tienes en ese formato, la otra opcion es hacer un for simple, y retomar los valores mas o menos asi:

Cita:
for($i=1; $i<=cantidad; $i++)
$valor=$POST['cant'.$i];
pero deberas saber la cantidad de elementos o input que son!, eso lo puedes guardar en un campo de hidden en el form y enviarlo
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #11 (permalink)  
Antiguo 06/09/2008, 08:22
 
Fecha de Ingreso: abril-2008
Mensajes: 151
Antigüedad: 16 años
Puntos: 0
Ok si necesito esto asi... explicame lo del name y value.... porq no entiendo esa vaina.... gracias santito....

Cita:
Iniciado por the_web_saint Ver Mensaje
Declaras los input asi:
<input type=text size='5' name='ide[$count]' value='$lou[puntos']>");

y los retomas asi:

foreach($_POST['id'] as $ide => $puntos) ....
Explicame lo que hicistes con los name y value por favor... gracias santito

Última edición por GatorV; 06/09/2008 a las 10:15
  #12 (permalink)  
Antiguo 06/09/2008, 08:30
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Cita:
foreach($_POST['id'] as $ide => $puntos)
Cuando colocas esto asi, el valor del input en esta pasada en el ciclo lo tiene $puntos, esta variable la usas ya sea para hacer la operación que desees realizar.

lo del name y value del input, es porque como necesitas los input en forma de arreglo, asignas el nombre de esta forma.
Cita:
<input type=text size='5' name='ide[$count]' value='$lou[puntos']>");
el $count, sera digamos el contador que tengas en el ciclo cuando vallas generando los input dinamicamente, esto es un simple ejemplo, el value, en tu caso no tendras que colocarlo, ya que el usuario llenara los campos.
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.

Última edición por GatorV; 06/09/2008 a las 10:15
  #13 (permalink)  
Antiguo 06/09/2008, 09:07
 
Fecha de Ingreso: abril-2008
Mensajes: 151
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema con FOREACH

No puedo aw... soy media bruta... si los declaro de tu forma se va contador.... :(
  #14 (permalink)  
Antiguo 06/09/2008, 09:13
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
No entendi!
Mira, en que te basas para generar dinamicamente esos input?
1. pides la cantidad de cant y und?
2. tienes una accion que genera parejas de estos?

Osea, tienes un ciclo que te genera estos input dinamicamente??

Coloca el codigo de como lo generas, a ver si puedo ayudarte mejor!
A ver como armamos la estructura de tus input, para que sea más fácil la recuperación de los datos.
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.

Última edición por GatorV; 06/09/2008 a las 10:16
  #15 (permalink)  
Antiguo 06/09/2008, 09:41
 
Fecha de Ingreso: abril-2008
Mensajes: 151
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema con FOREACH

Cita:
Iniciado por the_web_saint Ver Mensaje
No entendi!
Mira, en que te basas para generar dinamicamente esos input?
1. pides la cantidad de cant y und?
2. tienes una accion que genera parejas de estos?

Osea, tienes un ciclo que te genera estos input dinamicamente??
Los inputs vienen generados de una consulta que hago antes de esto.... si vienen generados de un ciclo....
  #16 (permalink)  
Antiguo 06/09/2008, 09:45
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Problema con FOREACH

Bueno, coloca el contador del ciclo para ir generando los nombres de los input.
Ya con esto tendras los input en forma de arreglo, cuando lo envias usaras el foreach para retomarlos de la misma forma que el ejemplo!.

Que es lo que no te funciona??
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #17 (permalink)  
Antiguo 06/09/2008, 09:49
 
Fecha de Ingreso: abril-2008
Mensajes: 151
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema con FOREACH

echo "<table border='10' id='tabla'>";
echo "<tr><th bgcolor='#C0D9D9'>Fecha</th><th bgcolor='#C0D9D9'>Categoria</th><th bgcolor='#C0D9D9'>Cod</th><th bgcolor='#C0D9D9'>Descripcion</th><TH bgcolor='#C0D9D9'>Unidad</th><TH bgcolor='#C0D9D9'>Cantidad</th>";
$i = 0;
while($sql = mysql_fetch_array($consulta))
{
echo "<tr>";
echo "<td>".$fecha_."</td>";
echo "<td>".$sql['subcategoria']."</td>";
$subcat = $sql['subcategoria'];
echo "<td>".$sql['codigo']."</td>";
$codigo = $sql['codigo'];
echo "<td>".$sql['descrip']."</td>";
$desc = $sql['descrip'];
?><td class="unidad"><input type="text" name=<?php echo "und".$i ?> id ="<?php echo "und".$i ?>"></td>
<td class="cantidad"><input type="text" name=<?php echo "cant".$i ?> id ="<?php echo "cant".$i ?>"></td>
<?
echo "</tr>";
$i++;
}
echo "</table>";

Este es el codigo que genera toda mi tabla y los inputs....
  #18 (permalink)  
Antiguo 06/09/2008, 09:54
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Problema con FOREACH

Prueba de esta forma!

Cita:
echo "<table border='10' id='tabla'>";
echo "<tr><th bgcolor='#C0D9D9'>Fecha</th><th bgcolor='#C0D9D9'>Categoria</th><th bgcolor='#C0D9D9'>Cod</th><th bgcolor='#C0D9D9'>Descripcion</th><TH bgcolor='#C0D9D9'>Unidad</th><TH bgcolor='#C0D9D9'>Cantidad</th>";
$i = 1;
while($sql = mysql_fetch_array($consulta))
{
echo "<tr>";
echo "<td>".$fecha_."</td>";
echo "<td>".$sql['subcategoria']."</td>";
$subcat = $sql['subcategoria'];
echo "<td>".$sql['codigo']."</td>";
$codigo = $sql['codigo'];
echo "<td>".$sql['descrip']."</td>";
$desc = $sql['descrip'];
?><td class="unidad"><input type="text" name="und[<?php echo $i; ?>]" id ="und[<?php echo $i; ?>]"></td>
<td class="cantidad"><input type="text" name="cant[<?php echo $i; ?>]" id ="cant[<?php echo $i; ?>]"></td> <?
echo "</tr>";
$i++;
}
echo "</table>";
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #19 (permalink)  
Antiguo 06/09/2008, 10:03
 
Fecha de Ingreso: abril-2008
Mensajes: 151
Antigüedad: 16 años
Puntos: 0
pooooooooooo error hahahahha......

ya me hace la tabla con los inputs secuenciales ahora tratare de recogerlos con el foreach

Última edición por GatorV; 06/09/2008 a las 10:16
  #20 (permalink)  
Antiguo 06/09/2008, 10:07
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Problema con FOREACH

Que tenia?, porque mando error??
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #21 (permalink)  
Antiguo 06/09/2008, 10:10
 
Fecha de Ingreso: abril-2008
Mensajes: 151
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema con FOREACH

No nada....... fue una metida de pata mia........ foreach($_POST['id'] as $ide => $puntos) cuando colas post id.... id que es? porq segun lo q entendi ide es el nombre del input y puntos la variable a la que le asigno el valor del input
  #22 (permalink)  
Antiguo 06/09/2008, 10:13
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
ahi coloca el nombre del campo, en este caso, und y cant, pero recuerda que seran en foreach distintos!

en tu caso usarias estos:

foreach($_POST['und'] as $valor)

y

foreach($_POST['cant'] as $valor)
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.

Última edición por GatorV; 06/09/2008 a las 11:14
  #23 (permalink)  
Antiguo 08/09/2008, 09:14
 
Fecha de Ingreso: abril-2008
Mensajes: 151
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema con FOREACH

Trate de imprimir en la pagina que recibe y no imprime nada :(
foreach($_POST['und'] as $valor)
{
echo "$valor";
}
  #24 (permalink)  
Antiguo 08/09/2008, 09:39
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Problema con FOREACH

coloca el codigo del formulario!
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #25 (permalink)  
Antiguo 08/09/2008, 10:06
 
Fecha de Ingreso: abril-2008
Mensajes: 151
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema con FOREACH

ya me imprime.... dime algo santos... es posible manejar los datos que toma el foreach por separado????
  #26 (permalink)  
Antiguo 08/09/2008, 10:09
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Problema con FOREACH

que deseas hacer??

cuando estas dentro del foreach, recojes los datos uno a uno.

explicame que deseas hacer a ver si te entiendo mejor!
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #27 (permalink)  
Antiguo 08/09/2008, 10:11
 
Fecha de Ingreso: abril-2008
Mensajes: 151
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema con FOREACH

foreach($_POST['und'] as $valor)
{
if ($valor <> "")
{
echo "$valor \n";
}
else
{
echo "Blanco";
}
}

Esto es lo q imprime:
unidad docena Blancounidad unidad Blancoresma unidad BlancoBlancoBlancoBlancoBlancoBlancoBlancoBlancoBl ancoBlancoBlancoBlancoBlancoBlancoBlancoBlancoBlan coBlancoBlancoBlancoBlancoBlancoBlancoBlancoBlanco BlancoBlancoBlancoBlancoBlancoBlancoBlanco4 1 2 54 1 2

Necesito manejar cada dato x separado y no en bloque....
  #28 (permalink)  
Antiguo 08/09/2008, 10:13
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Problema con FOREACH

estan por separado jova, lo que pasa es que el foreach es com un for, que recorre el POST, cuando colocas echo, el imprime todos, pues claro, recorreo todo el POST

si colocas lo que deseas hacer dentro del for, veras que esta dato por dato!
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #29 (permalink)  
Antiguo 08/09/2008, 10:21
 
Fecha de Ingreso: abril-2008
Mensajes: 151
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema con FOREACH

No entender.... soy media brutica como asi dentro del for?
  #30 (permalink)  
Antiguo 08/09/2008, 10:29
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Problema con FOREACH

Cita:
foreach($_POST['und'] as $valor)
{
// dentro del foreach, esto funcionara como un ciclo, dentro de esto coloca lo que deseas hacer con cada dato
if ($valor <> "")
{
echo "$valor \n";
}
else
{
echo "Blanco";
}
//fin del ciclo
}
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
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 19:43.