Regarding timestamps: I suppose the right answer depends on whether you want to manipulate and/or filter records based on dates in SQL or on PHP. If you never do any date manipulation in SQL and always do it all in PHP, then INT for a timestamp isn't bad.
But if you ever want to do something such as "Find all records within the last week" or "Find all records between these two dates" then I *STRONGLY* advocate for using a DATETIME field.
And then the SQL becomes not only trivial but also readable:
You *can* do this even if you have an INT field as a timestamp, since MySQL does include functions to convert back and forth:
SELECT * FROM table WHERE datefield > DATE_SUB( NOW(), INTERVAL 1 WEEK )
SELECT * FROM table WHERE datefield BETWEEN '2011-6-1' AND '2011-7-15'
But that means that your queries won't be as efficient, especially if datefield is indexed. Because now MySQL can't use efficient indexing techniques, as it has no choice but to run the FROM_UNIXTIME function on EVERY record in the table.
SELECT * FROM table WHERE FROM_UNIXTIME(timestampfield) > DATE_SUB( NOW(), INTERVAL 1 WEEK )