Почему создается 2 лишних ряда на сайте?
Вы же в курсе что по семантике тег h1 должен быть в единственном экземпляре на странице?

Так же советую почитать как работают циклы. Потому код должен быть примерно такой

foreach ($array as $item) // У вас почему-то $products as $products
{
   <div class="item_main" id="<?= $item['id'] ?>">
            <div><?= $item['id'] ?></div>
            <div><?= $item['name'] ?></div>
            <div><?= $item['desc'] ?></div>
          </div>
}
foreach ($products as $products) {

Это какая IDE не матерится видя такое безобразие?)