I'm not too sure on other ways - I only ever use the time_t method.
I'm guessing the TIME data type takes a string of the form hh:mm:ss or some such thing. You could still write a generic function that draws 3 drop-down boxes - one each for hours, minutes and seconds.
This would give you 3 variables, say $hour, $minute and $second whilch you could join like this:
$thetime = $hour . ":" . $minute . ":" . $second
That should be ok to put in your SQL statements.
As for pulling data out, your drop-down drawing function could take the string as a 'default value' parameter, split it into its component parts (say explode() using ':' as the separator).
On the usability side, it could be annoying for user to have to scroll down 60 entries in the minute/second dropdowns - you could just include some of the entries - say only 0, 15, 30, and 45 seconds for example. (also a good idea to ensure the default options are close to what users will most likely be entering)
Otherwise, if you want to keep the input as a text box, you could just parse the inputted text (perhaps explode()ing it and putting it back together) to ensure you just have hh:mm - and then adding on a dummy :ss portion to keep the database happy.
Hope that helps, let me know if you'd like any clarification on anything 🙂