ok, then mysql locks are out because of two characteristics: a lock is released when your connection terminates, and a lock that allows you to write will block all access to the table.
also transactions are out since a transaction is rolled back when the connection is terminated, which will happen after your display page loads.
so, the only thing left is an application level lock. the mysql implementation using get_lock() and release_lock() are out since they share a characteristic with table locks and transactions: the lock is released when the connection is terminated.
that means you will need to implement your own application lock. i suggest you implement this by creating a table called applock with one column called lockname. make it the primary key. when the super-user goes to update the page, insert a row in to the table with a meaningful name for this process, like priceupdate (or whatever it is you're updating). if the insert fails due to the uniqueness constraint of the primary key, return an error that someone else is already updating the table. when the super-user committs their changes, delete that entry from the table.
similarly, when a regular user tries to update the row (or even better, before they're given the chance to update it) look in the applock table for a row called priceupdate. if the row exists, don't let the commit the update.