Posso oficialmente dizer que comecei o meu primeiríssimo projecto em PHP.
O TekPT recebeu essas honras já que o sistema que estou a usar actualmente não me satisfaz e eu achei que era uma boa forma de começar a aprender as lides do php e mysql. So far so good, estou a gostar bastante de me atirar para isto mesmo que continue a não ter muito jeito para a coisa… Claro que isto vai lá com a prática.
Basicamente estou a fazer um script simples que vai buscar os feeds, verifica se já existem na base de dados e em caso negativo adiciona os novos. Depois terei de fazer o output para os diversos formatos (HTML/RSS/Atom).
Agora algo que me anda aqui a dar a volta ao miolo e que não encontrei ainda solução: organizo os varios posts por data antes ou depois de os colocar na base de dados? É que eu não conheço assim muito bem SQL portanto não sei bem como lidar com esta questão, só sei que se eles ficassem todos ordenados por data na DB dava mais jeito (notem que eu vou ter IDs únicos para cada post).
Eu sei que este problema é bastante básico mas também convenhamos: eu comecei nestas lides há 2 dias.
9 Comentários
Alcides Fonseca
24 de Setembro de 2007 ás 22:12 []
Devias guardar a data na base de dados, em MySQL existe um formato próprio, mas em PHP eu curto usar um int(11) com o Unix time
São gostos…
Goodluck com PHP, mas aconselhava-te a aprender python ou rails
Dextro
24 de Setembro de 2007 ás 22:17 []
As minhas datas já estão em unix time (mas obrigado pela dica para o tamanho da DB
), a minha duvida é se ordeno as entradas antes de as enviar para a base de dados ou se as ordeno depois durante a leitura.
Para que ir aprender algo novo quando o que sei de C é tão semelhante com o php com quem convivo há tanto tempo, que é tão bem suportado em virtualmente todo o lado e que pura e simplesmente faz o que eu preciso.
Python soa-me a um pesadelo á espera de acontecer pelo pouco que li dos tutorials e farto-me de ouvir falar de rails apesar de não perceber o que faz a mais do que o php. “If it ain’t broke don’t fix it”
Cláudio Franco
25 de Setembro de 2007 ás 10:18 []
Ordena sempre pela data e utiliza o URL de cada post como o “identificador” único (pelo menos junto da fonte).
Assim, sempre que alguém na fonte actualizar um Post e altere por exemplo a data tens sempre o URL do post como referência “única”.
falso
25 de Setembro de 2007 ás 11:48 []
Tipo…
Tabela
|id|title|content|url|date
id autoinc, e o date timestamp
depois quando fazes a query… “order by timestamp” problem solved.
Dextro
25 de Setembro de 2007 ás 16:47 []
Sim, já vou usar os links como identificadores únicos de cada entrada.
Se eu quiser ir buscar as ultimas x entradas ordenadas pelo timestamp o MySQL ordena antes de me dar os resultados?
falso
27 de Setembro de 2007 ás 00:49 []
select * from tabela order by timestamp limit 0,x
Dextro
27 de Setembro de 2007 ás 19:58 []
Deduzo então que a resposta é sim
Cláudio Franco
28 de Setembro de 2007 ás 16:53 []
Sim ordena-te, seja timestamp, date, date-time, etc
Sinceramente, aconslho datetime… isto porque até à pouco tempo (talvez tenha mudado nao sei) o timestamp do MySQL era diferente do PHP.
Ou seja, ao fazeres date(“Y-m-d”,$timestamp_do_mysql); ia devolver a data por defeito do PHP 1997 ou assim.
Terias que OU traduzir o timestamp do MySQL para unixtimestamp tipo
SELECT UNIXTIMESTAMP(data) From tabela
ou utilizas como DATETIME e depois utilizas o strtotime para traduzir o datetime para o timestamp UNIX do PHP.
Mas admito, o tal comportamento do Mysql timestamp pode já ter mudado.
Dextro
28 de Setembro de 2007 ás 19:15 []
Eu tenho mesmo um espaço na tabela para as datas em unixtime logo basta-me ordenar por esses 11 inteiros o que é relativamente simples
A minha única duvida era mesmo se num caso muito excepcional não podia acontecer o post das 23:30 aparecer quando o das 23:31 que era mais recente não aparecia porque tinha sido introduzido mais cedo na base de dados. Isto prendia-se com o facto de eu conhecer mal o MySQL mas como é óbvio fui eu a introduzir problemas onde eles não existem