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

Actualizar Registros con fechas :'(

Estas en el tema de Actualizar Registros con fechas :'( en el foro de Bases de Datos General en Foros del Web. Hola amigos, tengo este codigo para desactivar resistros segun fecha, si son por 1, 2 ,3 o 9 meses esta funcion deberia cambiar su campo ...
  #1 (permalink)  
Antiguo 24/06/2004, 10:38
Avatar de benti  
Fecha de Ingreso: octubre-2001
Ubicación: Benidorm
Mensajes: 413
Antigüedad: 22 años, 6 meses
Puntos: 0
Actualizar Registros con fechas :'(

Hola amigos, tengo este codigo para desactivar resistros segun fecha, si son por 1, 2 ,3 o 9 meses esta funcion deberia cambiar su campo act = '0', pero algo no funciona y cambia todos los anuncios, no se como comparar la fecha actual con la que tiene registrada y si son 30, 60 , 90 o 180 dias los desactive, si alguno conoce un metodo mejor e el ke intento hacer, me lo diga. Muchas gracias.

PD: en la base de datos tengo los dias para cada registro, 30 ,60 etc.

Código PHP:
// Sacamos los anuncios activos
$res_anun =  mysql_query ("SELECT * FROM dr_anuncio WHERE act = '1' AND ") or die ("&output=error&msg=".mysql_error());
if (
mysql_num_rows($res_anun) > 0){
    while (
$filamysql_fetch_array($$res_anun)){    
        
        
// Desactivación de anuncios
        
if ($fila['con']=='30'){
        
$tiempo=- 1;
        }elseif (
$fila['con']=='60'){
        
$tiempo=- 2;
        }elseif ($
$fila['con']=='90'){
        
$tiempo=- 3;
        }elseif ($
$fila['con']=='180'){
        
$tiempo=- 6;
        }
        
        
$sql "UPDATE dr_anuncio SET act='0' WHERE fecha <= DATE_ADD(CURDATE(), INTERVAL '$tiempo' MONTH)"
        
$res mysql_query($sql) or die (mysql_error());
    }
    }else{
echo 
"No hay registros activos";
}

echo 
"Anuncios caducados DESACTIVADOS [volver]"
__________________
Seguro que ahora me sale mejor!
  #2 (permalink)  
Antiguo 24/06/2004, 13:21
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Fijate en el where, le estas diciendo que actualice los registros cuyo campo fecha sea MENOR O IGUAL a la fecha de dentro de x meses en el futuro.

Dices que tienes un campo con la fecha de alta y otro campo con el numero de dias. Si es asi podrias usar solo una consulta, usando datediff o date_sub, mira http://dev.mysql.com/doc/mysql/en/Da...functions.html

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 27/06/2004, 16:41
Avatar de benti  
Fecha de Ingreso: octubre-2001
Ubicación: Benidorm
Mensajes: 413
Antigüedad: 22 años, 6 meses
Puntos: 0
He repasado esa web esta muy bien gracias por la información, pero bueno he hecho esto y no funciona bien, comparo la fecha resultante con un número que para mi son días, pero no se como hacer que esa comparación se vea en días, pongo el código a ver si me podéis ayudar.
Código PHP:
$res_anun =  mysql_query ("SELECT * FROM dr_anuncio WHERE act = '1' ") or die ("&output=error&msg=".mysql_error());
if (
mysql_num_rows($res_anun) > 0){
    while (
$filamysql_fetch_array($res_anun)){    
        
// Desactivación de anuncios
        
if ($fila['con']=='30'){
        
$con=30// dias de duracion
        
$ahora='now()'// fecha actual
        
$fechafinmysql_query (DATE_SUB($ahora INTERVAL $con DAY)); // resto la feha actual con los dias 
            
if ($fechafin=>$con){ // comparo si la fecha resultante es mayor o iwal a los dias
                
$sql "UPDATE dr_anuncio SET act='0' WHERE id='$id'"
                
$res mysql_query($sql) or die (mysql_error());
                echo 
"Anuncio Desactivado";
            }else{
                echo 
"No se ha podido completar la operación";
            }
        }
    }else{
echo 
"No hay registros activos";
    }
}
echo 
"Anuncios caducados DESACTIVADOS [volver]"
__________________
Seguro que ahora me sale mejor!
  #4 (permalink)  
Antiguo 30/06/2004, 14:55
Avatar de benti  
Fecha de Ingreso: octubre-2001
Ubicación: Benidorm
Mensajes: 413
Antigüedad: 22 años, 6 meses
Puntos: 0
Cluster!!!! Help!!!!!!!!
A ver si me iluminas un poco jefe, ke yo ya no se ke hacer
__________________
Seguro que ahora me sale mejor!
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 15:42.