Foros del Web » Programando para Internet » PHP »

FORMS, con mas de 100 Campos

Estas en el tema de FORMS, con mas de 100 Campos en el foro de PHP en Foros del Web. Hola estimados, Tengo unos formularios con muchos campos, he encontrador un codigo que me permite capturar los $POST enviados sin necesidad de escribir todo el ...
  #1 (permalink)  
Antiguo 09/08/2004, 20:35
 
Fecha de Ingreso: julio-2004
Mensajes: 64
Antigüedad: 19 años, 9 meses
Puntos: 0
FORMS, con mas de 100 Campos

Hola estimados,

Tengo unos formularios con muchos campos, he encontrador un codigo que me permite capturar los $POST enviados sin necesidad de escribir todo el codigo por cada campo, ($var=$POST['var'];)pero lo que no entiendo bien es como hago que esto termine en una variable que despues pueda escribir en un archivo.

El codigo es este.
foreach($_POST as $nombre_campo => $valor){
$asignacion = "\$" . $nombre_campo . "='" . $valor . "';";
eval($asignacion);
}

Entiendo que el resultado seria el valor cargado en una variable de PHP con el nombre asignado en el FORM. Pero como hago que eso pase a otra variable que se llema to_put por ejemplo y que la ponga dentro de mi fwrite.

Por si ayuda, yo genero un archivo secuencial TXT que tiene cada form completado que despues es recogido por una rutina FTP por mi usuario.

Gracias por el apoyo.
  #2 (permalink)  
Antiguo 09/08/2004, 20:59
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Pon un ejemplo un poco más concreto de lo que quieres. Qué datos se ingresan y cómo los quieres acomodar para guardarlos en el .txt.

Por cierto lo único que haces con ese código que has puesto es convertir las variables $_POST['nombre'] = "valor"; a $nombre = valor;... Pues esto mismo lo puedes conseguir con al función extract:
http://www.php.net/manual/es/function.extract.php

Simplemente haciendo:
Código PHP:
extract($_POST); 
en lugar de tu código.
Saludos
  #3 (permalink)  
Antiguo 10/08/2004, 20:37
 
Fecha de Ingreso: julio-2004
Mensajes: 64
Antigüedad: 19 años, 9 meses
Puntos: 0
Gracias por la respuesta, les cuento con mas detalle, tengo un form como de 100 campos a cada form field le he dado un nombre, C1, C2, C3 etc. el ACTION es POST, entonces se ejecuta un programa graba.php que captura en una variable $C1=$_POST['C1']; etc etc. y lo que hago despues en una varibale $to_put ="$C1 $C2" y eso lo grabo en fwrite como una sola linea. Es todo lo que necesito porque los valores los analizo despues en Excel.

Pero como comprenderan es hacer 100 $C1=$_POST etc etc y estoy buscando algo mas eficiente porque ya me ha pasado que me olvido de una y pierdo un dato del FORM.

Podria hacer algo asi $to_put=extract($_POST); y despues el fwrite del $to_put?? asi de simple??

Mil gracias
  #4 (permalink)  
Antiguo 10/08/2004, 21:05
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Lo mejor sería que nombres a tus campos de formulario como un array. De esa forma nos aseguramos que podemos coger sólo los C1, C2, etc y no otras variables que puedas estar enviando en el mismo form (la del submit, por ejemplo).
Esto lo consigues repitiendo una línea como la que sigue para cada campo en el form:
<input type="text" name="campos_array[]">

O sea pones "campos_array[]" en lugar de "C1".
Pones el mismo "campos_array[]" en lugar de "C2".
, etc.

Luego en el graba.php Pones un código como el siguiente:
Código PHP:
foreach($_POST['campos_array'] as $clave =>$valor){
    if(
$clave == 0){//si es el primer valor...
        
$to_put $valor;//inicializar la variable
    
}else{//si no...
        
$to_put .= " $valor";///agregar un espacio en blanco y el siguiente valor
    
}

Saludos
  #5 (permalink)  
Antiguo 11/08/2004, 21:37
 
Fecha de Ingreso: julio-2004
Mensajes: 64
Antigüedad: 19 años, 9 meses
Puntos: 0
Gracias con esto tengo la solucion....
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 18:57.