Foros del Web » Programando para Internet » PHP »

fecha de nacimiento

Estas en el tema de fecha de nacimiento en el foro de PHP en Foros del Web. LES TRAIGO UN MÍNIMO APORTE. NO TENGO MUCHA EXPERIENCIA CON PHP PERO FUE LO ÚNICO QUE SE ME OCURRIÓ. PARA LOS NOVATOS PUEDE SER ALGO ...
  #1 (permalink)  
Antiguo 07/03/2012, 12:20
 
Fecha de Ingreso: enero-2012
Ubicación: en buenos aires
Mensajes: 41
Antigüedad: 12 años, 9 meses
Puntos: 1
fecha de nacimiento

LES TRAIGO UN MÍNIMO APORTE.

NO TENGO MUCHA EXPERIENCIA CON PHP PERO FUE LO ÚNICO QUE SE ME OCURRIÓ.

PARA LOS NOVATOS PUEDE SER ALGO MUY ÚTIL A LA HORA DE VALIDAR LA FECHA DE NACIMIENTO DE LA PERSONA QUE SE REGISTRE.

EMPEZAMOS:


1 FORMULARIO


Código PHP:
Ver original
  1. <form action="validar_registro.php" method="post">
  2.  
  3. <select name="anio">
  4. <?php
  5. for ($i=$anio2=date("Y");$i>$anio1=date("Y")-80;$i+= -1) {
  6. ?>
  7. <option value="<?php echo $i; ?>"><?php echo $i; ?></option>
  8. <?php  
  9. }  
  10. ?>
  11. </select>
  12.  
  13. <span style="font-size:12px; color:#333;">Mes:</span><select name="mes">
  14.  
  15. <?php
  16. $anio = array("01","02","03","04","05","06","07","08","09","10","11","12");
  17. for($i=0; $i<12; $i++) {
  18. ?>
  19. <option value="<?php echo $anio[$i]; ?>"><?php echo $anio[$i]; ?></option>
  20. <?php  
  21. }  
  22. ?>
  23. </select>
  24.  
  25.  
  26. <span style="font-size:12px; color:#333;">D&iacute;a:</span>
  27. <input type="text" name="dia" size="2">
  28.  
  29. </form>



2 validar_registro.php

Código PHP:
Ver original
  1. <?php
  2.  
  3. $fecha_nacimiento = $_POST['anio']."-".$_POST['mes']."-".$_POST['dia'];
  4.  
  5.    
  6.    
  7. if (preg_match('/^([0-9]{4})-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$/',$fecha_nacimiento)){
  8.        
  9.  
  10. if ($_POST['mes'] == "02" && $_POST['dia'] == "30" ){
  11.    
  12. echo "recuerde que febrero solo contiene 28 o 29 dias segun el a&ntilde;o";
  13.  
  14. } else {
  15.    
  16. if ($_POST['mes'] == "02" && $_POST['dia'] == "31" ){
  17.    
  18. echo "recuerde que febrero solo contiene 28 o 29 dias segun el a&ntilde;o";
  19.  
  20. } else {
  21.    
  22. $query = 'INSERT INTO usuarios (fecha_nacimiento)
  23. VALUES (\''.$fecha_nacimiento.'\')';
  24. mysql_query($query) or die(mysql_error());
  25.  
  26. echo 'fecha de nacimiento correcta.<br />';
  27.  
  28. }
  29.  
  30. }
  31.  
  32. } else { echo "la fecha de nacimiento no es correcta"; }
  33.  
  34. ?>
  #2 (permalink)  
Antiguo 07/03/2012, 17:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: fecha de nacimiento

En PHP hay una función muy buena llamada checkdate(). Que checa muy bien que la fecha sea válida (ej no admite el 31 de Febrero)

Saludos.
  #3 (permalink)  
Antiguo 07/03/2012, 20:45
 
Fecha de Ingreso: enero-2012
Ubicación: en buenos aires
Mensajes: 41
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: fecha de nacimiento

Cita:
Iniciado por GatorV Ver Mensaje
En PHP hay una función muy buena llamada [URL="http://us3.php.net/checkdate"][B]checkdate[/B][/URL](). Que checa muy bien que la fecha sea válida (ej no admite el 31 de Febrero)

Saludos.
disculpa las molestias pero tienes idea de como implementarla a mi formulario
  #4 (permalink)  
Antiguo 07/03/2012, 22:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: fecha de nacimiento

Claro es trivial:

Código PHP:
Ver original
  1. $anio = (int) $_POST['anio']
  2. $mes = (int) $_POST['mes']
  3. $dia = (int) $_POST['dia'];
  4. if (checkdate($mes, $dia, $anio)) {
  5.       $fecha = sprintf('%d-%d-%d', $dia, $mes, $anio);
  6.       $query = 'INSERT INTO usuarios (fecha_nacimiento)
  7. VALUES (\''.$fecha.'\')';
  8. mysql_query($query) or die(mysql_error());
  9. } else {
  10.       // error
  11. }
  #5 (permalink)  
Antiguo 09/03/2012, 12:41
 
Fecha de Ingreso: enero-2012
Ubicación: en buenos aires
Mensajes: 41
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: fecha de nacimiento

Cita:
Iniciado por GatorV Ver Mensaje
Claro es trivial:

Código PHP:
Ver original
  1. $anio = (int) $_POST['anio']
  2. $mes = (int) $_POST['mes']
  3. $dia = (int) $_POST['dia'];
  4. if (checkdate($mes, $dia, $anio)) {
  5.       $fecha = sprintf('%d-%d-%d', $dia, $mes, $anio);
  6.       $query = 'INSERT INTO usuarios (fecha_nacimiento)
  7. VALUES (\''.$fecha.'\')';
  8. mysql_query($query) or die(mysql_error());
  9. } else {
  10.       // error
  11. }
Hola gastor disculpa las molestias , si quieres puedes responderme si no esta bien te agradezco tu ayuda me sirvió mucho tengo un problema ahora con el formulario si la persona elije febrero en el "select dia" sigue quedando 31 como puedo hacer que me cargue los 28 0 29 días como en el formulario de facebook
  #6 (permalink)  
Antiguo 09/03/2012, 13:19
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: fecha de nacimiento

Eso lo debes de hacer en Javascript, ajustar los días dependiendo del mes, no lo puedes hacer en PHP sin tener que enviar la pagina al servidor.

Saludos.
  #7 (permalink)  
Antiguo 09/03/2012, 21:56
 
Fecha de Ingreso: enero-2012
Ubicación: en buenos aires
Mensajes: 41
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: fecha de nacimiento

Cita:
Iniciado por GatorV Ver Mensaje
Eso lo debes de hacer en Javascript, ajustar los días dependiendo del mes, no lo puedes hacer en PHP sin tener que enviar la pagina al servidor.

Saludos.
jejej me imagine, gracias por tu ayuda me sirvió un montón

Etiquetas: cumple, date, fecha, mysql, registro
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 04:06.