Foros del Web » Programando para Internet » PHP »

validar campos de un formulario

Estas en el tema de validar campos de un formulario en el foro de PHP en Foros del Web. Como le hago para validar los campos de un formulario, es decir lo que quiero es impedirle al usuario que deje campos vacions, para eso ...
  #1 (permalink)  
Antiguo 18/08/2004, 09:29
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.411
Antigüedad: 16 años, 6 meses
Puntos: 20
validar campos de un formulario

Como le hago para validar los campos de un formulario, es decir lo que quiero es impedirle al usuario que deje campos vacions, para eso estoy haciendo un if, pero hay algo que no me cuadra, aqui lo dejo para que lo miren:

if($id or $nombre or $apellido or $tel_casa or $mail or $fecha or $username or $pss or $pss2=0){
echo "Alguno de los Campos Marcados como importantes esta vacio";}
else if($pss==$pss2){

mysql_db_query("consultex","insert into usuario(codigo_cedula,nombre,apellido,telefono_cas a,ciudad_residencia,telefono_of,operador_cel,celul ar,email,nacimiento,username,password) values ('$id','$nombre','$apellido','$tel_casa','$residen cia','$tel_oficina','$oper','$celular','$mail','$f echa','$username','$pss')");
mysql_db_query("consultex","insert into academico(universidad,ciudad_universidad,programa, semestre,codigo) values ('$universidad','$ciudad','$programa','$semestre', '$id')");
} else {
echo "Su contraseña no concuerda, por favor regrese y revisela";
}
?>

y digo que no me cuadra por que no me valida ningun campo y ahora ni siquiera me permite ingresar los datos a la BD
__________________
Say no more.......
  #2 (permalink)  
Antiguo 18/08/2004, 10:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
el_cesar ..

Te recomiendo que leas este capítulo del manual oficial de PHP sobre operadores lógicos.

http://www.php.net/manual/en/language.operators.php

Y de ahí .. que veas la función: empty() (e isset() )
www.php.net/empty

Por lo demás .. DEBERIAS! usar si o si los arrays superglobales para acceder a tus variables que envias desde tu formulario (o links ..) en tu script PHP de proceso.

SI lo haces así (usando $_POST . .o $_GET .. o lo que corresponda) ganas en seguridad de tus scripts y sobre todo en compatibilidad (desde PHP 4.1.0 en adelante) no te afectará para nada la configuración al respecto de PHP (register_globals ...). Si recien estás aprendiendo PHP . hazlo bien .. no tomes málas constumbres.

Un saludo,
  #3 (permalink)  
Antiguo 18/08/2004, 10:30
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.411
Antigüedad: 16 años, 6 meses
Puntos: 20
o sea que en lugar de recoger las variables y definirlas en unas nuevas para el script, seria mejor trabajarlas directamente con $_POST o lo que aplique?
__________________
Say no more.......
  #4 (permalink)  
Antiguo 18/08/2004, 10:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues si .. $_POST es un array .. así que los indices de ese array son tus variables que viajan por el método que indicastes en tu formulario (GET o POST) y si fuese un URL (link) sería por GET fijo:

Código PHP:
if (emtpy($_POST['nombre_variable_formulario_o_url'])){
echo 
$_POST['nombre_variable_formulario_o_url'].".. está vacia, no se definió o valor 0";

Y si tienes que validar más variables .. usa || (OR) para definir más bloques de empty() .. Pero te vendría mejor usar un array adicional y bucles para no tener que crear infinidad de "... || .... ||....|| ..."

Un saludo,
  #5 (permalink)  
Antiguo 18/08/2004, 10:52
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.411
Antigüedad: 16 años, 6 meses
Puntos: 20
bien, ahora lo estoy trabajando de esta manera :

if(empty($id or $nombre or $apellido or $tel_casa or $mail or $fecha or $username or $pss or $pss2)){
echo "Alguno de los Campos Marcados como importantes esta vacio";}
else if($pss==$pss2){

mysql_db_query("consultex","insert into usuario(codigo_cedula,nombre,apellido,telefono_cas a,ciudad_residencia,telefono_of,operador_cel,celul ar,email,nacimiento,username,password) values ('$id','$nombre','$apellido','$tel_casa','$residen cia','$tel_oficina','$oper','$celular','$mail','$f echa','$username','$pss')");
mysql_db_query("consultex","insert into academico(universidad,ciudad_universidad,programa, semestre,codigo) values ('$universidad','$ciudad','$programa','$semestre', '$id')");
} else {
echo "Su contraseña no concuerda, por favor regrese y revisela";
}

pero me da este error

Parse error: parse error, unexpected ',', expecting ')' in c:\archivos de programa\easyphp1-7\www\portal\registro\autenticar.php on line 33

aclaro que estoy trabajando con las variables de manera $var, ya que al comienzo del script las recojo mediante el metodo $_REQUEST
__________________
Say no more.......
  #6 (permalink)  
Antiguo 18/08/2004, 11:05
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.411
Antigüedad: 16 años, 6 meses
Puntos: 20
ya encontre mi problema, se presenta cuando agrupo todas las variables, es decir si tomo if(empty( $nombre or $apellido or $tel_casa or $mail or $fecha or $username or $pss or $pss2)) {

no funciona, mientras que si tomo if(empty($id)) si funciona, la pregunta es entonces, como le hago para validar todos esos campos, si ademas le pongo if(empty($id) empty($nombre)){
y nada
__________________
Say no more.......
  #7 (permalink)  
Antiguo 18/08/2004, 11:22
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.411
Antigüedad: 16 años, 6 meses
Puntos: 20
bien ya solucione todo, ahora lo defini asi:

if((empty($id)) or (empty($nombre)) or (empty($apellido)) or (empty($tel_casa)) or (empty($mail)) or (empty($fecha)) or (empty($username)) or (empty($pss)) or (empty($pss2))){

y funciona de lujo
__________________
Say no more.......
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 16:30.