Foros del Web » Programando para Internet » PHP »

Ayuda con formulario de registro

Estas en el tema de Ayuda con formulario de registro en el foro de PHP en Foros del Web. Hola! inauguro mi primer mensaje con una buena duda que tengo. Yo hice un formulario (registrar_form.php) que tiene alrededor de 33 campos para completar..., este ...
  #1 (permalink)  
Antiguo 07/11/2005, 23:12
 
Fecha de Ingreso: noviembre-2005
Ubicación: Córdoba - Argentina
Mensajes: 155
Antigüedad: 18 años, 5 meses
Puntos: 1
Ayuda con formulario de registro

Hola! inauguro mi primer mensaje con una buena duda que tengo.
Yo hice un formulario (registrar_form.php) que tiene alrededor de 33 campos para completar..., este form tiene como accion al archivo (registrar_accion.php), en este archivo lo que hago es tomar en variables la informacion que se puso en cada campo... por ejemplo, hay un campo que se llama nombre... lo que hice fue poner $nombre= $_POST[nombre] lo hice para que al momento de escribir las inserciones en la BD no se haga tan largo el codigo :D.... pero aca va llegando mi problema.... hice varios if antes antes de que se manden los datos a la BD que son los condicionantes de que si nombre tiene menos de 4 letras no sirve, o que la clave y repetir clave no son iguales etc. Y en cada una de estas condiciones, si se llega a dar alguna hice que se cree una variable con un mensaje de error. Mi idea era, de alguna forma hacer que cuando no se cumplan las condiciones aparezca nuevamente la tabla del formulario con los mensajes de error, y tambien que en los campos haya quedado lo que se escribio anteriormente. Les muestro la parte del codigo de la accion asi se guian un poco de que hablo

Código PHP:
// ::Condiciones que se tiene que dar para que se cumpla el registro::
//Si estos campos estan vacios, tira el mensaje de que son obligatorios
if ($usuario=="" || $clave=="" || $nombres=="" || $apellido=="" || $email==""){
    
$msj"Los campos Usuario, Clave, Nombres, Apellido y Email son obligatorios, por favor, complételos.";

}

// Usuario debe contener al menos 5 caracteres
if (strlen($usuario) < 5){
    
$msj1"Deben ser más de 4 letras";

}

// Me fijo si el usuario ya esta registrado en la base de datos.
$sql_usuario_existe mysql_query("SELECT * FROM usuarios WHERE usuario='$usuario'");
$usuario_existe mysql_num_rows($sql_usuario_existe);
if (
$usuario_existe 0){
    
$msj2"El usuario ya existe";

}

// La clave tiene que ser igual a la repeticion de clave.
if ($clave != $clave1){
    
$msj3"Las claves no concuerdan";

}

// Me fijo si el mail ya esta registrado en la base de datos.
$sql_email_existe mysql_query("SELECT * FROM usuarios WHERE email='$email'");
$email_existe mysql_num_rows($sql_email_existe);
if (
$email_existe 0){
    
$msj4"El email ya existe";


Lo que yo pensaba en un principio era poner debajo de los mensajes de error $msjn°... poner header (Location: registrar_form_error.php); que me llevaria a una copia del formulario que les comente al principio pero que incluye las variables para mostrar los mensaes de error.
Haciendo esto con header, me abria el formulario pero todo vacio.... hacerlo con el metodo GET es imposible por la cantidad de informacion.... y poniendole POST tampoco me funciono...... que solucion me darian, para que cuando los usuarios no cumplan uno de los campos les aparesca el formulario con los carteles de error pero conservando los datos ingresados??

Desde ya muchisimas gracias!

PD: cualquier cosa si no se entiene, explico de nuevo!
  #2 (permalink)  
Antiguo 07/11/2005, 23:18
 
Fecha de Ingreso: marzo-2002
Ubicación: Salta Capital - Actualmente estudiando en Córdoba
Mensajes: 430
Antigüedad: 22 años, 1 mes
Puntos: 0
Coloca en búsqueda, para que no se te pierdan los datos del formulario los podes almacenar en una session, y para que te salgan los mensajes de error podes usar lo mismo, o crear un array con los errores y los llamas cuando algo esta mal, ahora estoy sin tiempo por eso no te pongo el codigo, pero busca validacion de formularios y vas a encontrar muchos post's interesantes-.
__________________
Nada es imposible, con un poco de esfuerzo se logran las cosas.-
  #3 (permalink)  
Antiguo 08/11/2005, 11:49
 
Fecha de Ingreso: noviembre-2005
Ubicación: Córdoba - Argentina
Mensajes: 155
Antigüedad: 18 años, 5 meses
Puntos: 1
si, yo estaba pensando lo mismo... colocar las variables en un una sesion, o en una cookie y destruirla cuando se haya completado el proceso. voy a ver que me sale.
gracias por tu respuesta!
  #4 (permalink)  
Antiguo 09/11/2005, 11:21
 
Fecha de Ingreso: noviembre-2005
Ubicación: Córdoba - Argentina
Mensajes: 155
Antigüedad: 18 años, 5 meses
Puntos: 1
Bueno, probar con sesiones no me salio.... si bien me mantenia las datos de cada campo, por ejemplo si yo cerraba la pagina y la volvia a abrir seguian ahi los campos rellenados con informacion anterior, tambien se mantenian si yo volvia a rellenar el formulario y tiraba un error.... (la session_destroy() la puse cuando no se genere ningun error). Lo que me dijeron en otros lados tambien es poner el codigo de la accion y el del form en el mismo archivo, pero cuando lo probe tampoco andaba... les dejo el codigo de la accion y del form a ver si me pueden dar una mano con esto!
Aclaracion: En el codigo del form, puse un solo mensaje de error y y una sola llamada a la variable que se habia rellenado antes en el campo correspondiente para volverlo a ponerlo ahi en ese campo)

accion:
Código PHP:
<?

include ("conectar.php");
include (
"config.php");


//Tomo los datos del formulario en variables para que no se me haga mas
//largo el codigo de insercion en la BD :D

$usuario$_POST[usuario];
$clavemd5($_POST[clave]); $clave1md5($_POST[clave1]);
$nombres$_POST[nombres];
$apellido$_POST[apellido];
$tipo_doc$_POST[tipo_doc];
$doc$_POST[doc];
$nacimiento$_POST[dia]."/".$_POST[mes]."/"$_POST[anio];
$nacionalidad$_POST[nacionalidad];
$domicilio$_POST[domicilio];
$barrio$_POST[barrio];
$ciudad$_POST[ciudad];
$pais$_POST[pais];
$cp$_POST[cp];
$telefono$_POST[telefono];
$telefono_lab$_POST[telefono_lab];
$celular$_POST[celular];
$email$_POST[email];
$email_alt$_POST[email_alt];
$web$_POST[web];
$profesion$_POST[profesion];
$estado_civil$_POST[estado_civil];
$emp_nombre$_POST[emp_nombre];
$emp_domicilio$_POST[emp_domicilio];
$emp_barrio$_POST[emp_barrio];
$emp_ciudad$_POST[emp_ciudad];
$emp_cp$_POST[emp_cp];
$emp_pais$_POST[emp_pais];
$emp_telefono$_POST[emp_telefono];
$emp_email$_POST[emp_email];
$emp_email_alt$_POST[emp_email_alt];
$emp_web$_POST[emp_web];
$emp_cargo$_POST[emp_cargo];

// ::Condiciones que se tiene que dar para que se cumpla el registro::
//Si estos campos estan vacios, tira el mensaje de que son obligatorios

if ($usuario=="" || $clave=="" || $nombres=="" || $apellido=="" || $email==""){
    
$msj"Los campos Usuario, Clave, Nombres, Apellido y Email son obligatorios, por favor, complételos.";
header ("Location: registrar_form_error.php?session=si");

}

// Usuario debe contener al menos 5 caracteres
if (strlen($usuario) < 5){
    
$msj1"Deben ser más de 4 letras";
header ("Location: registrar_form_error.php?session=si");
}

// Me fijo si el usuario ya esta registrado en la base de datos.
$sql_usuario_existe mysql_query("SELECT * FROM usuarios WHERE usuario='$usuario'");
$usuario_existe mysql_num_rows($sql_usuario_existe);
if (
$usuario_existe 0){
    
$msj2"El usuario ya existe";
header ("Location: registrar_form_error.php?session=si");
}

// La clave tiene que ser igual a la repeticion de clave.
if ($clave != $clave1){
    
$msj3"Las claves no concuerdan";
header ("Location: registrar_form_error.php?session=si");
}

// Me fijo si el mail ya esta registrado en la base de datos.
$sql_email_existe mysql_query("SELECT * FROM usuarios WHERE email='$email'");
$email_existe mysql_num_rows($sql_email_existe);
if (
$email_existe 0){
    
$msj4"El email ya existe";
header ("Location: registrar_form_error.php?session=si");
}

//Si se cumple todo lo anterior, registramos los datos en la base de datos
else{

if( 
mysql_query ("INSERT $tabla_usuarios (usuario,clave,nombres,apellido,tipo_doc,doc,nacimiento,nacionalidad,
domicilio,barrio,ciudad,pais,cp,telefono,telefono_lab,celular,email,email_alt,web,profesion,
estado_civil,emp_nombre,emp_domicilio,emp_barrio,emp_ciudad,emp_cp,emp_pais,emp_telefono,
emp_email,emp_email_alt,emp_web,emp_cargo,nivel)
VALUES ('$usuario','$clave','$nombres','$apellido','$tipo_doc','$doc','$nacimiento','$nacionalidad',
'$domicilio','$barrio','$ciudad','$pais','$cp','$telefono','$telefono_lab','$celular','$email','$email_alt','$web','$profesion',
'$estado_civil','$emp_nombre','$emp_domicilio','$emp_barrio','$emp_ciudad','$emp_cp','$emp_pais','$emp_telefono',
'$emp_email','$emp_email_alt','$emp_web','$emp_cargo',1)"
,$conexion)) {

    echo 
"Datos insertados correctamente!";
}else{
    echo 
"No se pudo agregar esta información";
}
}



mysql_close ($conexion);

?>
  #5 (permalink)  
Antiguo 09/11/2005, 11:22
 
Fecha de Ingreso: noviembre-2005
Ubicación: Córdoba - Argentina
Mensajes: 155
Antigüedad: 18 años, 5 meses
Puntos: 1
formulario:
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="manager.css" rel="stylesheet" type="text/css">

<? include ("config.php"); ?>
</head>
<body>
<div align="center" class="texto-error"><strong><? echo $msj?></strong></div>
<form name="form1" method="post" action="registrar_form.php">
  <table width="400" border="0" align="center" cellpadding="0" cellspacing="2">
    <tr bgcolor="#EEEEEE">
      <td colspan="2" bgcolor="#FF9900"><div align="center" class="titulo-tabla"><strong>Datos de<br>
        Usuario
      </strong></div></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td width="214"><div align="right" class="texto">Usuario</div></td>
      <td><input name="usuario" type="text" id="usuario"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Clave</div></td>
      <td><input name="clave" type="password" id="clave"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Repetir Clave </div></td>
      <td><input name="clave1" type="password" id="clave1"></td>
    </tr>
    <tr bgcolor="#FF9900">
      <td colspan="2"><div align="center"><span class="titulo-tabla"><strong>Datos<br>
  Personales</strong></span></div></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Nombres</div></td>
      <td width="180"><input name="nombres" type="text" id="nombres" value="<?$_POST[nombres];?>"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Apellido</div></td>
      <td><input name="apellido" type="text" id="apellido"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Tipo de Documento </div></td>
      <td><span class="texto">
        <select name="tipo_doc" id="tipo_doc">
          <option value="DNI">DNI</option>
          <option value="LE">LE</option>
          <option value="LC">LC</option>
          <option value="CI">CI</option>
          <option value="PASAPORTE">PASAPORTE</option>
        </select>
      </span></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">N&deg; Documento</div></td>
      <td><input name="doc" type="text" id="doc"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Fecha de Nacimiento </div></td>
      <td><span class="texto">
        <select name="dia" id="dia">
          <?
for ($i=1;$i<32;$i++ ){
   echo 
"<option>$i</option>";
}
?>
        </select>
        /
        <select name="mes" id="mes">
          <?
for ($i=1;$i<13;$i++ ){
   echo 
"<option>$i</option>";
}
?>
        </select>
        /
        <select name="anio" id="anio">
          <?
for ($i=1901;$i<2001;$i++ ){
   echo 
"<option>$i</option>";
}
?>
        </select>
      </span></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Nacionalidad</div></td>
      <td><input name="nacionalidad" type="text" id="nacionalidad"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Domicilio</div></td>
      <td><input name="domicilio" type="text" id="domicilio"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Barrio</div></td>
      <td><input name="barrio" type="text" id="barrio"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Ciudad</div></td>
      <td><input name="ciudad" type="text" id="ciudad"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Pa&iacute;s</div></td>
      <td><input name="pais" type="text" id="pais"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">C&oacute;digo Postal </div></td>
      <td><input name="cp" type="text" id="cp"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Tel&eacute;fono</div></td>
      <td><input name="telefono" type="text" id="telefono"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Tel&eacute;fono Laboral </div></td>
      <td><input name="telefono_lab" type="text" id="telefono_lab"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Celular</div></td>
      <td><input name="celular" type="text" id="celular"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Email</div></td>
      <td><input name="email" type="text" id="email"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Email Alternativo </div></td>
      <td><input name="email_alt" type="text" id="email_alt"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Sitio Web </div></td>
      <td><input name="web" type="text" id="web"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Profesi&oacute;n</div></td>
      <td><input name="profesion" type="text" id="profesion"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Estado Civil </div></td>
      <td><input name="estado_civil" type="text" id="estado_civil"></td>
    </tr>
    <tr bgcolor="#FF9900">
      <td colspan="2"><div align="center" class="titulo-tabla"><strong>Datos de su Empresa , profesi&oacute;n<br>
      o actividad independiente</strong></div></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Nombre</div></td>
      <td><input name="emp_nombre" type="text" id="emp_nombre"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Domicilio</div></td>
      <td><input name="emp_domicilio" type="text" id="emp_domicilio"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Barrio</div></td>
      <td><input name="emp_barrio" type="text" id="emp_barrio"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Ciudad</div></td>
      <td><input name="emp_ciudad" type="text" id="emp_ciudad"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">C&oacute;digo Postal </div></td>
      <td><input name="emp_cp" type="text" id="emp_cp"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Pa&iacute;s</div></td>
      <td><input name="emp_pais" type="text" id="emp_pais"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Tel&eacute;fono</div></td>
      <td><input name="emp_telefono" type="text" id="emp_telefono"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Email</div></td>
      <td><input name="emp_email" type="text" id="emp_email"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Email Alternativo </div></td>
      <td><input name="emp_email_alt" type="text" id="emp_email_alt"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Sitio Web </div></td>
      <td><input name="emp_web" type="text" id="emp_web"></td>
    </tr>
    <tr bgcolor="#EEEEEE">
      <td><div align="right" class="texto">Cargo en la empresa </div></td>
      <td><input name="emp_cargo" type="text" id="emp_cargo"></td>
    </tr>
    <tr bgcolor="#DDDDDD">
      <td colspan="2"><div align="right" class="texto">
        <div align="center">
          <input type="submit" name="Submit" value="Registrar">
        </div>
      </div></td>
    </tr>
  </table>
</form>
</body>
</html>


Desde ya, muchas gracias!
  #6 (permalink)  
Antiguo 10/11/2005, 11:15
 
Fecha de Ingreso: noviembre-2005
Ubicación: Córdoba - Argentina
Mensajes: 155
Antigüedad: 18 años, 5 meses
Puntos: 1
mmmm, alguen me podria dar alguna solucion? ya estoy hace varios dias con esto y no se me ocurre ya como solucionarlo!
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 19:17.