Foros del Web » Programando para Internet » PHP »

php procesar formularios

Estas en el tema de php procesar formularios en el foro de PHP en Foros del Web. hola, estoy aprendiendo php y estoy atorada con un ejercicio; en teoria deberia desplegarse un programa que revisa datos ingresados por un usuario, como: nombre, ...
  #1 (permalink)  
Antiguo 03/02/2012, 02:20
 
Fecha de Ingreso: noviembre-2011
Mensajes: 5
Antigüedad: 12 años, 5 meses
Puntos: 0
Pregunta php procesar formularios

hola, estoy aprendiendo php y estoy atorada con un ejercicio; en teoria deberia desplegarse un programa que revisa datos ingresados por un usuario, como: nombre, apellido etc, y validar y revisar la sintaxis predefinida en el programa. pero lo único que logro desplegar en la web es la última línea de "binvenida".
el codigo es el siguiente:

echo "<html>
<head><title>Empty fields</title></head>
<body>";

/* set up array with all the fields */
$arreglo_etiqueta = array ("primernombre"=>"primernombre:",
"segundonombre"=>"segundonombre:",
"apellido"=>"apellido:",
"calle"=>"calle:",
"cp"=>"cp:");

/* check each field except middle name for
blank fields */
foreach ($_POST as $field => $value)
{
if($field != "segundonombre")
{
if( $value == "" )
{
$arreglo_vacio[$field] = "vacio";
}
}
} // end of foreach loop for $_POST


/* if any fields were blank, display error message and
redisplay form */
if(@sizeof($arreglo_vacio) > 0) //blank fields are found
{
echo "<b>no lleno uno o más campos obligatorios. Debe digitar:</b><br>";
/* display list of missing information */
foreach($arreglo_etiqueta as $field => $value)
{
echo "&nbsp;&nbsp;&nbsp;{$arreglo_etiqueta[$field]}<br>";
}

/*volver a mostrar el formulario*/
$primernombre=trim (strip_tags($_POST['primernombre']));
$segundonombre=trim (strip_tags($_POST['segundonombre']));
$apellido=trim (strip_tags($_POST['apellido']));
$calle=trim (strip_tags($_POST['calle']));
$cp=trim (strip_tags($_POST['cp']));

echo"<p><hr>
<form action='$_SERVER[PHP_SELF]'
method='POST'>\n;
<center>
<table width='95%' border='0' cellspacing='0' cellpadding='2'>
<tr>
<td align='right'> <b> {$arreglo_etiqueta ['primernombre']}:
</br>
</td>
<td><input type='text' name='primernombre' size='65' maxlength='65' value=['$primernombre']>
</td>
</tr>
<tr>
<td align='right'><b>{$arreglo_etiqueta['segundonombre']}:
</br>
</td>
<td><input type='text' name='segundonombre' size='65' maxlength='65' value=['$segundonombre']>
</td>
</tr>
<tr>
<td align='right'><b>{$arreglo_etiqueta['apellido']}:
</br>
</td>
<td><input type='text' name='apellido' size='65' maxlength='65' value=['apellido']>
</td>
</tr>
<tr>
<td align='right'><b>{$arreglo_etiqueta['calle']}:
</br>
</td>
<td><input type='text' name='calle' size='65' maxlength='65' value=['calle']>
</td>
</tr>
<tr>
<td align='right'><b>{$arreglo_etiqueta['cp']}:
</br>
</td>
<td><input type='text' name='cp' size='65' maxlength='65' value=['cp']>
</td>
</tr>
</table>
<p> <input type='submit' value='enviar nombre y direccion'>

</form> </center>";
exit();
}

echo"BIENVENIDO";
?>

por favor ayuda deseperada!!
  #2 (permalink)  
Antiguo 03/02/2012, 02:28
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Respuesta: php procesar formularios

para empezar podrías meter el código dentro de la etiqueta highlight
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #3 (permalink)  
Antiguo 03/02/2012, 02:31
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: php procesar formularios

Es porque $arreglo_vacio esta... vacío!!!, por lo cual se salta el if, y solo imprime echo 'BIENVENIDO';, tienes que definir primero la variable $arreglo_vacio antes del foreach, ahora, segura que hay datos dentro de $_POST?, seria bueno que imprimieras un var_dump($_POST);
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #4 (permalink)  
Antiguo 03/02/2012, 14:12
 
Fecha de Ingreso: noviembre-2011
Mensajes: 5
Antigüedad: 12 años, 5 meses
Puntos: 0
Pregunta Respuesta: php procesar formularios

lo siento no sabía que con la etiqueta highlight se veria mejor...

en cuanto a mi código, pues sucede que lo agarré de un libro (PHP & MySQL For Dummies, 3rd Edition PHP). el archivo se llama chequeoDatos.php
*según ahí dice que las etiquetas del $arreglo_etiqueta se mueven en ciclo por todas las variables del form revisando si hay campos vacios.

*dice que las VARIABLES estan en el arreglo $_POST y q campo vacio encontrado se agregara al $arreglo_vacio; supongo que es la linea 16.

*luego si hay campos vacios verifica el número de elementos en $arreglo_vacio y si no se encontraron vacios se va directo al msj de bienvenida, osea al final (linea 70) de lo contrario muestra el msj del if(@sizeof($arreglo_vacio)>o) etc. en linea 24.

*luego muestra la lista de informacion faltante y hace un ciclo por $arreglo_vacio mostrando los faltantes. linea 28

*vuelve a desplegar el form recuperando todo lo del $_POST. linea 34 a 38

a grandes rasgo esa es la explicacion de como se supone que debería de funcionar el programa, como dije anteriormente, estoy empezando con php y en teoria se para que sirven las etiquetas y todavía me cuesta llevarlas a la práctica.

Código c:
Ver original
  1. <?php
  2.   /* set up array with all the fields */
  3.   $arreglo_etiqueta = array ("primernombre"=>"primernombre:",
  4.                    "segundonombre"=>"segundonombre:",
  5.                    "apellido"=>"apellido:",
  6.                    "calle"=>"calle:",
  7.                    "cp"=>"cp:");
  8.                    
  9.   /* check each field except middle name for
  10.      blank fields */
  11.   foreach ($_POST as $field => $value)
  12.   {
  13.     if($field != "segundonombre")
  14.     {
  15.       if( $value == "" )
  16.       {
  17.          $arreglo_vacio[$field] = "vacio";
  18.       }  
  19.     }
  20.   }  // end of foreach loop for $_POST
  21.  
  22.  
  23.   /* if any fields were blank, display error message and
  24.      redisplay form */
  25. if(@sizeof($arreglo_vacio) > 0) //blank fields are found
  26. {
  27.     echo "<b>no lleno uno o más campos obligatorios. Debe digitar:</b><br>";
  28.         /* display list of missing information */
  29.         foreach($arreglo_vacio as $field => $value)
  30.         {
  31.             echo "&nbsp;&nbsp;&nbsp;{$arreglo_etiqueta[$field]}<br>";
  32.         }
  33.        
  34.     /*volver a mostrar el formulario*/
  35.     $primernombre=trim (strip_tags($_POST['primernombre']));   
  36.     $segundonombre=trim (strip_tags($_POST['segundonombre']));
  37.     $apellido=trim (strip_tags($_POST['apellido']));
  38.     $calle=trim (strip_tags($_POST['calle']));
  39.     $cp=trim (strip_tags($_POST['cp']));
  40.    
  41.    
  42.  
  43. echo "<p><hr>  
  44.     <form action='$_SERVER[PHP_SELF]' method='POST'>\n;
  45.     <center>
  46.     <table width='95%' border='0' cellspacing='0' cellpadding='2'>
  47.         <tr>    <td align='right'><b>{$arreglo_etiqueta['$primernombre']}:
  48.             </br></td>
  49. <td><input type='text' name='primernombre' size='65' maxlength='65' value=['$primernombre']></td>
  50.         </tr>
  51.                          
  52.        
  53.         <tr>    <td align='right'><b>{$arreglo_etiqueta['calle']}:
  54.             </br></td>
  55.             <td><input type='text' name='calle' size='65' maxlength='65' value=['calle']></td>
  56.         </tr>
  57.        
  58.         <tr>    <td align='right'><b>{$arreglo_etiqueta['cp']}:
  59.             </br></td>
  60.             <td><input type='text' name='cp' size='65' maxlength='65' value=['cp']></td>
  61.         </tr>
  62.  
  63.     </table>
  64.         <p><input type='submit' value='enviar nombre y direccion'>
  65.    
  66.     </form></center>";
  67.        
  68. exit();
  69. }
  70.  
  71. echo"BIENVENIDO";
  72. ?>

por cierto la pagina web desplegada es totalmente en blanco.
no sé si esta mal colocado el $_SERVER[PHP_SELF] (ya lo intente haciendo referencia al chequeoDatos.php, osea el mismo archivo).
en cuanto a los ciclos no se si me falta un else, pero asi está el código original.

gracias y espero respuestas y agradeceria muchísimo su ayuda .

Nemutagk, podrias ser más explícito o escribir el código como debe de ir porque estoy muy confundida. y te comento que el libro dice que las variables ya estan en el arreglo $_post. gracias de antemano.

Última edición por interweb2012; 03/02/2012 a las 15:11 Razón: pege mal una linea

Etiquetas: formulario, html, procesar, usuarios
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 14:42.