Foros del Web » Programando para Internet » PHP »

Array desde formulario

Estas en el tema de Array desde formulario en el foro de PHP en Foros del Web. Hola a [email protected]! Me estoy mirando el tema de recojer información de los formularios mediante arrays y me surge un problema al que no le ...
  #1 (permalink)  
Antiguo 30/04/2004, 14:29
 
Fecha de Ingreso: mayo-2002
Mensajes: 72
Antigüedad: 15 años, 6 meses
Puntos: 0
Pregunta Array desde formulario

Hola a [email protected]!

Me estoy mirando el tema de recojer información de los formularios mediante arrays y me surge un problema al que no le sé encontrar una buena solución.

El caso es el siguiente:

Tengo un formulario con más de una tabla del tipo:



La intención es que la página que procese el formulario reciba (o discrimine de algun metodo),
la tabla, el elemento( 01, 02, 03 ... 0n), y los valores (1, 2, 3), que se han seleccionado.

He estado provando con:
Código:
<input type="checkbox" name="Elemento 01[]" value="1">
<input type="checkbox" name="Elemento 01[]" value="2">
<input type="checkbox" name="Elemento 01[]" value="3">
-----
<input type="checkbox" name="Elemento 02[]" value="1">
<input type="checkbox" name="Elemento 02[]" value="2">
<input type="checkbox" name="Elemento 02[]" value="3">
----- 
..en el formulario html, y con:
Código:

foreach ($HTTP_POST_VARS["Elemento 01"] as $id){
	echo $id."<br>";
	}
 
en el script PHP.

El resultado no es malo siempre y cuando no tengamos en cuenta que con ese sistema se tiene que repetir el foreach por cada elemento de la tabla.
Partiendo de que hay más de 5 tablas y que cada tabla tiene más de 10 elementos, no es una buena solución.

En definitiva, la idea es:

Cómo tendria que orientar el script para que sea independiente de la cantidad de (tablas --> elementos --> valores), del formulario?

Intentaba pensar que la idea tiene que estar en el html al definir el nombre de la variable como array, que se le pueda passar el valor tambien del elemento...pero ahí ya no lo veo nada claro.

Gracias por todo!!


Última edición por Orkua; 06/05/2004 a las 03:42
  #2 (permalink)  
Antiguo 30/04/2004, 15:27
 
Fecha de Ingreso: marzo-2004
Ubicación: $_SERVER['DOCUMENT_ROOT'] :-)
Mensajes: 100
Antigüedad: 13 años, 8 meses
Puntos: 0
Siempre y cuando tengas forma de controlar (o conocer) la cantidad de "Elementos" que componen tu formulario, podrías hacer algo así:

Código PHP:
$nombre_base="Elemento ";
$total_elementos=20;

for (
$i=1;$i<=$total_elementos;$i++) {
    
$nombre_elemento=$nombrebase.strpad($i,"0"STR_PAD_LEFT);
    foreach (
$HTTP_POST_VARS[$nombre_elemento] as $id){
        echo 
$id."<br>";
    }



__________________
-- girls.code.better --
  #3 (permalink)  
Antiguo 06/05/2004, 03:38
 
Fecha de Ingreso: mayo-2002
Mensajes: 72
Antigüedad: 15 años, 6 meses
Puntos: 0
Grácias Codegirl por la información. A raiz de tu post e investigando un poquitn más encontré una solución que cuando tenga terminada del todo postearé entera para poderla discutir mejor,

Ahora, en el proceso de recojer la información del array $HTTP_POST_VARS me surge otro problemillas:

Siguiendo este fragmento de codigo y como base la imagen de la tabla del primer post:
Código:
$n_elementos = count($HTTP_POST_VARS["$key"]["$id"]);
					
					
foreach($HTTP_POST_VARS["$key"]["$id"] as $value => $seleccion){
							
	if ($n_elementos == 1){
									
		if ($seleccio == 1) {
			echo "<td>$seleccion</td>";
		}else{
			echo "<td align='center' valign='middle'>--</td>";
		}
		if ($seleccio == 2) {
			echo "<td>$seleccion</td>";
		}else{
			echo "<td align='center' valign='middle'>--</td>";
		}
		if ($seleccio == 3) {
			echo "<td>$seleccion</td>";
		}else{
			echo "<td align='center' valign='middle'>--</td>";
		}
	}
								
	if ($n_elementos == 2){
         //aqui falta el código que no entiendo como debe 
ir en el caso de que los elementos seleccionados sean 2 
	}
									
									
									
	if ($n_elementos == 3){
	echo "<td>$seleccion</td>";
	}
}
Cómo puedo hacer para que en el caso de que en el formulario se hayan seleccionado sólo 2 valores ya sean (12,13 o 23) en la salida HTML se impriman esos dos más un tercero como vacio y en orden?

Ahora el problema lo tengo en que si el usuario selecciona por ejemplo el par (23) en la salida me sale:
2 | 3 | vacio en vez de: vacio | 2 | 3
Y en el caso de que elija (13), en la salida me sale:
1 | 3 | vacio en vez de: 1 | vacio | 3

Espero haberme explicado lo suficiente, y gracias por su ayuda!


Última edición por Orkua; 06/05/2004 a las 03:40
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 22:08.