Scusa ma la differenza tra le date è esatta ???
Il tuo unico problema è che non funziona l'if con numeri negativi ???
Se così fosse basterebbe invertire i valori da sottrarre.
$giorni = (time())/86400 - (mktime (0,0,0,$mese,$giorno,$anno) );
Anche perché logicamente la data odierna sarà sempre > o = alla data del timestamp preso dal db, e mai minore, quindi così facendo avresti sempre differenze > o = a zero.