Условие срабатывает как и положено.
Писать что-то в массив $_POST не имеет смысла, он будет всегда создан новым при следующем запросе.
Точно так же между запросами не сохраняются переменные. И получается, что вы каждый раз сбрасываете счетчик в ноль, а тут же увеличиваете его до единички.
Данные между запросами можно хранить в сессии.
session_start();
$num = $_SESSION['num'] ?? 0;
$num++;
$_SESSION['num'] = $num;
Или передавать через ту же форму
$num = (int)($_POST['num'] ?? 0));
$num++;
<input type="hidden" name="num" value="<?=$num?>">