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

indiglosv comentado

Hola.

Gracias por contestar leonardo.

lo que intento hacer es unicamente grabar la hora en la cual el registro es enviado , ya que la tabla me muestra lo siguiente:

enter image description here

la fecha de registro me aparece 0000-00-00 00:00:00 y es lo que quiero modificar y no logro hacerlo, al ingresar el código que tu me indicas me sale de la misma manera, cabe indicar que los datos los muestro en otra pagina no en la misma que realiza o inserta los datos a la tabla.

estoy atorado en esto y gracias nuevamente por tomarte tiempo en ayudarme.

0voto

indiglosv comentado

Existirá alguna manera que phpmyadmin tome estos datos y los muestre automáticamente ?

en phpmyadmin lo he colocado como timestamp y currentdate pero de igual forma no me lo muestra, sigue apareciendo 0000:00:00

0voto

Leonardo-Tadei comentado

El código modificado que te pongo arriba te debe mostrar por pantalla la palabra "Debug: " seguido del contenido de la variable $query

Por favor, copiá y pegá acá la salida que ves en el navegador de la variable $query para poder saber qué es lo que estás enviando a ejecutar.

0voto

indiglosv comentado

hola.
eso es lo que me muestra:

Debug: INSERT INTO `zadmin_otravez`.`USUARIOS` (`ID`, `NOMBRE`, `CORREO`, `HORARIO`, `FECHAHORA`, `TIPO`) VALUES ('', '', '', '', 'now()', '1') 

Saludos

0voto

Leonardo-Tadei comentado

El problema que tenés es que la función now() te está quedando entre comillas, y por tanto MySQL la toma como un string, que al no tener una fecha válida, queda en cero, en vez de ejecutarla

Tenés que sacarle las comillas a ese valor de la consulta:

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);

Sin embargo, me llama la atención que el string 'now()' sea un valor de $_POST, ya que se supone que esos valores se toman del formulario, y en FECHAHORA tenés un campo hidden sin valor. De dónde aparece el now() ???

Si con este cambio no te funciona, por favor volvé a copiar y pegar la salida de la variable $query

0voto

indiglosv comentado

Hola.

a lo mejor lo copie mal, porque no tengo ningun valor now() en todo el codigo:

te lo dejo nuevamente:

Debug: INSERT INTO `zadmin_otravez`.`USUARIOS` (`ID`, `NOMBRE`, `CORREO`, `HORARIO`, `FECHAHORA`, `TIPO`) VALUES ('', '', '', '', , '1') 

Gracias.

0voto

Leonardo-Tadei comentado

Hola indiglosv,

Qué raro lo que decís del now() ... en fin. Para solucionar tu problema, cambiá el código de la siguiente manera:

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]', now(), '$_POST[TIPO]') ");
print("<br><br>Debug: $query<br><br>");
mysql_query ($query);

Fijate que la función de MySQL now() no está escrita entre comillas. Esto debería funcionar si el campo fechahora está definido como datetime o como timestamp en la tabla.

Una vez que funcione, comentá o borrá la línea que imprime la query, ya que no hará más falta. Si no llega a funcionar, además de la salida de la variable $query, hace falta que envíes la estructura de la tabla, para poder validar contra ella la query ejecutada.

Saludos!

0voto

indiglosv comentado

Hola amigo..

Muchas gracias problema resuelto , agradezco el tiempo que te tomaste en responder a mi solicitud, ahora me aparece perfectamente el resultado que estaba buscando.

Gracias nuevamente !!

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