Foros del Web » Programando para Internet » PHP »

Validación que no funciona

Estas en el tema de Validación que no funciona en el foro de PHP en Foros del Web. Hola tengo un archivo php y uno html, cargando el php muestra el formulario html, los usuarios rellenan el formulario y se realiza la búsqueda ...
  #1 (permalink)  
Antiguo 12/06/2003, 11:46
Avatar de Henker  
Fecha de Ingreso: febrero-2003
Mensajes: 37
Antigüedad: 21 años, 2 meses
Puntos: 0
Pregunta Validación que no funciona

Hola tengo un archivo php y uno html, cargando el php muestra el formulario html, los usuarios rellenan el formulario y se realiza la búsqueda en la base de datos mostrando los resultados sin problemas. Lo que no se es como implementar el que si algún usuario se deja uno de los campos del formulario en blanco le salga un mensaje diciendole que obligatoriamente ha de escribir algo en ellos. Os pego lo que llevo hecho hasta ahora:

Código PHP:

<? 

$mensaje 
"";

if(
$_SERVER["REQUEST_METHOD"] == "POST")
{

$nombre trim($_POST["nombre"]);
$pulgadas trim($_POST["pulgadas"]);
$garantia trim($_POST["garantia"]);

if(empty(
$_POST["nombre"]))
    
$mensaje "Ha de escribir un  nombre de fabricante de monitores TFT";
if(empty(
$_POST["pulgadas"]))
    
$mensaje "Ha de escribir la casilla correspondiente a la garantía";
if(empty(
$_POST["garantia"]))
    
$mensaje "Ha de escribir la casilla correspondiente a la garantía";    

$hay_errores FALSE;

if(!
$hay_errores
{
$nombre trim($_POST["nombre"]);
$pulgadas trim($_POST["pulgadas"]);
$garantia trim($_POST["garantia"]);

$mysql mysql_connect("localhost""mike""aa34KhtYmpZdg")
   or die(
"Lo sentimos, en estos momentos no es posible 
   conectar con la Base de Datos"
);
 
mysql_select_db("monitores_tft"$mysql)
   or die(
"No se puede seleccionar la base de datos monitores_tft");
$query "SELECT A.nombre_fabricante, bla bla (el resto de la consulta que funciona correctamente)";

$resultados mysql_query($query$mysql)
or die(
"Consulta fallida: ".$query." ".mysql_error());
?>
<h3>Resultado Consulta 5 AEC1:</h3>
<table border="1" cellspacing="0" cellpadding="7">
  <tr bgcolor="#CCCCCC"> 
    <td>ID</td>
    <td>Fabricante</td>    
    <td>Modelo</td>
    <td>Referencia</td>
    <td>Pulgadas</td>
    <td>Frec. vertical</td>
    <td>Garantía</td>
    <td>Resol. Máx.</td>
  </tr>
<? while($fila mysql_fetch_object($resultados)) :?>
  <tr> 
    <td><a href="ficha.php?ID=<?=$fila->id?>">ID</a></td>
    <td><?=$fila->nombre_fabricante?></td>
    <td><?=$fila->modelo?></td>
    <td><?=$fila->ref_fabricante?></td>
    <td><?=$fila->pulgadas_pantalla?></td>
    <td><?=$fila->frecuencia_vertical?></td>
    <td><?=$fila->garantia?></td>
    <td><?=$fila->resolucion_maxima?></td>
  </tr>
<? endwhile; ?>
</table>
</body>
</html>
<?php    
mysql_close
($mysql);
?>
<?

exit;
}
else
   
$mensaje "Hay algunos errores. Por favor rellene "
."de nuevo los campos del formulario";
  }

include(
"formulario.html");

?>

<html>
<head>
</head>
<body>
  #2 (permalink)  
Antiguo 12/06/2003, 12:02
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Te esta faltando indicarle al script cuando determinar que $hay_errores es TRUE... te recomiendo esto:

Código PHP:
<? 

$mensaje 
"";

if(
$_SERVER["REQUEST_METHOD"] == "POST")
{

$nombre trim($_POST["nombre"]);
$pulgadas trim($_POST["pulgadas"]);
$garantia trim($_POST["garantia"]);
$hay_errores TRUE;
if (empty(
$_POST["nombre"]) || empty($_POST["pulgadas"]) || empty($_POST["garantia"])){
    if(empty(
$_POST["nombre"]))
        
$mensaje "Ha de escribir un  nombre de fabricante de monitores TFT";
    if(empty(
$_POST["pulgadas"]))
        
$mensaje "Ha de escribir la casilla correspondiente a la garantía";
    if(empty(
$_POST["garantia"]))
        
$mensaje "Ha de escribir la casilla correspondiente a la garantía";    
} else {
    
$hay_errores FALSE;
}

if(!
$hay_errores
{
// Aqui continuas tu script...
__________________
Manoloweb
  #3 (permalink)  
Antiguo 12/06/2003, 14:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Completando la idea de Manoloweb .. yo usaría un array para los mensajes de error:

$mensaje[]

y si hay errores .. recorro el array $mensaje con un bucle foreach() por ejemplo para presentar todos los errores que existan y no sólo el "último" que se produzca pues .. $mesnaje se va "reescribiendo" con el mensaje de error siguiente en caso de existir más de un error ...

Esto te ahorrará varias "idas y venidas" de tu pagína al servidor y al cliente para ir diciedole: "te falta el campo tal" .. luego lo rectifica y "te falta el otro campo tal" .. lo rectifica y "te falta el campo tal " .. etc ..

Con un array de "mensajes" en la primera iteracción con el servidor le dices: "te falta este campo, el otro y el de más allá" (si llega el caso ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 12/06/2003, 16:24
Avatar de Henker  
Fecha de Ingreso: febrero-2003
Mensajes: 37
Antigüedad: 21 años, 2 meses
Puntos: 0
Gracias Manoloweb y Cluster por la ayuda voy a ponerme manos a la obra y aplicar todo lo que me comentais
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 10:12.