Typically, you want a while() loop when itterating through arrays. They are just faster than for() loops, and less confusing most of the time. It just works a lot better as a while() than a for() since you have less room for error most of the time. That's not to say it's the only way to go, but typically it's better.
I would guess your for() loop wasn't working because if you look at your array, all the keys will be "0". You incremented your key instead of just leaving it set at "0". It's an honest mistake that everyone makes. One way you could have solved this on your own is to print out the array structure so you can see how it looks. Then think about your code and what it's doing. If you had seen the array, you'd see that it's only one record long, with the key of "0". While you incremented $i properly to account for another row, you also lost the proper key. So when $i was 1, there was no array key 1, so you get a blank option.
Hope that makes sense.