Ver Mensaje Individual
  #3 (permalink)  
Antiguo 16/12/2005, 06:30
Avatar de franquero
franquero
 
Fecha de Ingreso: julio-2005
Mensajes: 179
Antigüedad: 18 años, 9 meses
Puntos: 1
De acuerdo

Buenas.

La idea es hacer un formulario con action $_SERVER['PHP_SELF'], utilizando funciones y el array $_POST

mostrar_formulario();
validar();
procesar();

Con un campo "hidden" en mostrar_formulario() detectamos si se ha enviado o no.
Código PHP:
//Si se ha enviado el formulario lo validamos
if (array_key_exists('check'$_POST)) {
    
validar();
} else {
   
//Si no, lo mostramos
   
mostrar_formulario();

En caso de que se haya enviado llamamos a la función validar. En esta función creamos un array $errores, y por cada infracción añadimos un elemento al array:
Código PHP:
function validar() {
    
//Creamos el array
   
$errores = array();
        
//añadimos elementos por cada fallo
        
if (strlen(trim($_POST['nombre'])) < 2) {
             
$errores[] = 'Debe introducir un nombre válido';
        }
        if (
lo que sea) {
             
$errores[] = 'Descripción del error';
        }
    
//Devolvemos el array
    
return $errores;

En mostrar_formulario(), si el array $errores no está vacío lo imprimimos con foreach.

Finalmente, si el formulario ha sido enviado, y el array $errores está vacío, ejecutamos la función procesar(), en la que escribiremos lo que queramos que haga el formulario.

Respecto a mostrar los valores escritos por el usuario cuando el formulario se reimprime con los errores: creamos un array $default, al que pasamos los valores de $_POST
Código PHP:
$default $_POST;
//Si $_POST está vacío establecemos los valores por defecto que queramos
if (!$_POST) {
   
$default = array ("nombre" => "Escriba su nombre",
                          
"apellido" => "Escriba su apellido"); 
Y en la función mostrar_formulario, en cada campo establecemos $default como valor por defecto:
Código PHP:
print "Nombre <input type=\"text\" name=\"nombre\" value=\"$default[nombre]\">"
Espero que sirva. Si queréis puedo poner el código completo de un formulario. Saludos
__________________
Es una suerte que la sociedad libre sea más productiva, porque de no haberlo sido jamás se habría tolerado.