Problema con validaciones de formulario en PHP

Iniciado por oscarj24, 9 Junio 2010, 16:29 PM

0 Miembros y 1 Visitante están viendo este tema.

oscarj24

El formulario consiste en almacenar los datos en la DB. El problema es que las validaciones de PHP no funcionan y nose porque. El formulario es como esta imagen:

TODOS LOS CAMPOS SON REQUERIDOS:
http://img405.imageshack.us/i/form01d.jpg

PERO, SI EL USUARIO SELECCIONA EN INDEPENDIENTE, EN BOLETA Y UN TIPO DE TELF. LOS DATOS DEBEN SER REQUERIDOS.
http://img405.imageshack.us/i/form02.jpg

intente validarlo en php pero no me resulta (como lo dije en un post anterior), sin embargo en javascript ya esta hecho pero como se sabe, el usuario puede deshabilitar el javascript y es por eso que la validacion php se require.

Código (php) [Seleccionar]
<?php
if (isset(
$_POST['enviar'])){
$link mysql_connect('localhost''user''pwd');
mysql_select_db('dbname'$link);
$sql "SELECT MAX(ID) FROM inscripciones";
$result mysql_query($sql);
$row mysql_fetch_row($result);
$max_id $row[0]+1;
$nombres=trim($_POST['nombres']);
$apellidos=trim($_POST['apellidos']);
$DNI_CarneExtranjeria=trim($_POST['DNI_CarneExtranjeria']);
$tipo_persona=trim($_POST['tipo_persona']);
$empresa=trim($_POST['empresa']);
$cargo=trim($_POST['cargo']);
$direccion=trim($_POST['direccion']);
$telefono_fijo=trim($_POST['telefono_fijo']);
$telefono_celular=trim($_POST['telefono_celular']);
$tipo_combrobante=trim($_POST['tipo_comprobante']);
$razon_social=trim($_POST['razon_social']);
$RUC=trim($_POST['RUC']);
$_FILES['voucher']['name'] = $max_id."_".$_FILES['voucher']['name'];
$upload_dir '/home/netline/public_html/inscripciones/vouchers/';
$extension $_FILES['voucher']['type'];
$size $_FILES['voucher']['size'];
$upload_file $upload_dir.($_FILES['voucher']['name']);
$voucher_nombre_db $_FILES['voucher']['name'];
if(empty($nombres) && empty($apellidos) && empty($DNI_CarneExtranjeria) && ($tipo_persona == 'Dependiente' && (empty($empresa) || empty($cargo) || empty($direccion))) &&(empty($telefono_fijo) || empty($telefono_celular)) && ($tipo_comprobante == 'Factura' && (empty($razon_social) || empty($RUC))) && empty($voucher_nombre_db) && $extension != 'image/jpeg' && $size 204801){
echo '<html>
<head>
<title>Titulo web</title>
<META http-equiv="refresh" content="6; url=http://www.dominio.com/inscripciones/inscripcion.php">
</head>
<body>
<p>Debe completar todos los datos obligatorios y adjuntar una imagen con extension .JPG y de 200KB de tamaño maximo.</p>
</body>
</html>'
;
}else{
move_uploaded_file($_FILES['voucher']['tmp_name'], $upload_file);
mysql_query("INSERT INTO inscripciones(Nombres,Apellidos,DNI_CarneExtranjeria,Tipo_Persona,Empresa,Cargo,Direccion,Telefono_Fijo,Telefono_Celular,Tipo_Comprobante,Razon_Social,RUC,Nombre_Voucher) VALUES('$nombres','$apellidos','$DNI_CarneExtranjeria','$tipo_persona','$empresa','$cargo','$direccion','$telefono_fijo','$telefono_celular','$tipo_comprobante','$razon_social','$RUC','$voucher_nombre_db')",$link);
mysql_close($link);
echo '<html>
         <head>
         <title>Titulo web</title>
         <META http-equiv="refresh" content="6; url=http://www.dominio.com/inscripciones/inscripcion.php">
         </head>
         <body>
         <p>Registro exitoso.</p>
         </body>
         </html>'
;
}
}
?>


el if de mi archivo php lo explicare de la siguiente forma:

Si nombres esta vacio, apellidos esta vacio, tipo persona es dependiente (y empresa, cargo, direccion estan vacios) y (telefono fijo esta vacio o telefono celular esta vacio - ya que siempre debe haber un telf.) y tipo de comprobante igual a factura (y razon social y ruc estan vacios) y voucher esta vacio y es diferente a jpg y es mayor a 200kb ENTONCES se muestra mensaje de error.

De lo contrario subir el archivo y los datos. Espero me puedan ayudar con la validacion, gracias  ::)

Shell Root

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

bomba1990

bueno creo que en el post anterior ya te lo dijeron y como que no quieres pararles mucho. Primero tienes que comprobar que la variable que te estan mandando existe, sino te puede dar error.

Código (php) [Seleccionar]
isset($_POST[mi variable])

despues de que sepas que está, usas la funcion preg_macth y con ello averiguas si cumple lo que necesitas. ademas deberias dejas las funciones de javascript para que se vea mas bonito y mas agradable para el usuario normal qu eno va a desabilitar las javascript.

las imagenes no se ven...
"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve

oscarj24

gracias por interesarse, pero es que la variable si existe, el problema es que nose porque no se valida, no entiendo donde esta mi defecto en el codigo,gracias  :)

bomba1990

te explico, que creo que lo que pasa, es que cuando tu tienes tu formulario y se envia vacio, las variables no se crean en $_POST. no se mandan.
"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve

Pazador

#5
si te fijas bien lo que haces despues de comprobar que hayan pulsado el submit es conectarte a la db, hacer una query, extraer el resultado, declarar las variables sin antes haber comprobado que esten vacios, crear rutas para las img... y despues que php haga todo ese proceso, recien al final se te ocurre validar las variables de entrada... porque no lo haces al revez y le ahorras procesos a php (ademas es lo mas optimo)
luego de la condicion del submit deberias comprobar si las variables estan vacias o no y despues de ello recien tendrias que hacer todo el proceso que quieres hacer

Código (php) [Seleccionar]

if (isset($_POST['enviar'])){
    if(isset($_POST['nombres']) && strlen(trim($_POST['nombres']))== 0)
        echo 'Error escribe tu nombre';
    elseif(isset($_POST['apellidos']) && strlen(trim($_POST['apellidos']))== 0)
        echo 'Error escribe tu apellido';
   /*
   ..
   ....
   ......
   ..........
   ................
   */
   else{
       $link = mysql_connect('localhost', 'user', 'pwd');
mysql_select_db('dbname', $link);
       /*
       ..
       ....
       ......
       ..........
       ................
       */
   }
}


asi se veria mas bonito  :rolleyes:
La vida es un juego
Mario Bross