Foros del Web » Programando para Internet » PHP »

problema con inserción de dato en la DB (nacimiento)

Estas en el tema de problema con inserción de dato en la DB (nacimiento) en el foro de PHP en Foros del Web. Hola gente como va? Les cuento tengo un formulario de inscripción, que dentro de los datos que pido, es la fecha de nacimiento. No se ...
  #1 (permalink)  
Antiguo 16/09/2012, 17:42
 
Fecha de Ingreso: febrero-2012
Mensajes: 49
Antigüedad: 12 años, 2 meses
Puntos: 2
Exclamación problema con inserción de dato en la DB (nacimiento)

Hola gente como va?

Les cuento tengo un formulario de inscripción, que dentro de los datos que pido, es la fecha de nacimiento.
No se si lo hice de la manera correcta, pero para el dia, mes y año, puse para cada uno un <select> y despues en PHP las capturo por separado.

El problema esta cuando intento grabarlo en la base de datos, o sea no me lo graba, ese dato en la DB esta seteado como "DATE", como hago para grabarle la fecha de naciemiento en la DB?

Código PHP:
$dia=is_int($dia);
            
$mes=is_int($mes);
            
$anio=is_int($anio);
            
$fecha_nacimiento=$anio."-".$mes."-".$dia
Esta es la burrada que hago y dps lo mando a la base, la cual obvio no me lo toma, como tengo que modificar las cosas para que si lo haga? Gracias!
__________________
@vindt89
  #2 (permalink)  
Antiguo 16/09/2012, 17:49
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: problema con inserción de dato en la DB (nacimiento)

Supongo que el formato para DATE es el correcto (YYYY-MM-DD). Digo supongo, porque en el ejemplo de código que pones no se ve de donde vienen las variables.

De todas formas, ¿has intentado hacer un echo con $fecha_nacimiento? Así compruebas cómo están los datos.
__________________
(:
  #3 (permalink)  
Antiguo 16/09/2012, 17:51
 
Fecha de Ingreso: febrero-2012
Mensajes: 49
Antigüedad: 12 años, 2 meses
Puntos: 2
Respuesta: problema con inserción de dato en la DB (nacimiento)

Acá esta la parte del formulario de donde vienen los datos:

Código HTML:
Ver original
  1. <div id="date">
  2.                         <select id="dia" name="dia" autocomplete="off">
  3.                             <option value="none">D&iacute;a</option>
  4.                             <script type="text/javascript">
  5.                             1
  6.                             for(i=01;i<=31;i++) document.write('<option value="'+i+'">'+i+'</option>\n');
  7.                             </script>
  8.                         </select>
  9.                         <select id="mes" name="mes" autocomplete="off">
  10.                             <option value="none">Mes</option>
  11.                             <option value="01">Enero</option>
  12.                             <option value="02">Febrero</option>
  13.                             <option value="03">Marzo</option>
  14.                             <option value="04">Abril</option>
  15.                             <option value="05">Mayo</option>
  16.                             <option value="06">Junio</option>
  17.                             <option value="07">Julio</option>
  18.                             <option value="08">Agosto</option>
  19.                             <option value="09">Septiembre</option>
  20.                             <option value="10">Octubre</option>
  21.                             <option value="11">Noviembre</option>
  22.                             <option value="12">Diciembre</option>
  23.                         </select>
  24.                         <select id="anio" name="anio" autocomplete="off">
  25.                             <option value="none">A&ntilde;o</option>
  26.                             <script type="text/javascript">
  27.                             1
  28.                             for(d=new Date(),i=d.getFullYear()-12;i!=1910;i--) document.write('<option value="'+i+'">'+i+'</option>\n');
  29.                             </script>
  30.                         </select>
  31.                     </div>

Y con respecto del "echo" si lo hice, y sin problemas... no logro encontrar el defecto...
__________________
@vindt89
  #4 (permalink)  
Antiguo 16/09/2012, 17:56
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: problema con inserción de dato en la DB (nacimiento)

No veo nada que pueda dar problemas.

Supongo que el fallo vendrá por la consulta al insertar los datos. Pero claro, no hay código de eso.
Intenta siempre poner la mayor información para que se te pueda ayudar. No tiene porqué ser todo el código (sobre todo si realmente es mucho) pero al menos por donde va pasando tu problema. Donde recoges $_POST['anio'], donde lo cambias a $anio, la instrucción de añadir el registro, etc.
__________________
(:
  #5 (permalink)  
Antiguo 16/09/2012, 18:04
 
Fecha de Ingreso: febrero-2012
Mensajes: 49
Antigüedad: 12 años, 2 meses
Puntos: 2
Respuesta: problema con inserción de dato en la DB (nacimiento)

Muchas gracias por la mano que me venis dando...

Lo que ves delante de $_POST .... son dos funciones de seguridad... una la que colgo GatorV y otra que la arme yo...

Código PHP:
Ver original
  1. $dia = filterXSS(MakeMeSafe($_POST['dia']));
  2.     $mes = filterXSS(MakeMeSafe($_POST['mes']));
  3.     $anio = filterXSS(MakeMeSafe($_POST['anio']));

Una vez que se recoge esta información, se valida para ver que los datos de fecha sean correctos y el usuario desde su navegador los haya modificado (numeros por letras o numeros que no corresponden a la categoria).

Dps se hace la conversion del string que recibe por $_POST a integer y lo agrupo como te mostre antes...

Código PHP:
Ver original
  1. $dia=is_int($dia);
  2. $mes=is_int($mes);
  3. $anio=is_int($anio);
  4. $fecha_nacimiento=$anio."-".$mes."-".$dia;

Y después lo mando en la consulta SQL... y confirmo tu alta con un mail. Y se acabo el cuento.
__________________
@vindt89
  #6 (permalink)  
Antiguo 16/09/2012, 18:20
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: problema con inserción de dato en la DB (nacimiento)

Pero no fueron felices ni comieron perdices.

Pues es muy raro, porque no tiene mucha historia.

Si hasta ahí llega bien como dices que has comprobado con echo, el fallo está o en la instrucción SQL o algún problema en la base de datos.
__________________
(:
  #7 (permalink)  
Antiguo 16/09/2012, 18:30
 
Fecha de Ingreso: febrero-2012
Mensajes: 49
Antigüedad: 12 años, 2 meses
Puntos: 2
Respuesta: problema con inserción de dato en la DB (nacimiento)

lo del "echo" me equivoque yo, le estaba haciendo echo a otra variable date. No mira ya fui variando el codigo de la fecha_nacimiento pero o me tira "--" cuando hago echo o no me tira nada cuando le pongo un strtotime delante. El problema esta cuando armo a fecha_nacimiento
__________________
@vindt89
  #8 (permalink)  
Antiguo 17/09/2012, 05:23
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: problema con inserción de dato en la DB (nacimiento)

Pues entonces vete comprobando el camino de la variable.

Comprueba que llega por $_POST, sino lo hace el fallo estará en el formulario seguramente.

De todas formas, no había caído en que cuando dices que haces la conversión de $_POST aquí:
Código PHP:
$dia=is_int($dia);
$mes=is_int($mes);
$anio=is_int($anio);
$fecha_nacimiento=$anio."-".$mes."-".$dia
No veo nada de $_POST. ¿No tendría que ser así?:
Código PHP:
$dia=is_int($_POST['dia']);
$mes=is_int($_POST['mes']);
$anio=is_int($_POST['anio']);
$fecha_nacimiento=$anio."-".$mes."-".$dia
__________________
(:
  #9 (permalink)  
Antiguo 17/09/2012, 12:15
 
Fecha de Ingreso: febrero-2012
Mensajes: 49
Antigüedad: 12 años, 2 meses
Puntos: 2
Respuesta: problema con inserción de dato en la DB (nacimiento)

Si, esta citado mas arriba como traigo los datos del formulario, veraz que el problema no esta en el form porque he probado cambiar la codificación del campo en la DB a varchar para probar que imprime y da la fecha que le mando, así q el problema puede ser que sea la codificación o que el formato que manda no es el correcto...

Código PHP:
Ver original
  1. dia = filterXSS(MakeMeSafe($_POST['dia']));
  2.     $mes = filterXSS(MakeMeSafe($_POST['mes']));
  3.     $anio = filterXSS(MakeMeSafe($_POST['anio']));

Recordá que mencione que lo que ves deltante del $_POST son funciones de seguridad que tiene mi aplicación, luego de esto vienen las verificaciones de los datos que sean correctos y demas y luego se pasa a darle el formato integer aunq esto puedo simplificarlo en un solo paso...

Insisto sobre lo que te dije en una respuesta, MUCHAS GRACIAS POR LA MANO HASTA AHORA DADA... es bueno saber que en este foro se puede contar con gente que te ayuda!
__________________
@vindt89
  #10 (permalink)  
Antiguo 17/09/2012, 12:58
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: problema con inserción de dato en la DB (nacimiento)

Pues es muy raro, si el formato está bien (que lo está) y luego si te funciona cuando cambias a varchar quiere decir que efectivamente está en la base de datos el problema.

Intenta preguntar en el foro de base de datos (aunque ahí no puedes, por las normas, postear código PHP u otro diferente al de, en tu caso, MySQL).
__________________
(:

Etiquetas: formulario, inserción, mysql
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 21:42.