martes, 14 de agosto de 2012

validando cedula, y fecha de nacimiento.


Acá traigo un nuevo código, la idea de este formulario es validar la cédula de 7 digito, y la fecha de nacimiento que sea mayor de18 años, la fecha van hacer cargada  desde un (lista/Menú con php)
1-) Así esta formado el WAMPSERVER



2-) Código del formularios, Los jquery  que tienen que bajar son esto dos (jquery.validate.js, jquery.min.js) van en la carpeta js...  (-mas abajo pongo el script como validar el formulario con jquery)..

<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta http-equiv="cache-control" content="no-cache">
<title>Formulario Registro</title>
<link rel="stylesheet" type="text/css" href="style.css" media="screen">
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.validate.js"></script>
<script type="text/javascript" src="js/jquery.registrodrp.js"> </script>
</head>

<body>
<form action="<?php echo htmlentities($_SERVER['PHP_SELF'])?>" method="post" id="frm_registros">
  <div id="respond">
    <h1>Regístrate Es gratis (y lo seguirá siendo). </h1>
    <div>
      <label class="campo">Cedula</label>
      <input name="txtcedula" type="text" autofocus class="inputtext" id="txtcedula" 
        value="<?php if(isset($_POST['txtcedula'])){echo htmlentities($_POST['txtcedula']);} ?>" maxlength="7"  />
    </div>
    <div>
      <label class="campo">Nombre</label>
      <input name="txtnombre" type="text" class="inputtext" value="<?php if(isset($_POST['txtnombre'])){echo htmlentities($_POST['txtnombre']);} ?>" size="35">
    </div>
    <div>
      <label class="campo">Apellidos</label>
      <input name="txtapellido" type="text"  class="inputtext" id="txtapellido" value="<?php if(isset($_POST['txtapellido'])){echo htmlentities($_POST['txtapellido']);} ?>" size="35" />
    </div>
    <div >
      <label class="campo">Sexo</label>
      <select name="drpsexo">
        <option selected="selected" value=""> Selecciona el sexo:</option>
        <option value="Mujer">Mujer</option>
        <option value="Hombre">Hombre</option>
      </select>
    </div>
    <div >
      <label class="campo">Fecha de nacimiento</label>
      <!--seleccionar los dias del mes-->
      <select name="drpdias" id="drpdias"  >
        <option selected="selected" value=""> Dias:</option>
        <?php
for($d = 1; $d <= 31; $d++)
{
print("<option value=$d>$d</option>");}?>
      </select>
      <!--seleccionar el mes-->
      <select name="drpmes" id="drpmes">
        <option selected="selected" value="">Mes:</option>
        <option value="1">Enero</option>
        <option value="2">Febrero</option>
        <option value="3">Marzo</option>
        <option value="4">Abril</option>
        <option value="5">Mayo</option>
        <option value="6">Junio</option>
        <option value="7">Julio</option>
        <option value="8">Agosto</option>
        <option value="9">Septiembre</option>
        <option value="10">Octubre</option>
        <option value="11">Noviembre</option>
        <option value="12">Diciembre</option>
      </select>
      <!--seleccionar el ano de nacimiento-->
      <select name="drpanos" id="drpanos">
        <option selected="selected" value="">Años:</option>
        <?php
$ano = date ('Y');
//$ano=$ano-18;
for ($a = $ano; $a >= ($ano - 100); $a--) 
{

print("<option value=$a>$a</option>");} ?>
      </select>
    </div>
    <div>
      <input name="btnenviar" type="submit" id="btnenviar" value="Registrarse" />
    </div>
    <br/>
    <?php
  include("includes/registro_in_listamenu.php");
  if ($error) {
  echo '<ul>';
  foreach ($error as $alerta) {
    echo "<li class='avertencia'>$alerta</li>\n";
}
  echo '</ul>'; }
?>
  </div>
</form>
</body>
</html>

3-) Clase que va en la carpeta includes se llama (registro_in_listamenu.php)

<?php 
session_start();
include("oConexion.php");
$conexion = conectar();
$error = array();
if(array_key_exists('btnenviar', $_POST)){

$cedula = 0;
$nombre = "";
$apellido = "";
$sexo= "";
//validando los combox yla fecha de ingreso a la base de datos
date_default_timezone_set('America/Montevideo');

$hora = date("H:i:s",time());
$dia = $_POST['drpdias'];
$mes = $_POST['drpmes'];
$ano = $_POST['drpanos'];
$fecha = $ano."-".$mes."-".$dia." ".$hora;
$remote_addr = $_SERVER['REMOTE_ADDR'];
try 
{
$cedula = trim($_POST['txtcedula']);
if($cedula == "")
{
$error['txtcedula']= "Ingrese un número de cédula de 7 dígitos sin puntos ni guión.";
}else if ($_POST['txtcedula']){ //comprobar si existe el numero de cedula registrado
$query = mysql_query("SELECT cedula FROM tbusuarios WHERE cedula ='".$cedula."' LIMIT 1") or die(mysql_error());

$data = mysql_fetch_array($query);
if($data['cedula'] == $cedula) {
$error['txtcedula'] = "Ya existe ese número de cédula seleccionado.";
}else if($cedula != is_numeric($_POST['txtcedula']))
{
$error['txtcedula']= "Ingrese un número de cédula de 7 dígitos sin puntos ni guión.";
}else if((int)($_POST['txtcedula']) < 1000000 || (int)($_POST['txtcedula'])> 9999999)
{
$error['txtcedula']= "El número de cédula debe contener 7 dígitos sin puntos ni guión";
}else {
$cedula= (int)($_POST['txtcedula']);
}
}//fin de comprabar el usuarios

}catch(Exception $ex)
{
$error = die($ex->getMessage());
//echo $error;
}
$nombre= trim($_POST['txtnombre']);
if($nombre == "")
{
$error['txtnombre']= "Ingrese un nombre";
}
$apellido= trim($_POST['txtapellido']);
if($apellido == "")
{
$error['txtapellido']= "Ingrese un apellido";
}
$sexo= $_POST['drpsexo'];
if($sexo == "")
{
$error['drpsexo']= "Selecciona el sexo.";

//validar que los combox sean valor numerico
$dia = is_numeric($_POST['drpdias']);
if($dia == "")
{
$error['drpdias']= "Selecciona tu dia de nacimiento.";
}
$mes = is_numeric($_POST['drpmes']);
if($mes == "")
{
$error['drpmes']= "Selecciona el mes de naciemiento.";
}

$fecha_actual = date('Y');
$digitos = $fecha_actual - $ano; //con esto te da el numero de digitos
$ano = is_numeric($_POST['drpanos']);
if($ano == "")
{
$error['drpanos']= "Selecciones el año que nacistes.";
}else if($digitos < 18  ) 
{
$error['drpanos']=  "Debes reunir ciertos requisitos de edad, ser mayor de 18 años.";
}

if(!$error)
{
try
{
$insertar= "INSERT INTO tbusuarios (cedula, nombre, apellido, sexo, fech_nac,remote_addr)
VALUES ('$cedula', '$nombre', '$apellido', '$sexo', '$fecha','$remote_addr')"; 
                                       //esto es para insertar elementos en la base ya hecha
                                        $resul = mysql_query($insertar,$conexion);                    
                                        header("location:listaMenuDRP.php");
mysqli_close($conexion);
               
//var_dump($_POST);
   
}catch(Exeception $ex)
{
echo "Problema en la base de datos al ingresar " .$ex->getMessage();
}


}

}
$_POST= array();
?>


4-)Validar formulario así se llama el script ( jquery.registrodrp.js )

// JavaScript Document
$(document).ready(function() {            
                $("#frm_registros").validate({
                    rules:{
                        txtcedula:{
                            required:true, 
                            number: true,
   minlength:7,
   remote:"exicedula.php"
                        },
                        txtnombre:{
                            required:true 
                            
                        },
txtapellido:{
required:true

},
drpsexo:{
required:true
},
drpdias:{
required:true
},
drpmes:{
required:true
},
drpanos:{
required:true
}
                        
                        
                    },
//inicicio de mensaje drpanos                
                    messages:{
                        txtcedula:{
                            required:"Debe ingresar el número de cedula identidad",
                            number: 'El número de cédula debe contener 7 dígitos sin puntos ni guión',
minlength:"El número de cédula debe contener 7 dígitos sin puntos ni guión",
remote:"El número de cédula ya existe"
                        },                     
                        txtnombre:{
                            required:"Ingrese su nombre"
                           
                        },
txtapellido:{
required:"Ingrese un apellido"

},
drpsexo:{
required:"Selecciones su tipo de sexo"
},
drpdias:{
required: "Para registrarte tienes que indicar tu fecha de nacimiento completa"
},
drpmes:{
required: "Para registrarte tienes que indicar tu fecha de nacimiento completa"
},
drpanos:{
required: "Para registrarte tienes que indicar tu fecha de nacimiento completa"
},
"category[]": "Para registrarte tienes que indicar tu fecha de nacimiento completa",     
                    }//fin del los mensaje
                    //mensaje de gracia por enviar el formulario
                      // debug: true,
  //submitHandler: function(form){
//alert('Gracias por rellenar el formulario. Se ha enviado correctamente!');} 
                    
                    
                })
            });


5-) Validar si existe el numero de cédula, así se llama el script (exicedula.php )

<?php
$cedula = $_GET['txtcedula'];
include("includes/oConexion.php");
$conexion = conectar();
if($cedula !=""){
$consulta = "SELECT cedula FROM tbusuarios WHERE cedula ='".$cedula."' LIMIT 1";
$resul = mysql_query($consulta, $conexion);
if (mysql_fetch_assoc($resul)) {
echo "false";}
else {
echo "true";}
}else {
header("location: login.php");
session_destroy();}

?>


6-) conexión a la base de datos(asi se llama la clase oConexion.php).

<?php
function conectar()
 {
  $mysql_host = "localhost";  
  $mysql_user = "root";
  $mysql_password = ""; 
  $mysql_database = "ejemplousuarios2012";
  
  if(!$conexion= mysql_connect($mysql_host,$mysql_user,$mysql_password))
   {
    die("No se puedo ejecutar la conexion ". mysql_error());
    }
  if(!mysql_select_db($mysql_database, $conexion))
   {
    die("No se pudo seleccionar la base de datos ". mysql_error());
   }
  return $conexion;
  }

?>



6-) Bueno acá le dejo el script de la base de datos que estoy usando, la cual se llama (ejemplousuarios2012 y la tabla tbusuarios.sql).


CREATE TABLE IF NOT EXISTS `tbusuarios` (
  `codigo` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `cedula` int(7) NOT NULL,
  `nombre` varchar(50) NOT NULL,
  `apellido` varchar(50) NOT NULL,
  `sexo` varchar(15) NOT NULL,
  `fech_nac` datetime DEFAULT NULL,
  `remote_addr` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`codigo`),
  UNIQUE KEY `o_cedula` (`cedula`) USING BTREE

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


10-)Hoja de estilo...(style.css) 

@charset "utf-8";
/* Reset */
html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp, small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary, time, mark, audio, video {
 font-family: "Segoe UI", "Lucida Grande", "Lucida Sans Unicode", tahoma, Arial, Verdana, sans-serif;
 font-size: 100%;
 letter-spacing: 0em;
 vertical-align: middle;
 margin: 0px;
 padding: 0px;
 border: 0px;
 outline: 0px;
}
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
 display: block;
}
blockquote, q {
 quotes: none;
}
blockquote:before, blockquote:after, q:before, q:after {
 content: "";
 content: none;
}
h1 {
 font-size: 15px;
 color: #666;
 font-style: oblique;
}
a {
 color: #00F;
 font-size: 13px;
}
p {
 font-size: 13px;
}
strong {
 font-size: 13px;
}
form {
 width: 50%;
 margin: auto;
 padding: 12px;
}
body, td, th {
 color: #222;
}
td.label {
 font-size: 13px;
 padding-right: 3px;
 width: 105px;
}
.label {
 color: #1D2A5B;
 text-align: right;
}
div label.campo {
 width: auto;
 margin: .4em 0;
 display: block;
 font-size: 13px;
}
div#respond {
 border: 1px solid #CED5D7;
 border-radius: 10px;
 margin-top: auto;
 padding: 25px;
 border: 1px solid #CED5D7;
 box-shadow: 0 0 0 3px #E5E5E5;
}
.inputtext, .inputpassword {
 font-size: 14px;
 padding: 6px;
 border-radius: 4px;
 border: 1px solid #CED5D7;
 width: 250px;
}
.inputcaptcha {
 font-size: 14px;
 padding: 6px;
 border-radius: 4px;
 border: 1px solid #CED5D7;
 width: 40px;
 text-align: center;
}
/*input[type=text] {
 font-size: 12px;
 padding: 5px;
 border-radius: 4px;
 border: 1px solid #CED5D7;
 width: 200px;
}*/
textarea {
 font-family: tahoma, verdana, arial, sans-serif;
 font-size: 12px;
 border-radius: 4px;
 padding: 6px;
 border: 1px solid #CED5D7;
 resize: none; /* esta propiedad es para que el textarea no sea redimensionable */
 width: 330px;
 height: 120px;
}
/*input[type=url] {
 font-size: 12px;
 border-radius: 4px;
 padding: 5px;
 border: 1px solid #CED5D7;
 width: 200px;
}
input[type=email] {
 font-size: 12px;
 border-radius: 4px;
 padding: 5px;
 border: 1px solid #CED5D7;
 width: 200px;
}*/
select {
 font-size: 14px;
 padding: 6px;
 border-radius: 4px;
 border: 1px solid #CED5D7;
}
input[type=submit] {
 height: 30px;
 overflow: hidden;
 margin-top: 10px;
 text-align: center;
}
.avertencia {
 color: #FF0000;
 font-family: "Segoe UI", Arial, Verdana, sans-serif;
 font-size: 12px;
}
label.error {
 background-color: #BC1010;
 padding: 6px 12px;
 border-radius: 4px;
 color: white;
 font-weight: bold;
 margin-left: 10px;
 position: absolute;
 font-family: "Segoe UI", Arial, Verdana, sans-serif;
 font-size: 10px;
}
.error:before { /* Este es un truco para crear una flechita */
 content: '';
 width: 0;
 height: 0;
 border-top: 8px solid transparent;
 border-bottom: 8px solid transparent;
 border-right: 8px solid #BC1010;
 border-left: 8px solid transparent;
 left: -16px;
 position: absolute;
 top: 5px;
 pointer-events: none;
}
#welcome {
 width: 50%;
 margin: auto;
 padding: 12px;
 border: 1px solid #CED5D7;
 border-radius: 10px;
 margin-top: auto;
 padding: 25px;
 border: 1px solid #CED5D7;
 box-shadow: 0 0 0 3px #E5E5E5;
}
.usuario {
 font-size: 22px;
 color: #000;
 font-weight: bold;
 text-align: center;
}



19 comentarios:

  1. hola amigo me puedes enviar el codigo mi correo es gabys_r92@hotmail.com ...!!! Muchas Gracias..!!

    ResponderEliminar
  2. cOMO QUEDARIA EL COD DE LA listaMenuDRP

    ResponderEliminar
  3. Que tal rondon cree el formulario pero no guarda en el BD y no m verifica si la cedula se repite

    ResponderEliminar
    Respuestas
    1. mandame tu correo, asi te mando el codigo en limpio...

      Eliminar
  4. jeferson.brito.centeno@gmail.com este es mi correo rondon te agradezco la ayuda

    ResponderEliminar
  5. jeferson.brito.centeno@gmail.com te agradezco el apoyo

    ResponderEliminar
  6. Querido Jhon gracias por compartir con los pricipiantes tus conocimientos, por favor me puedes enviar el codigo limpio? jcspada@gmail.com

    ResponderEliminar
  7. Muy buen tutorial.. me prehuntaba.. si me podia facilitar el codigo? mi correo es: arqui.migenimo@hotmail.com ..... de antemano muchas gracias...

    ResponderEliminar
  8. saludos hermano me puedes ayudar con un sistema que estoy haciendo y tiene algunos errores???

    ResponderEliminar
    Respuestas
    1. Y con ese nombre creo que no te voy ayudar, que error te da cubano.

      Eliminar
    2. Huguito donde te esta dando error? " no voy ah publicar el comentario que me envía "

      Eliminar
    3. Buscar ah jhon de Foong en Facebook y me manda lo detalle por ese medio. Saludo huguito

      Eliminar
  9. Saludos desde Colombia Jhon Rondon.
    Precisamente lo que estaba buscando me podiras facilitar el codigo en limpio a este correo eulynri055@hotmail.com , te lo agradecería

    ResponderEliminar
  10. Buenas tardes amigo me ayudarias en un sistema que hago mi correo es alex19_3000_2@hotmail.com

    ResponderEliminar
  11. buenas amigo saludos desde portuguesa estoy haciendo un proyecto de la universidad y me gustaria saber si podrias facilitarme el codigo limpio a mi correo, jouberth28@gmail.com te lo agradeceria

    ResponderEliminar

Bienvenido