Your question is kind of all over the place. However, in terms of handing out access to specific rows, that is easy to deal with. You will need to lock the table if you are using MyISAM tables. InnoDB lets you do row-level locking instead. Alternatively you can do an update with a WHERE clause that will make it fail for rows that are already taken, and then check to see if it succeeded or not. I'd suggest storing some kind of timestamp and a user or session ID with your lock, so you can clear out abandoned ones after a certain period of time.