How can I change page content for good once a button is pressed?

Do I understand problem correctly?

[QR1] -> Scan -> [Claim listing] -> [QR1->QR2 claimed] -> [QR2]

Here what comes to mind

class RenderPage 
  function gen_qr(is_claimed)
    if (is_claimed) return generate_qr2;
    else return generate_qr1


  function display_page()
    $qr_code = gen_qr(get_option('<page_id>_qr'));

    // on button click update_option('<page_id>_qr')

It’s a bit schematic, but I think you got the idea.

P.S. Just to clarify. Method display_page() renders page withrespect to the fact if listing is claimed (whatever that mean :D), it also has button, that sets “listing claimed” tag to database. qr_gen() generates code that will contain required information based on database option for corresponding page.