Search page loop banner image issue

You have the header inside the Loop, so of course it prints once for each result. Put that outside the Loop proper.

if (have_posts()) { ?>
  <img src="https://wordpress.stackexchange.com/questions/102754/banner.jpg" /><?php
  while ( have_posts() ) {
    the_post();
    // print contents
  }
}

Also, don’t use relative URLs in WordPress. You are in for all kinds of headache if you try.