Guia de TV escrito em PHP - problemas com datetime () e funções de banco de dados
Estou criando um guia de TV que lista os programas que estão chegando (e em algumas listas, exibições anteriores do passado), com todos os dados armazenados em um banco de dados. Ele roda em PHP, minha versão sendo 5.28 (atualizando para 5.30 ou 6 em breve).
Abaixo está um script que funciona (note que o campo airdate é armazenado como DATETIME no banco de dados):
[Aviso: O script não é meu, mas um genérico que eu baixei e modifiquei para atender às minhas próprias necessidades.]
<? //connect to mysql //change user and password to your mySQL name and password
mysql_connect("localhost","root","PASSWORD");
//select which database you want to edit
mysql_select_db("tvguide1");
//select the table
$result = mysql_query("select * from epdata3 order by airdate LIMIT 20;");
//grab all the content
while($r=mysql_fetch_array($result))
{
//the format is $variable = $r["nameofmysqlcolumn"];
//modify these to match your mysql table columns
$programme=$r["programme"];
$channel=$r["channel"];
#$airdate = strtotime($r['airdate']);
$airdate = strtotime($r['airdate']);
$now = strtotime("NOW");
$currentYear = date("Y", $now);
$yearOfDateFromDatabase = date("Y", $airdate);
if($yearOfDateFromDatabase == $currentYear)
$dateFormat = "F jS - g:ia"; // dateFormat = 24 December
else
$dateFormat = "F jS, Y - g:ia"; // dateFormat = 01 January 2010
$currentTime = date("g:ia", $airdate); // format of "Y" gives four digit year ie
2009 not 09
$airdateFormatted = date($dateFormat, $airdate);
$sDate = date("F dS, Y - g:ia",$airdate);
$episode=$r["episode"];
$setreminder=$r["setreminder"];
echo "<tr><td><b>$programme</b></td><td>showing on $channel</td>";
echo "<td>$airdateFormatted</td><td>$episode</td><td>$setreminder</td></tr>";
}
?>
Isso mostra todos os episódios que estão chegando, e se houver algum no próximo ano, será exibido com o ano, assim:
Programa de TV a seguir no canal1 30 de Dezembro de 2009 - 18:00 "Episode 1 - Photosynthesis" Set ReminderPrograma de TV exibido em seguida no Channel1 De 6 a 14 de janeiro "Episódio 2 - Atrás da música" Definir lembrete
Programa de TV em exibição no canal 1 7 de janeiro - 20:00 "Crimes de carros finais" Lembrete
No entanto, o que eu gostaria de fazer é remover certos registros após um período de tempo ter expirado (mas isso teria que ser definido em algum lugar no script, já que os comprimentos do programa variam) em vez de excluí-los manualmente do banco de dados. Alguns programas têm 30 minutos de duração, outros 60 minutos ... os comprimentos variam, basicamente.
O que eu gostaria de fazer é isso (observe que a primeira listagem não mostra a data como é a data atual):
Programa de TV em exibição no Canal 1 18:00 "CCTV Cities - Wigan" Set ReminderPrograma de TV em exibição no Channel1 09 de janeiro - 14: 45h "Império Romano - Uma História de seu Povo" Definir Lembrete
Programa de TV em exibição no canal 1 10 de janeiro - 20:00 "Celebrity 100 Worst Moments" Definir lembrete
mas eu não sei como configurá-lo para fazer isso com o PHP ou a função date (). Funciona bem com as datas e mostrando-as. Eu não tenho acesso a tarefas agendadas, pois isso está em uma instalação local do Apache no Windows Vista Home Edition.
Se alguém pudesse me ajudar a descobrir isso, seria muito apreciado - toda a ajuda é muito apreciada.
Eu não coloquei isso como um site ao vivo, já que está "no inferno no desenvolvimento" agora, e eu quero acertar as coisas o máximo possível.