entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

mysql fecha ingresadas

Tengo un problema al tratar de ingresar las fecha en mi tabla , recibo los datos
de esta manera: 0000-00-00 00:00:00 (fecha y hora)

mi código es:

mysql_connect($server, $db_user, $db_pass) or die ("error1".mysql_error());
mysql_select_db($database) or die ("error2".mysql_error());
mysql_query ("INSERT INTO `zadmin_otravez`.`USUARIOS` (`ID`, `NOMBRE`, `CORREO`, `HORARIO`, `FECHAHORA`, `TIPO`) VALUES
('$_POST[ID]', '$_POST[NOMBRE]', '$_POST[CORREO]', '$_POST[HORARIO]', '$_POST[FECHAHORA]', '$_POST[TIPO]') ");

El formulario esta asi:

<form action="insertardatosentabla.php" method="post">
<table bgcolor="#808000" border="0" cellpadding="0" cellspacing="0" width="40%">
 <tr>
   <td width="70%" bgcolor="#808000"><div align="right">Tu Nombre: </div></td>
   <td width="50%"><input type="text" name="NOMBRE" size="53"></td>
   </tr>
   <tr>
   <td width="70%"><div align="right">Tu Correo: </div></td>
   <td width="50%"><input type="text" name="CORREO" size="53"></td>
   </tr>
   <tr>
   <td width="70%"><div align="right">Horario y Nombre programa: </div></td>
   <td width="50%"><textarea name="HORARIO"cols="53">

 </tr>
     <tr>
       <td width="70%"><input name="FECHAHORA" type="hidden" value="" ></td>
       <td width="50%"></td>
       </tr>
       <tr>
       <td width="70%"><div align="right">Tipo:</div></td>
       <td width="50%"><input type="radio" name="TIPO" checked="checked" value="1" >Ingreso<br >
       <input type="radio" name="TIPO" value="2" >Salida</td>
     <tr>
       <td width="70%"></td>
       <td width="50%"><input type="submit" name="Enviar"  value="Enviar Solicitud" ></td>
     </tr>
   </table>

2 Respuestas

2votos

Leonardo-Tadei Puntos227320

Hola indiglosv,

Es posible que no estés recibiendo los datos en el formato que esperas. Entre otras cosas, tu formulario tiene un error por un textarea que se abre y nunca se cierra.

Para ver qué pasa, cambiá de esta forma tu código:

mysql_connect($server, $db_user, $db_pass) or die ("error1".mysql_error());
mysql_select_db($database) or die ("error2".mysql_error());
$query = ("INSERT INTO `zadmin_otravez`.`USUARIOS` (`ID`, `NOMBRE`, `CORREO`, `HORARIO`, `FECHAHORA`, `TIPO`) VALUES
('$_POST[ID]', '$_POST[NOMBRE]', '$_POST[CORREO]', '$_POST[HORARIO]', '$_POST[FECHAHORA]', '$_POST[TIPO]') ");
print("<br><br>Debug: $query<br><br>");
mysql_query ($query);

y poné como comentario a esta respuesta la salida, así podemos ver el contenido de la variable $query y ver exactamente qué sentencia se está por ejecutar: debe estar ahí el problema de sintaxis.

Saludos!

0voto

Leonardo-Tadei comentado

Por nada!

tomá nota no tanto de la solución, sino del método para encontrar el problema: emitir la query antes de ejecutarla y ver si es código SQL correcto.

Saludos cordiales!

0voto

ankeorum comentado

Creo que tu solución pasa por cambiar el tipo de campo [Fechahora] en la base de datos a varchar(10), estoy prácticamente seguro de que con ese cambio obtendrás la fecha actual en formato 21/03/2014 en tu base de datos.

0voto

Leonardo-Tadei comentado

Hola ankeorum,

guardar fechas en formatos que no sean de tipo fecha impide luego hacer tareas básicas como ordenamientos. Se solucionaría en el sentido de que siendo varchar, se podrá guardar cualquier cosa sin que falle, pero tampoco es la idea violar reglas básicas de almacenamiento.

Saludos!

0voto

ankeorum comentado

Tienes razón pero posteriormente desde PHP puede hacer una función que sí que ordene esas fechar que fueron obtenidas en formato varchar(10) y si eso soluciona su problema...

0voto

Leonardo-Tadei comentado

Entiendo tu planteo ankeorum, pero en ese caso, por ejemplo, para una tabla de apenas 10 mil registros, tendría que hacer algo como cargar en un vector los 10000 elementos y pasarlos por una función de ordenamiento para poder verlos ordenados o filtrarlos entre fechas, sobrecargando mucho el sistema con la operación.... y 10 mil registros no son tantos para una tabla normal...

Es más simple y efectivo mantener el campo datetime o timestamp y guardar la fecha en ese formato.

Saludos!

2votos

ankeorum Puntos7210

A ver, yo en los códigos que gestiono cuando necesito insertar en la base de datos la fecha actual no lo hago con un post porque lo veo recabar una información que realmente no sabes de dónde te va a venir ni cómo va a venir tratada. Yo creo que una solución factible podría ser:

mysql_connect($server, $db_user, $db_pass) or die ("error1".mysql_error());
mysql_select_db($database) or die ("error2".mysql_error());
$query = ("INSERT INTO `zadmin_otravez`.`USUARIOS` (`ID`, `NOMBRE`, `CORREO`, `HORARIO`, `FECHAHORA`, `TIPO`) VALUES
('$_POST[ID]', '$_POST[NOMBRE]', '$_POST[CORREO]', '$_POST[HORARIO]', '".date('d/m/Y')."', '$_POST[TIPO]') ");
print("<br><br>Debug: $query<br><br>");
mysql_query ($query);

De esa forma solucionarías la inserción de la fecha, insertaría en la base de datos la fecha DD/MM/YYYY de la inserción.

1voto

indiglosv comentado

Gracias por responder ankeorum.

He probado tal como me lo indicas pero la hora se sigue mostrando en el mismo formato:

0000-00-00 00:00:00

en realidad no se que estará pasando.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta