Foros del Web » Programando para Internet » PHP »

crear campo oculto con la fecha

Estas en el tema de crear campo oculto con la fecha en el foro de PHP en Foros del Web. Hola a todos. Supongo que la respuesta será sencilla pero por más que pruebo cosas que encuentro en este y otros foros me siento negado ...
  #1 (permalink)  
Antiguo 05/05/2010, 01:03
 
Fecha de Ingreso: mayo-2010
Ubicación: Madrid
Mensajes: 74
Antigüedad: 13 años, 11 meses
Puntos: 0
crear campo oculto con la fecha

Hola a todos. Supongo que la respuesta será sencilla pero por más que pruebo cosas que encuentro en este y otros foros me siento negado de hacerlo.

He creado un formulario que guarda una serie de datos en la BBDD y funciona correctamente. Ahora quiero que además de una serie de campos que rellena el usuario, se guarde la fecha del día y no quiero que la meta el usuario, quiero que la coja del sistema. Para ello he supuesto que lo más sencillo sería un campo oculto y asignarle el valor de una variable PHP donde recoja la fecha. Pero soy incapaz de lograrlo.

He creado una variable y le paso un valor con esta sentencia.

$hoy = getdate();

He creado un campo oculto.
He probado varias opciones leídas en distintos foros para asignarle el valor al campo oculto. La última que probé y dejé ya por imposible es

<input name="oculto_fecha" type="hidden" id="oculto_fecha" value="<?php echo $hoy; ?>" />

Pero aunque luego modifico la inserción de registros hasta con el asistente de DW, me reconoce el campo oculto y me permite coger el valor del mismo al final a la BBDD me llega la fecha todo a ceros con el formato 000-00-00.

¿Alguien me puede decir donde cometo el error?

Y otra cosa que tampoco se hacer bien es asignar el valor de una variable de sesión a un campo. ¿Esta linea está bien escrita?
<td><input name="campo_idusuario" type="text" id="campo_idusuario" value = <?php $_SESSION['MM_Username']; ?>/></td>

Gracias.
  #2 (permalink)  
Antiguo 05/05/2010, 02:11
 
Fecha de Ingreso: noviembre-2008
Mensajes: 44
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: crear campo oculto con la fecha

Hola!

En cuanto a lo de la fecha, lo mas fácil es introducir la fecha directamente en la sentencia sql, todas las bases de datos tienen su propia función para mostrar la fecha actual del sistema.

insert into nombre_tabla(campofecha) values (sysdate).

Este ejemplo es una sentencia de inserción de una fecha en campo tipo timestamp en oracle.

Cada base de datos tiene sus tipos para guardar las fechas y sus instrucciones que devuelve la fecha actual, en este ejemplo la función sysdate. Lo único que tendrías que mirar como se hace en la base de datos que tengas.

Si quieres obtener la fecha en php , deberias leerla ($hoy = getdate()) en el archivo php donde ejecutas la sentencia sql y construir la consulta con ese valor así no tienes que estar pasandola en ningún campo oculto.

A groso modo algo asi como ...
$sql = "insert into tabla(campofecha) values ($hoy)";
Y luego solo tendrias que ejecutar la consulta guardada en la variable $sql.

En cuando a recuperar la variable php en el codigo html, date cuenta que lo que estás poniendo entre <?php y ?> es código php. Si quieres mostrar por pantalla el valor de la variable de sessión 'MM_Username' tienes que imprimirla, quedando el código de la siguiente manera:

<td><input name="campo_idusuario" type="text" id="campo_idusuario" value =" <?php echo $_SESSION['MM_Username']; ?> "/></td>
(Te faltaron las comillas dobles)

Releyendo tu post.. esto último si lo tenias bien hecho cuando intntabas guardar la fecha en el campo oculto.

Última edición por El_Barba; 05/05/2010 a las 02:21
  #3 (permalink)  
Antiguo 05/05/2010, 05:01
 
Fecha de Ingreso: mayo-2010
Ubicación: Madrid
Mensajes: 74
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: crear campo oculto con la fecha

Hola El_Barba

Primero agradecerte la ayuda.

He resuelto mi fallo de sintaxis sobre la variable del login del usuario , muchas gracias.

Y segundo comentarte los problemas que he encontrado con la otra cuestión de mi pregunta.

Sobre lo que me comentas de usar los comandos propios del gestor de la BBDD decirte que no es una opción a usar. En mi caso yo se poco de PHP o de los comandos propios del WAMPSERVER pero la persona que va a mantener la web aun sabe menos que yo por lo que pretendo ceñirme lo máximo posible a sólo HTML y PHP. Pero te agradezco esa información.

Así que lo tengo que hacer en el código de PHP. Te paso lo que tengo probado:

Opción 1.

Obtengo el valor a guardar.
$hoy = getdate();

Lo meto en la sql que se lanzará.
$insertSQL = sprintf("INSERT INTO peticiones (USUARIO, FECHA) VALUES (%s, $hoy)"
GetSQLValueString($_POST['campo_idusuario'], "text"));


Eso no me ha funcionado, me da un error de SQL que no se solucionar.

Opción 2.

Obtengo el valor a guardar.
$hoy = getdate();

Lo meto en la sql que se lanzará.
$insertSQL = sprintf("INSERT INTO peticiones (USUARIO, FECHA) VALUES (%s, %s)",
GetSQLValueString($_POST['campo_idusuario'], "text"),
GetSQLValueString($_POST['oculto_fecha'], "date"));

Y he definido el campo oculto_fecha así:
<input name="oculto_fecha" type="hidden" id="oculto_fecha" value="<?php echo $hoy; ?>" />

Esto funciona pero en la base de datos la fecha es siempre 0000-00-00, lo cual no es óptimo.

Me da un poco igual cual de las 2 opciones usar pero ninguna me funciona. ¿Sabes decirme porqué fallan?
  #4 (permalink)  
Antiguo 05/05/2010, 05:47
 
Fecha de Ingreso: noviembre-2008
Mensajes: 44
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: crear campo oculto con la fecha

Te comento las cosas según me vienen a la mente:

1) Si puedes cambiar la linea:

$insertSQL = sprintf("INSERT INTO peticiones (USUARIO, FECHA) VALUES (%s, %s)",

por

$insertSQL = sprintf("INSERT INTO peticiones (USUARIO, FECHA) VALUES (%s, now())",

es decir, en el campo fecha, que probablemente sea un campo predefinido para fechas (timestamp, date,..) de la base de datos que tengas, insertas el valor de la función (now(), sysdate..) que tu base de datos te tenga...para obtener la fecha actual. Sobre esto hay mucha documentación en internet. Si el campo no es de uno de los propios para la fechas tendrás que, en la misma sentencia, hacer el propiamente cast, que te proporcione la base de datos en la que estes trabajando.

Tal y como tienes ahora planteada la opción 1 ahora, yo cogería el error que te da y lo buscaría en internet o lo pondría en la sección de base de datos.

La opción 2 en mi opinión sobra, ya que estas haciendo lo mismo que en la opción 1 pero añdiendo un campo oculo y demás.
__________________
"Lo que escribo por aquí son sólo orientaciones a modo de ayuda y pueden estar equivocadas".

Última edición por El_Barba; 05/05/2010 a las 06:01
  #5 (permalink)  
Antiguo 05/05/2010, 06:07
 
Fecha de Ingreso: mayo-2010
Ubicación: Madrid
Mensajes: 74
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: crear campo oculto con la fecha

El_Barba, muchísimas gracias.

He probado a cambiar el $hoy por el now() y ha funcionado. Supongo que por el momento me vale para ir trabajando con el resto de cosas aunque como te dije tengo intención de dejar todo el código sin sentencias del gestor de la BBDD. Eso me supondrá averiguar por qué no me funciona tal y como me habías explicado. Pero tu ayuda me ha servido de mucho. Gracias.
  #6 (permalink)  
Antiguo 05/05/2010, 07:07
 
Fecha de Ingreso: noviembre-2008
Mensajes: 44
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: crear campo oculto con la fecha

No me habia fijado, el getdate te devuelve un arrray!!!!! Te tuvo que haber saltado al menos un warning creo.

http://es.php.net/getdate

Yo primero, intentaria lanzar una consulta utilizando cualquier cliente en el que puedes ejecutar una consulta contra la base de datos, no sé si el DW tiene uno, si no pues eso utilizar el propio cliente de la base de datos o uno externo tipo navicat, phpadmin, toad... Y ejecutaría la consulta insert que quieres ejecutar a mano con valores de prueba inventados. Una vez sepa como se construye la consulta y sepa que está bien, imprimiría el valor de la $insertSQL a ver en qué difiere.

Un saludo.
__________________
"Lo que escribo por aquí son sólo orientaciones a modo de ayuda y pueden estar equivocadas".

Última edición por El_Barba; 05/05/2010 a las 07:22

Etiquetas: oculto, fechas, campos
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 22:28.