Ver Mensaje Individual
  #8 (permalink)  
Antiguo 24/06/2011, 08:56
Avatar de kahlito
kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Recorrer campos de un formulario para no repetir un aviso de Incompleto co

Cita:
Iniciado por truman_truman Ver Mensaje
Hola se me ocurre algo asi:

Código PHP:
Ver original
  1. <?php
  2. function campoVacio($valor_del_imput)
  3. {
  4.     if($valor_del_imput=="")
  5.     {
  6.     echo 'class="aviso-formulario"';
  7.     }
  8.    
  9. }
  10.  
  11. ?>
  12.  
  13.  
  14.  
  15.  
  16. <label for="nombre">Nombre:</label>
  17. <input type="text" id="nombre" name="nombre" value="<?php if(isset($_POST['nombre']) && $_POST['nombre'] == "")
  18. {echo "Incompleto";} else {echo $_POST['nombre'];} ?>"
  19.  <?php campoVacio($_POST['nombre']);?>
  20.  /><br />



Pero igualmente lo tenés que hacer uno por uno






.
Hola truman_truman, me ha servido de mucho tu explicación, es más incluso he metido la opción value dentro de la misma función y así me ahorro todavía más código

Código PHP:
Ver original
  1. <?php
  2. function incompleto($valor_input)
  3. {
  4. if(isset($valor_input) && $valor_input == "" || $valor_input == "Incompleto")
  5. {echo "value=\"Incompleto\"";
  6. echo ' class="aviso-formulario"';}
  7. else {echo "value=\"$valor_input\"";}
  8. }
  9. ?>
  10. <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
  11. <legend>Tomador</legend>
  12.     <fieldset>
  13.         <legend>Datos personales</legend>
  14.         <!-- TEXT -->
  15.         <label for="nombre">Nombre:</label>
  16.         <input type="text" id="nombre" name="nombre" <?php incompleto($_POST['nombre']);?> /><br />
  17.         <label for="apellidos">Apellidos:</label>
  18.         <input type="text" id="apellidos" name="apellidos" <?php incompleto($_POST['apellidos']);?> /><br />
  19. <label for="direccion">Dirección:</label>
  20.         <input type="text" id="direccion" name="direccion" <?php incompleto($_POST['direccion']);?> /><br />
  21. <label for="dni">D.N.I.</label>
  22.         <input type="text" id="dni" name="dni" <?php incompleto($_POST['dni']);?> /><br />

Cita:
Iniciado por abimaelrc Ver Mensaje
Primero para verificar si un campo está vacio con tan solo empty() es suficiente. Lo otro, esa es una de las partes más tediosas para trabajar. Debes hacer validaciones de cada campo que consideres requisito y que no puede estar vacio y también mostrar el aviso correspondiente. Si tienes 10 campos que son requisitos y no pueden estar vacios, debes hacer 10 validaciones y 10 avisos. Podrías preparar un funcion que todo aquello que se repita lo use, pero sabes que debes colocar esa función en los 10 lugares.
Gracias de nuevo por la explicación abimaelrc, más o menos es lo que imaginaba, solo que en vez de empty() he seguido usando isset.

Cita:
Iniciado por Triby Ver Mensaje
Por lo general, cuando creo formularios, incluyo un texto en cada campo que indica al usuario como llenarlo y, al hacer las validaciones, puedes usar una matriz asociativa para marcar los que no se llenaron correctamente, de forma que puedas utilizar una sola funcion para mostrar la ayuda y errores:

Código PHP:
Ver original
  1. $errores = array();
  2. // Validar nombre:
  3. $nombre = trim($_POST['nombre']);
  4. if(strlen($nombre) < 3 || strlen($nombre) > 20) {
  5.       $errores['nombre'] = 'El nombre debe contener entre 3 y 20 caracteres, ahora tiene: ' . strlen($nombre);
  6. }
  7.  
  8. // Despues, en el formulario:
  9. echo "<label for=\"nombre\">Nombre:</label>\n";
  10. echo "<input type=\"text\" name=\"nombre\" id=\"nombre\" value=\"$nombre\" size=\"20\" maxlength=\"20\" />\n";
  11. ayuda_error('nombre', 'Por favor teclea tu nombre.');
  12.  
  13. // Y la funcion para mostrar ayuda o errores:
  14. function ayuda_error($campo, $ayuda) {
  15.     global $errores;
  16.     if(isset($errores[$campo])) {
  17.         // Aqui muestras el mensaje de error, con estilo CSS si es necesario
  18.     } else {
  19.         // Aqui muestras la ayuda
  20.     }
  21. }

Realmente no es tan complicado, incluso tengo funciones para crear campos de formulario (input text, select, checkbox, radio, textarea y botones) y estoy trabajando en una clase, aunque no se si realmente llegue a usarla, depende de como me adapte en el proyecto que estoy trabajando.
Gracias Triby, por ahora he intentado algo parecido, quizás más adelante cuando tenga más conocimientos lo intente también con una clase

Cita:
Iniciado por iviamontes Ver Mensaje
pero para eso no es usa js ???
de todas formas es bueno revisar de nuevo las variables en el php, pero sin mensajes ni nada, solo x un tema de seguridad
Hola iviamontes, te paso un enlace de caricatos que habla de algo parecido de un tema reciente del foro web general:

http://www.pepemolina.com/index.php?...1%2C+%A1Web%21...
http://www.forosdelweb.com/f91/que-m...de-php-922550/

Gracias a todos por la ayuda