Как сделать чтобы при отправки данных формы через action, не открывалась та страница на которую данные передаются?
Рассмотрите 2 варианта 
1. Выполняйте редирект со страницы на которую вы отправляете запрос(action) через header(Location: $uri)
2. Используйте асинхронный запрос к файлу, который обрабатывает форму на JS, например AJAX
Если я правильно понял, у вас форма разбита на две страницы. 
Простейший способ:<form action="<?php echo $_POST['action'] ? $_POST['action'] : '' ?>" method="post">


  <section <?php echo $_POST['action'] ? 'style="display:none"' : '' ?>>
    <!-- Тут все поля первой страницы формы -->
    <input type="hidden" name="action" value="handler.php"> <!-- Открываем финальную -->
  </section>


  <section <?php echo $_POST['action'] ? '' : 'style="display:none"' ?>>
    <!-- Тут все поля второй страницы формы -->
  </section>


  <input type="submit">

  
</form>
Ваша форма всегда будет хранить в себе все поля, но в зависимости от обработчика будет показывать ту или иную часть полей. Ну и в поля нужно подставлять значения из предыдущего шага, если они есть.