We’re trying to store something like a height or length in a database, such as feet inches. I cannot figure out the best way to approach this that stores clean data, but is also easy for the admin interface user to work with.
Example
5' 7"
I’m anticipating that I’ll need to sort by it later on as part of a search result function, but stored that way, it’s a string.
What seems most logical to me is to store the value as inches (numeric) in the database, but calculating that conversion to a single numeric value is far too much work for the people who will be using this content management system.
There’s also the concern that users may type it out any of several ways:
5' 7"
5'7"
5' 7''
5’ 7”
5‘ 7“
Don’t ask why…we all know people do stupid things.
We’re using Advanced Custom Fields on top of WordPress, so I could build a “length” or “height” field type for use in this situation, which would handle any calculations necessary for the user, but I probably need a good plan of attack for the solution before attempting to build out the add-on.
Racking my brains trying to figure how to best archive this data. Any solutions are appreciated.
Store it as inches. You can allow the user to enter it separately (one entry for feet, the other for inches), which allows for validations and removes the data entry issues, allows proper sorting easily (74″ is always more than 64″), and can easily be converted to feet/inches with division and modulo operations. (You can also do math on them much easier when stored as inches – it’s easier to figure out the difference between 60 and 74″ than it is the difference between 5’0″ and 6’2″.)
As far as the users being unable to do the conversion, don’t require them to do it. You do it – convert feet/inches to inches on the way to being stored in the database, and convert it back to display it or allow editing.
As I said, sorting is also much easier. Sorting numerics always keeps them in the proper order, while sorting character values can cause problems. For instance, numeric sorts always properly put
10after9, while character sorts would place10after1.