Database cancellare dati vecchi da mysql

Stato
Discussione chiusa ad ulteriori risposte.

XxidroxX

Utente Gold
22 Aprile 2011
609
64
40
226
ciao a tutti, ho un problema ho un campo del db chiamato "data" int(11) dove inserisco le date, il problema che io vorrei fare:
if(campo data è più vecchio di 30 giorni) {
cancella quel campo
}
come posso fare, il problema è che in quel campo ci sono numeri strani tipo 2943821 ecc
 
Per il db ci sono campi di tipo date e datetime per le date, per ciò usare un campo int è superfluo

Per fare una differenza fra date eccoti un esempio con i timestamp, potresti usare anche la libreria datetime

Codice:
<?php

//strtotime('+30 days'); quando andrai a memorizzare la query metti

//quando recupererai le query
$data = time()-$row['data'];


if($data > 0)
                     //30 giorni superati
  else
       //30 giorni non superati

?>
 
quindi se ho capito:
creo un ciclio while dove inserisco

$data = time()-$row['data']; if($data > 0) ???

Ormai ho memorizzato tutti in int non posso cambiare
 
quindi se ho capito:
creo un ciclio while dove inserisco

$data = time()-$row['data']; if($data > 0) ???

Ormai ho memorizzato tutti in int non posso cambiare
Se devi ciclare piu date si, fai conto che time() è il timestamp attuale e il $row['data'] quello di quando è stata inserita
la query aumentato di 30 giorni, perciò il resto credo che lo capisci piu che bene :)
 
un ultima cosa nel'if devo mettere if($data>30) per far si che cancelli tutti i messaggi più vecchi di 30 giorni?
 
Ultima modifica:
un ultima cosa nel'if devo mettere if($data>30) per far si che cancelli tutti i messaggi più vecchi di 30 giorni?
:V

No se $data è maggiore di 0 vuol dire che è stato superato il limite dei 30 giorni perciò elimini il messaggio nel ciclo

Ti ricordo che:

time() - time() = 0
time() - $row['data'] = se negativo vuol dire che è ancora nel limite dei 30 giorni (+30 days) cioè maggiore di time() (timestamp attuale)
se invece è maggiore di 0 è superato, puoi mettere anche (>=) nel confronto
time() - strtotime('+30 days') = numero negativo

Ps:

quando viene pubblicato un messaggio viene inserito il timestamp di piu 30 giorni perciò
una volta superato il limite, vuol dire che è piu vecchio di 30 giorni
 
non capisco perche ad es: time()-$row['data'] sarebbe 29ott- 23ott = 6 che è maggiore di 0 per non sarebbe da eliminare
 
non capisco perche ad es: time()-$row['data'] sarebbe 29ott- 23ott = 6 che è maggiore di 0 per non sarebbe da eliminare
Qui ti confondi, il timestamp rappresenta il tempo trascorso in secondi da una data predefinita che sarebbe (1 gennaio 1970) dopo quella data sono negativi
 
Stato
Discussione chiusa ad ulteriori risposte.