Foros del Web » Programando para Internet » PHP »

foreach

Estas en el tema de foreach en el foro de PHP en Foros del Web. hola a todos, mi problema es el siguiente: tengo en un formulario dos grupos de checkbox distintos. cuando los checkbox son marcados a traves del ...
  #1 (permalink)  
Antiguo 02/03/2004, 09:21
 
Fecha de Ingreso: octubre-2003
Ubicación: Concepción
Mensajes: 84
Antigüedad: 21 años, 1 mes
Puntos: 0
foreach

hola a todos, mi problema es el siguiente:

tengo en un formulario dos grupos de checkbox distintos. cuando los checkbox son marcados a traves del formulario de ingreso se debn ingresar en una misma tabla, ¿de que forma puedo recorrer estos dos grupos de checkbox en forma paralela de manera que pueda realizar solo un insert con todos los datos seleccionados?
  #2 (permalink)  
Antiguo 02/03/2004, 09:47
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
a los checkbox les puedes asignar un nombre asi:

<input type="checkbox" name="nombre[]" value="algo">
de manera que se forme un array. dependiendo del metodo de envio se recorreria asi:

get:
foreach($_GET['nombre'] as $dato)
echo $dato;

post:
foreach($_POST['nombre'] as $dato)
echo $dato;
__________________
Dedicado a proyectos web, actualmente desarrollando un sistema de diseño de flyers online muy fácil de usar.
  #3 (permalink)  
Antiguo 02/03/2004, 09:56
 
Fecha de Ingreso: octubre-2003
Ubicación: Concepción
Mensajes: 84
Antigüedad: 21 años, 1 mes
Puntos: 0
El problema no esta precisamente ahi, la situacion es la siguiente:

<input type="checkbox" name="nombre_1[]" value="algo">
....... (varios mas)
<input type="checkbox" name="nombre_2[]" value="algomas">


al procesar el formulario:

foreach($_POST['nombre_1'] as $dato)
aqui realizo un insert en la tabla

foreach($_POST['nombre_2'] as $dato)
en la misma tabla aka debo hacer un Update

lo que yo quiero es recorrer con un solo foreach los dos grupos de checkbox para poder realizar un solo Insert y no un Insert mas un Update...

se puede???

Saludos
  #4 (permalink)  
Antiguo 02/03/2004, 10:00
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

¿Como realizas el insert? Porque lo que yo haria seria crear parte de la cadena de la consulta en el primer foreach, otra parte en el segundo, y despues ejecutar la consulta.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 02/03/2004, 10:19
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
hice un pequeño ejemplo, aqui el html

<html>
<body>
<form name="cheques" action="verlo.php" method="post">
<table>
<tr>
<td>
<input type="checkbox" name="grupo1_1" value="algo1"><br>
<input type="checkbox" name="grupo1_2" value="algo2"><br>
<input type="checkbox" name="grupo1_3" value="algo3"><br>
</td>
<td>
<input type="checkbox" name="grupo2_1" value="algo4"><br>
<input type="checkbox" name="grupo2_2" value="algo5"><br>
<input type="checkbox" name="grupo2_3" value="algo6"><br>
</td>
</tr>
</table>
<input type="submit" name="grabar" value="Enviar">
</form>
</body>
</html>

aqui el php:

<?php
for ($i=1;$i<=3;$i++)
{
$var1="grupo1_".$i;
$var2="grupo2_".$i;
echo $_POST[$var1]." ".$_POST[$var2]."<br>";
}
?>

funciona bien.
__________________
Dedicado a proyectos web, actualmente desarrollando un sistema de diseño de flyers online muy fácil de usar.
  #6 (permalink)  
Antiguo 02/03/2004, 10:44
 
Fecha de Ingreso: octubre-2003
Ubicación: Concepción
Mensajes: 84
Antigüedad: 21 años, 1 mes
Puntos: 0
aki va la cosa. La cuestion es q tengo un listado de productos X que poseen dos tipos de colores: Color Princpal (cp) y Color de Correa (cc). Desde el formulario de ingreso de productos se debn seleccionar que colores estaran disponibles para ese producto X (podrian ser todos o ninguno). Con esta información tengo que ingresar en la tablas 'Colores_Disponibles' las combinaciones seleccionadas anteriormente....La lista de colores original contempla 10 colores principales y 10 colores de correas.

La tabla Colores_Disponibles tiene la siguiente estructura:

(cod_producto,id_color_P, id_color_C)


Código PHP:

foreach ($_POST['color_p'] as $cp)
{
     
$sql="select id_color from disponibles where   traduc_color='".$cp."'";
     
$qry=mysql_query($sql); //arroja un solo resultado
     
$sql_ins="insert into Colores_disponibles (cod_producto,id_color_P,id_color_C) values (".$_POST["codigo"].",".$qry["id_color"].","aqui el otro id de color")";

Como ven en la situacion anterior para el campo id_color_C aun no tengo informacion, esta viene desde el formulario como $_POST['color_c'] pero en el foreach anterior no tengo como accesarla de una sola vez para poder realizar el insert.

se entiende???...
gracias de nuevo
  #7 (permalink)  
Antiguo 02/03/2004, 12:09
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Buenoi, ahora esta mas claro. No quieres hacer un solo insert, quieres hacer a por b inserts, siendo a el numero de seleccionados del primer grupo y b el numero seleccionado del segundo.

Solucion: anidar los foreach:

foreach (primer array) {
foreach (segundo array) {
Insert
}
}

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 02/03/2004, 13:35
 
Fecha de Ingreso: diciembre-2003
Mensajes: 54
Antigüedad: 20 años, 11 meses
Puntos: 0
Hola, por lo que entendi necesitas formar conjuntos de colores correa por cada principal, para eso creo que podrias usar la funcionalidad de conjuntos de mysql:
http://www.mysql.com/doc/en/SET.html

Saludos
  #9 (permalink)  
Antiguo 03/06/2004, 05:45
 
Fecha de Ingreso: marzo-2002
Mensajes: 86
Antigüedad: 22 años, 8 meses
Puntos: 0
foreach ($_GET[

Igual es una burrada pero tengo un problema y no se como resolverlo:
puedo unir 2 for each?

foreach ($_GET['idpregunt'] as $idpregunt) {
mysql_query("Insert into resultats set r_idenquesta='$enquid',r_idusuari='$usuari',r_idpr egunta='$idpregunt',r_respuesta='$respuesta'");

Si hago esto me funciona correctamente, pero yo quiero que la variable respuesta sea como la variable idpregunt

O sea hacer algo asi como:

foreach ($_GET['idpregunt'] as $idpregunt) ($_GET['respuesta'] as $respuestat){


pero con sentido y que funcionara. Ya se que puedo poner un foreach dentro de otro pero no me interesa.

Ya se que me he expleicado fatal pero si alguien lo ha captado me podria ayudar porfavor?
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 12:15.