Foros del Web » Programando para Internet » PHP »

Fechas en formularios

Estas en el tema de Fechas en formularios en el foro de PHP en Foros del Web. Hola: Necesito ayuda. Tengo un formulario en flash, que pasa los datos en metodo POST a una base de tados MYSQL. Todo lo hace bien, ...
  #1 (permalink)  
Antiguo 23/08/2008, 05:55
 
Fecha de Ingreso: enero-2008
Mensajes: 303
Antigüedad: 16 años, 3 meses
Puntos: 0
Fechas en formularios

Hola:

Necesito ayuda.


Tengo un formulario en flash, que pasa los datos en metodo POST a una base de tados MYSQL. Todo lo hace bien, excepto la fecha que no la reconoce
y la pone a 0000.00.00, en la bd la fecha la tengo como "DATA".
Os dejo el script que insertadatos:

$link = mysql_connect("localhost:3306","angel","navio2006" );
mysql_select_db("barco",$link);
$fecha = date("d.m. y");
// Con esta sentencia SQL insertaremos los datos en la base de datos
mysql_query("INSERT INTO barra_libre(fecha,nombre,edad,dia,personas,mail_tx t,comentario)
VALUES ('{$fecha}','{$_POST['nombre']}','{$_POST['edad']}','{$HTTP_POST_VARS['dia']}','{$_POST['personas']}','{$_POST['mail_txt']}','{$_POST['comentario']}')",$link);

Espero vuestra ayuda. Gracias
  #2 (permalink)  
Antiguo 23/08/2008, 05:59
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Respuesta: Fechas en formularios

Si quieres que la fecha sea la actual usa NOW() de SQL en lugar de $fecha.
Código PHP:
//[...]
VALUES ('NOW()','{$_POST['nombre']}'
//[...] 
Seguramente el problema es que la base de datos está esperando una fecha de tipo AAAA-MM-DD HH:mm:ss, y tú le estás enviando DD.MM.AA

  #3 (permalink)  
Antiguo 23/08/2008, 08:17
 
Fecha de Ingreso: enero-2008
Mensajes: 303
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Fechas en formularios

Hola David:

La variable $fecha, me funciona bien, y me plasma la fecha actual.

Es en la variable 'dia', donde desde el formulario llega una fecha en formato DD.MM.AAAA, efectivamente la bd espera AAAA.MM.DD.

Per me tiene intrigado que si lo hago desde un formulario con la aplicacion dreamweaver (insercion de registros), con el mismo formato de fecha (dd.mm.aaaa) lo traduce al formato de bd. (aaaa.mm.dd.)

Sunpongo que tiene algo que ver la funcion GetSQLValueString, pero no se como hacerlo en mi aplicación.
echale un vistazo, gracias.
  #4 (permalink)  
Antiguo 23/08/2008, 08:51
 
Fecha de Ingreso: agosto-2008
Mensajes: 5
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Fechas en formularios

Si la tabla esta como Date, estara esperando AAAA-MM-DD , con guion del medio, nunca he intentado probar si el punto funciona pero no deberias tener problemas si lo envias en este formato.

Para convertir la fecha al formato mysql y al reves decidi armarme 2 funciones , quizas ya exista algo pero era mas rapido hacerlo yo que buscarlo:

function fecha_mysql($s){// DD-MM-AAAA a AAAA-MM-DD
return substr($s,6,4)."-".substr($s,3,2)."-".substr($s,0,2);
}

function fecha_php($s){// AAAA-MM-DD a DD-MM-AAAA
return substr($s,8,2)."-".substr($s,5,2)."-".substr($s,0,4);
}

Saludos

gabriel
  #5 (permalink)  
Antiguo 23/08/2008, 11:50
 
Fecha de Ingreso: enero-2008
Mensajes: 303
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Fechas en formularios

Hola Gabriel:

Gracias por el script.

No se como llamar a la función que has creado a la hora de enviar datos a la bd.

Yo lo tengo así:

mysql_query("INSERT INTO barra_libre(fecha,nombre,edad,dia,personas,mail_tx t,comentario)
VALUES
('{$fecha1}','{$_POST'nombre']}','{$_POST'edad']}','{$_POST'dia']}','{$_POST['personas']}','{$_POST['mail_txt']}','{$_POST['comentario']}')",$link);

$_POST'dia' es la variable que contiene la fecha.

Gracias por tu ayuda.
Un saludo
Angel
  #6 (permalink)  
Antiguo 24/08/2008, 09:11
 
Fecha de Ingreso: agosto-2008
Mensajes: 5
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Fechas en formularios

Angel

Si la variable $_Post["dia"] , contiene la fecha en este formato "DD-MM-AAAA" ,

Simplemente llama la funcion asi: fecha_mysql($_Post["dia"]) , que va a retornarte "AAAA-MM-DD"

Saludos

Gabriel
  #7 (permalink)  
Antiguo 24/08/2008, 12:11
 
Fecha de Ingreso: enero-2008
Mensajes: 303
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Fechas en formularios

Nada Gabriel que no anda:

Lo hago como me dices, pero me dá error por los corchetes:
function fecha_mysql($_Post['dia']) {// DD-MM-AAAA a AAAA-MM-DD
return substr($s,6,4)."-".substr($s,3,2)."-".substr($s,0,2);
}
Gracias por tu tiempo, sal2
Angel
  #8 (permalink)  
Antiguo 24/08/2008, 12:14
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 15 años, 9 meses
Puntos: 103
Respuesta: Fechas en formularios

a ver,
Código PHP:

function fecha_mysql('".$_Post['dia']."') {// DD-MM-AAAA a AAAA-MM-DD
return substr($s,6,4)."-".substr($s,3,2)."-".substr($s,0,2);

dime si te funciona asi
  #9 (permalink)  
Antiguo 24/08/2008, 12:30
 
Fecha de Ingreso: enero-2008
Mensajes: 303
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Fechas en formularios

no funciona porque no php me da error por los corchetes.

Lo hice así:
function fecha_mysql($s) {// DD-MM-AAAA a AAAA-MM-DD
return substr($s,6,4)."-".substr($s,3,2)."-".substr($s,0,2);

y en la variable puse esto a la variable '{$_POST['dia']}'

'{".fecha_mysql($_POST['dia'])."}'

php admite el código sin errores, pero no me hace la transformación.

Gracias.Saludos
Angel
  #10 (permalink)  
Antiguo 30/08/2008, 18:31
 
Fecha de Ingreso: agosto-2008
Mensajes: 5
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Fechas en formularios

Angel,

La funcion es muy simple, deberias debugear a ver donde falla, metele un echo $s dentro de la funcion primero para ver si los datos estan llegando como correspode "31-12-1999" por ejemplo. Si so va bien quita el return y mete el echo ahi, a ver si la salida esta bien. Si es asi ya el tema viene por otro lado . Saludos

gabriel
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 03:05.