Differenza data

intimoviro

Utente Attivo
18 Ago 2009
272
0
0
Salve ragazzi, devo calcolare i giorni di cui un prodotto deve essere catalogato come nuovo.

Nel database ho un campo data strutturato così, ad es.: 10/01/2010

lo prelevo e lo inserisco in una variabile, quindi:

$data_inserimento = $r['data_inserimento'];

Poi ho fatto in questo modo per confrontare il valore con la data attuale:

PHP:
$stringa = "$data_inserimento";
list($d, $m, $Y) = split('/', $stringa);
$data_ins = mktime("0","0","0", date("d"), date("m"), date("Y"));

$data_attuale = mktime("0","0","0", date("d"), date("m"), date("Y"));
$giorni_pubbl= intval(($data_ins - $data_attuale) / 86400); 

if ($giorni_pubbl <= 3){
....

Però non ho il risultato sperato, in pratica un prodotto deve essere calcolato come nuovo per 3 giorni, dopo no.

Dove sbaglio?

Grazie:)
 
Io utilizzerei questo script:
Se come riferimento hai
$data_inserimento = $r['data_inserimento'];

intanto preleverei i gg i mm e gli aaaa

quindi se il formato è 10/01/2010 quindi gg/mm/aaaa fai
PHP:
$data_inserimento=explode('/', $data_inserimento);
$gg=$data_inserimento[0];
$mm=$data_inserimento[1];
$aaaa=$data_inserimento[2];

ora puoi calcolare la data di 3 giorni dopo:

PHP:
$fine_nuovo=date("d/m/Y",mktime(0,0,0,$mese,$giorno+3,$anno));

Ora hai due stringhe: una con l'inizio e una con la fine del periodo novità.
Magari non è il metodo migliore, ma per la condizione io trasformo le date in interi e le confronto come semplici numeri, nel tuo caso:

PHP:
$data_inizio=intval($aaaa.$mm.$gg);
$data_fine=explode('/', $fine_nuovo);
$gg=$data_fine[0];
$mm=$data_fine[1];
$aaaa=$data_fine[2];
$data_fine=intval($aaaa.$mm.$gg);
$oggi=date("d/m/Y");
$data_oggi=explode('/', $oggi);
$gg=$data_oggi[0];
$mm=$data_oggi[1];
$aaaa=$data_oggi[2];
$data_odierna=intval($aaaa.$mm.$gg);

A questo punto la condizione sarà semplice:

PHP:
if (($data_odierna >= $data_inizio)&&($data_odierna <= $data_fine)) echo "L'articolo è nuovo!!!"

Spero ti sia stato utile, il problema con i campi data sono i vari formati e il fatto che sono trattati come delle stringhe, quindi non puoi farci direttamente il confronto... almeno... io ci sono impazzita alquanto prima di venirne a capo!!!!
 

Discussioni simili