The options are being output within the loop, so are being repeated for each iteration of the loop.
To check within the loop and only output something on the first iteration:
while ( have_posts() ) : the_post();
if( $wp_query->current_post == 0 ):
// this is the first post
// output your options
endif;
// other loop stuff, title, content, etc.
endwhile;
similarly, to check if you are on the last post of the loop:
while ( have_posts() ) : the_post();
if( $wp_query->current_post == ( $wp_query->post_count - 1 ) ):
// this is the last post
endif;
endwhile;