user update profile for custom code

I can see

$topselected= get_the_author_meta( 'user_top', $user->ID ); ,

here you are using “user_top” as the meta_key but while updating you are using “user_chapter

update_usermeta( $user_id, 'user_chapters', $_POST['user_chapters'] );

Whatever name you are providing in <select name="user_top" id="user_top">, should be used in $_POST['']

So here you are using “user_top” as your select name, so it will be $_POST['user_top']