Foros del Web » Programando para Internet » PHP »

Problemas al insertar fecha

Estas en el tema de Problemas al insertar fecha en el foro de PHP en Foros del Web. Hola a todos. Saludos. Tengo el siguiente problema. Tengo un formulario desde donde inserto información en una tabla mysql. Entre los datos que inserto hay ...
  #1 (permalink)  
Antiguo 12/09/2008, 08:07
 
Fecha de Ingreso: agosto-2005
Mensajes: 152
Antigüedad: 18 años, 7 meses
Puntos: 0
Problemas al insertar fecha

Hola a todos.
Saludos.
Tengo el siguiente problema.
Tengo un formulario desde donde inserto información en una tabla mysql. Entre los datos que inserto hay una fecha, pues en la tabla hay un campo tipo datetime.
En mi búsqueda encontré una función para cambiar el formato de la fecha a normal y a mysql.
Como todos saben el formato de las fechas en mysql es año-mes-dia.
Bueno aquí les pongo el código:
Código PHP:
<?php
//Convierte fecha de mysql a normal
function cambiaf_a_normal ($fecha){
    
ereg"([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})"$fecha$mifecha); 
    
$lafecha=$mifecha[3]."/".$mifecha[2]."/".$mifecha[1]; 
    return 
$lafecha
}
//Convierte la fecha de normal a mysql
function cambiaf_a_mysql ($fecha){
    
ereg"([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})"$fecha$mifecha); 
    
$lafecha=$mifecha[3]."-".$mifecha[2]."-".$mifecha[1]; 
    return 
$lafecha;     
}
?>
<?php
// incluimos el archivo de conexion
$db_link mysql_connect('xxx''xxx''xxx');
if(!
$db_link){
    die(
'No se pudo conectar: ' mysql_error());
}
$db_selected mysql_select_db('sistemanoticias'$db_link);
if(!
$db_selected){
    die(
'No se selecciono la BD: ' mysql_error());
}
//definición de variables
$enviar $HTTP_POST_VARS['enviar'];
$notTitulo $HTTP_POST_VARS['notTitulo'];
$notTexto $HTTP_POST_VARS['notTexto'];
$notCategoriaID $HTTP_POST_VARS['notCategoriaID'];
$fechanot $HTTP_POST_VARS['fechanot'];
// recibimos el formulario
if(isset($HTTP_POST_VARS['enviar']) && $HTTP_POST_VARS['enviar'] == 'Enviar'){
    
// comprobamos que el formulario no envie campos vacios
    
if(!empty($HTTP_POST_VARS['notTitulo']) && $HTTP_POST_VARS['notTexto'] &&
    
$HTTP_POST_VARS['notCategoriaID'] && $HTTP_POST_VARS['fechanot']){
        
// creamos las variables y les asignamos los valores a insertar
        
$notTitulo $HTTP_POST_VARS['notTitulo'];
        
$notTexto $HTTP_POST_VARS['notTexto'];
        
$notCategoriaID $HTTP_POST_VARS['notCategoriaID'];
        
$fechanot $HTTP_POST_VARS['fechanot'];
        
// hacemos el INSERT en la BD*/
        
$sqlInsertNot mysql_query("INSERT INTO sn_noticias
                                     (notTitulo, notTexto, notCategoriaID, fechanot)
                                     VALUES ('$notTitulo', '$notTexto', '$notCategoriaID', '"
.cambiaf_a_normal($fechanot)."')",
                                     
$db_link) or die(mysql_error());
        
// enviamos un mensaje de exito
        
echo "Los datos fueron gurdados correctamente";
    }else{
        
// si el formulario envia algun campo vacio
        // enviamos un mensaje de error
        
echo "Debe llenar todos los campos del formulario";
    }
}
?>
<!-- el formulario -->
<form name="noticia" action="<?php $_SERVER['PHP_SELF']; ?>" method="POST">
    <p>
    Título de la Noticia<br />
    <input type="text" name="notTitulo" size="50" />
    </p>
    <p>
    Texto de la Noticia<br />
    <textarea name="notTexto" rows="10" cols="50"></textarea>
    </p>
    <p>
    Fecha de la Noticia<br/>
    <input type="text" name="fechanot" value="<?php echo cambiaf_a_mysql($fechanot);?>" />
    </p>
    <p>
    Categoría<br />
    <select name="notCategoriaID">
        <option value="">Escoger de la Lista</option>
    <?php
    
// asignamos una categoria a la noticia
    // mediante un select
    
$sqlQueryCat mysql_query("SELECT * FROM sn_categorias"$db_link)
                                or die(
mysql_error);
    
// creamos un bucle while
    // que nos muestre todas las categorias
    // que tenemos guardadas en la BD
    
while($rowCat mysql_fetch_array($sqlQueryCat)){
        echo 
"<option value='$rowCat[cat_ID]'>$rowCat[catCategoria] - $rowCat[cat_ID]</option>";
    }
    
?>
    </select>
    </p>
    <p>
    <input type="submit" name="enviar" value="Enviar" />
    </p>
</form>
Exactamente lo que sucede es que la fecha se inserta en la tabla en la forma que debe hacerlo, es decir respetando el formato de mysql (año mes dia), pero el valor es incorrecto. En el día de hoy que es 12 de Septiembre del 2008. En el formulario pongo 12-09-2008 y cuando voy a la base de datos aparece el valor 2020-09-12.
No se a que se debe esto. La fecha del sistema está correcta. Dónde esta el problema?
Muchas Gracias.

Última edición por efelix; 12/09/2008 a las 08:09 Razón: Modificar datos
  #2 (permalink)  
Antiguo 12/09/2008, 08:14
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Problemas al insertar fecha

Haz colocado algun codigo para imprimir lo que retorna la funcion. podria ser que desde haya este el problema y no en el insert.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #3 (permalink)  
Antiguo 12/09/2008, 08:16
 
Fecha de Ingreso: agosto-2006
Mensajes: 16
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Problemas al insertar fecha

En la mysql_query,
¿No deberias usar cambiaf_a_mysql($fechanot) en lugar de cambiaf_a_normal($fechanot)?
Al fin y al cabo tienes que insertar una fecha mysql, y la funcion que usas pasa la fecha de mysql a normal.

No se si me entiendes,
Saludos
  #4 (permalink)  
Antiguo 12/09/2008, 08:21
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Problemas al insertar fecha

Prueba con esto:

Cita:
function cambiaf_a_normal ($fecha){
ereg( "([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $fecha, $mifecha);
$lafecha=$mifecha[3]."/".$mifecha[2]."/".$mifecha[1];
return $lafecha;
}
//Convierte la fecha de normal a mysql
function cambiaf_a_mysql ($fecha){
ereg( "([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})", $fecha, $mifecha);
$lafecha=$mifecha[3]."-".$mifecha[2]."-".$mifecha[1];
return $lafecha;
}
Y es cierto lo que dice el compañero TLXSevilla, si insertaras, debes convertirla a mysql.
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #5 (permalink)  
Antiguo 13/09/2008, 09:15
 
Fecha de Ingreso: agosto-2005
Mensajes: 152
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Problemas al insertar fecha

Muchas Gracias a todos ustedes, en especial a TLXSevilla, ya solucioné el problema.
Muchas Gracias.
  #6 (permalink)  
Antiguo 13/09/2008, 09:29
 
Fecha de Ingreso: agosto-2005
Mensajes: 152
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Problemas al insertar fecha

Muchas Gracias a todos ustedes, en especial a TLXSevilla, ya solucioné el problema.
Muchas Gracias.
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 04:01.