$dbh->do("CREATE TEMPORARY TABLE Temp_Remind (idRemind INT AUTO_INCREMENT PRIMARY KEY, date DATE, year DATE, user INT, name VARCHAR(100), type CHAR(1), idNote INT, text VARCHAR(80))"); # Load dob data into temp table $query=$dbh->prepare("SELECT idPerson,hidden,fname,sname,DAY(dob),MONTH(dob),YEAR(dob),Friendship_idFriendship FROM Person WHERE MONTH(dob)>0"); $query->execute(); while (($id,$hidden,$fname,$sname,$day,$month,$year,$friendship)=$query->fetchrow_array()) { next unless $friendship and !$hidden; $name=$fname; $name.=' ' if $fname and $sname; $name.=$sname; $dbh->do("INSERT INTO Temp_Remind SET date='0000-$month-$day',year='$year-00-00',user=?,name=?,type='D',text='Birthday'", undef, $id, $name); } # Load anniversary data into temp table $query=$dbh->prepare("SELECT idPerson,hidden,fname,sname,DAY(date),MONTH(date),YEAR(date),name FROM Anniversary,Person WHERE Person_idPerson=idPerson AND MONTH(date)>0"); $query->execute(); while (($id,$hidden,$fname,$sname,$day,$month,$year,$text)=$query->fetchrow_array()) { next if $hidden; $name=$fname; $name.=' ' if $fname and $sname; $name.=$sname; $dbh->do("INSERT INTO Temp_Remind SET date='0000-$month-$day',year='$year-00-00',user=?,name=?,type='A',text=?", undef, $id, $name, $text); } # Load future note reminder data into temp table $query=$dbh->prepare("SELECT idPerson,idNotes,fname,sname,DAY(remindDate),MONTH(remindDate),YEAR(remindDate),note FROM Note,Person WHERE Person_idPerson=idPerson AND reminder=1 AND remindDate>=DATE_ADD(NOW(),INTERVAL -1 DAY) AND remindDateexecute(); while (($id,$noteid,$fname,$sname,$day,$month,$year,$text)=$query->fetchrow_array()) { $name=$fname; $name.=' ' if $fname and $sname; $name.=$sname; if (length($text) >= 80) { $text=substr($text,0,76); $text.='...'; } $dbh->do("INSERT INTO Temp_Remind SET date='0000-$month-$day',year='$year-00-00',user=?,name=?,type='N',idNote=?,text=?", undef, $id, $name, $noteid, $text); } $dbh->do("COMMIT"); # Display future reminders $query=$dbh->prepare("SELECT YEAR(NOW()),DATE_FORMAT(date,'%m-%d'),DATE_FORMAT(date,'%D %b'),YEAR(NOW())-YEAR(year),user,name,type,idNote,text FROM Temp_Remind WHERE date > CONCAT('0000-',MONTH(NOW()),'-',DAY(NOW())) ORDER BY date LIMIT 20"); $query->execute(); while (($thisyear,$rawdate,$date,$year,$user,$name,$type,$noteid,$text)=$query->fetchrow_array()) { # Deal with printing out the reminders... }