потому что у тех переменных другая область видимости. пхп не даёт обращаться к переменным снаружи функции просто так. их для этого надо указывать как глобальные.почему он должен ругаться? я же с формы данные принял и назначил их на эти переменные
вероятнее всего, что-то выводится перед заголовком. после того как началась отправка тела ответа, заголовки уже менять нельзя. пхп на это тоже ругается, но если он не настроен, загадочными будут даже самые банальные вещи.почему страница не переадресовывается после обновления header("Location: update_form_catalog.php");