Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Que la Fecha no inserte 0000-00-00

Estas en el tema de Que la Fecha no inserte 0000-00-00 en el foro de Mysql en Foros del Web. Que tal, Pues bien, tengo unos campos de fecha, que algunas veces son llenados por los usuarios y otras no. cuando estos campo no son ...
  #1 (permalink)  
Antiguo 21/12/2005, 11:47
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 22 años, 4 meses
Puntos: 4
Que la Fecha no inserte 0000-00-00

Que tal,

Pues bien, tengo unos campos de fecha, que algunas veces son llenados por los usuarios y otras no.

cuando estos campo no son llenados sucede que Mysql me pone automáticamente 0000-00-00

Y bueno, esto me resulta un poco molesto.

Ya intenté poniendo el campo NULL pero sigue insertando los ceros.

Hay alguna forma de evitar esto?

Les agradezco Mucho de antemano.
__________________
EL LIMITE ES EL UNIVERSO
  #2 (permalink)  
Antiguo 21/12/2005, 13:29
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 5 meses
Puntos: 5
Bueno la verdad yo tengo inserciones desde php a mi base de datos mysql y tengo campos de fecha que pongo en nulo y no tuve ningun problema, seria bueno que nos muestres como haces tus inserciones, porque no deberia darte problemas, pero de ejemplo deberia ser algo asi:
INSERT INTO tabla (col1, col2, col_fecha) values ('valor', 'valor2', NULL)

revisa que no este entre comillas por que si esta siempre te insertara 0000-00-00, saludos cya
  #3 (permalink)  
Antiguo 21/12/2005, 13:41
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 22 años, 4 meses
Puntos: 4
Ok, lo que pasa es que yo no tengo el "Control" del código, la solución que necesitaría es que opciones de campo pongo para evitar la inserción de estos ceros pasense como se pasen los datos ???

Saludos.
__________________
EL LIMITE ES EL UNIVERSO
  #4 (permalink)  
Antiguo 21/12/2005, 13:58
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 5 meses
Puntos: 5
ya mira si no tienes acceso al codigo que realiza las inserciones, no hay nada que puedas hacer segun veo yo modificando las opciones de tu tabla, talvez lo unico que te quedaria seria ver algo de Triggers que revisen los datos que tienes antes de un insert sobre esa tu tabla y ahi cambies tu la insercion, bueno el uso de los triggers tambien depende de la version de tu mysql que uses, bueno espero que te sirva, cya
  #5 (permalink)  
Antiguo 21/12/2005, 14:02
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 22 años, 4 meses
Puntos: 4
Los triggers van desde la vesión 5 de Mysql y mi host tiene la 4.1.9...............Vaya, ubiese creído que se podía solo con BD.

Saludos.
__________________
EL LIMITE ES EL UNIVERSO
  #6 (permalink)  
Antiguo 21/12/2005, 14:09
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 22 años, 4 meses
Puntos: 4
Fijate en el code de la Inserción:

Código PHP:
/*
LOS CAMPOS QUE LLEGAN, UNA VEZ HECHO UN PEQUEÑO PARSING, TIENEN LOS MISMOS
    NOMBRES QUE LOS CAMPOS EN LA BDD. ENTONCES MAS BIEN LEO LOS CAMPOS DE LA BDD
    Y CREO EL QUERY CON BASE EN ESTO
*/
    
include("parsing.php");
    
$sql="INSERT INTO clientes (";
    
$values='';
    
$fields mysql_list_fields($bddBdd"clientes");
    
$columns mysql_num_fields($fields);
    
$bandera=false;
    
$fechacrea=date("Y-m-d",time()); //Alista fecha creacion
    
for ($i 1$i $columns$i++) 
    {
        
$name=mysql_field_name($fields$i);
        if(
$bandera
        {
            
$sql.=",";
            
$values.=",";
        }
        
$sql.=$name;
        
$values.="'".$$name."'";
        
$bandera=true;
    }
    
$sql.=") VALUES(".$values.")";
    print(
$sql);    

    
$result=$SQL->sql_query($sql);
    print(
mysql_error());
    
$msg->add(MSG_ERROR"El formulario ha sido creado"); 
__________________
EL LIMITE ES EL UNIVERSO
  #7 (permalink)  
Antiguo 21/12/2005, 14:43
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 5 meses
Puntos: 5
Bueno segun veo en tu codigo, tienes una concatenacion dentro de tu for en esta parte:
Código PHP:
        $sql.=$name;
        
$values.="'".$$name."'";
        
$bandera=true
y seguro eso te generara una consulta de este tipo:
Código:
           INSERT INTO clientes (col1,col2, col3, ...) VALUES ('val1', 'val2', 'val3',...)
el problema es que si mandas null o cualquiero otra cosa que no tenga formato de fecha de mysql (0000-00-00) te insertara los ceros que no quieres si quieres insertar null tienes que mandar el NULL pero sin las comillas simples
  #8 (permalink)  
Antiguo 21/12/2005, 14:59
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 22 años, 4 meses
Puntos: 4
Pero para mandar ese Null sería necesario un condicional que verifique que el campo va empty no ???
__________________
EL LIMITE ES EL UNIVERSO
  #9 (permalink)  
Antiguo 21/12/2005, 15:18
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 5 meses
Puntos: 5
si exacto deberias considerar controlar si una variable esta vacia deberias concatenar NULL
Código PHP:
if (empty($name))
    
$values.="NULL"
mas o menos algo asi si es que no me estoy equivocando de variables, cya
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 23:31.