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;
}
hola amigo me puedes enviar el codigo mi correo es gabys_r92@hotmail.com ...!!! Muchas Gracias..!!
ResponderEliminarcOMO QUEDARIA EL COD DE LA listaMenuDRP
ResponderEliminarQue tal rondon cree el formulario pero no guarda en el BD y no m verifica si la cedula se repite
ResponderEliminarmandame tu correo, asi te mando el codigo en limpio...
Eliminarjeferson.brito.centeno@gmail.com este es mi correo rondon te agradezco la ayuda
ResponderEliminarjeferson.brito.centeno@gmail.com te agradezco el apoyo
ResponderEliminarQuerido Jhon gracias por compartir con los pricipiantes tus conocimientos, por favor me puedes enviar el codigo limpio? jcspada@gmail.com
ResponderEliminarsuerte con eso...
EliminarMuy buen tutorial.. me prehuntaba.. si me podia facilitar el codigo? mi correo es: arqui.migenimo@hotmail.com ..... de antemano muchas gracias...
ResponderEliminarSuerte....
Eliminarsaludos hermano me puedes ayudar con un sistema que estoy haciendo y tiene algunos errores???
ResponderEliminarY con ese nombre creo que no te voy ayudar, que error te da cubano.
EliminarHuguito donde te esta dando error? " no voy ah publicar el comentario que me envía "
EliminarBuscar ah jhon de Foong en Facebook y me manda lo detalle por ese medio. Saludo huguito
EliminarSaludos desde Colombia Jhon Rondon.
ResponderEliminarPrecisamente lo que estaba buscando me podiras facilitar el codigo en limpio a este correo eulynri055@hotmail.com , te lo agradecería
ya te lo mande..
ResponderEliminarBuenas tardes amigo me ayudarias en un sistema que hago mi correo es alex19_3000_2@hotmail.com
ResponderEliminarbuenas 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
ResponderEliminarya te lo mande suerte con eso..
Eliminar