Normally, I would recommend a UUID/GUID (as NWCoder does in his link), but a UUID is 16 bytes of raw data, so it cannot be expressed in 15 bytes of data, far less in 15 alphanumeric characters.
So then the question becomes, how "unique"?
Unique to just the table would be easy, just use an incrementing value and an unsigned int or hex data.
Unique to the world would be more challenging. You could get close by generating a UUID, then hashing it with MD5, then taking as many bits of that as you can and converting it into base (10+26+26 for case sensitive, or 10+26 for case insensitive) and taking the first 15 characters.
Unique to just the user, but (as you describe later) unique in the presence of non-internet connectivity would most easily be done by simply generating a random string of 15 alphanumerics. This would likely be functionally equivalent to the UUID/MD5 method above - essentially the chance of collission would be very very small, and given the user is only going to have a handful of trips, there is essentially no chance of collissions (assuming you seed the random number generator appropriately).