Вы помещаете обработчик формы в тот же сценарий, что и форма? Если это так, он пытается выполнить обработку до того, как будут установлены значения записей (все выполняется).
Обернуть весь код обработки в условие, которое проверяет, была ли форма даже отправлена.
if(isset($_POST) && array_key_exists('name_of_your_submit_input',$_POST)){
//process form!
}else{
//show form, don't process yet! You can break out of php here and render your form
}
Скрипты выполняются сверху вниз при процедурном программировании. Вы должны убедиться, что программа знает, чтобы игнорировать логику обработки, если форма не была отправлена. Аналогично, после обработки вы должны перенаправить на страницу успеха что-то вроде
header('Location:http://www.yourdomainhere.com/formsuccess.php');
Я бы не стал привыкать подавлять уведомления или ошибки.
Пожалуйста, не обижайтесь, если я предлагаю, чтобы, если у вас возникли эти проблемы и вы пытаетесь создать корзину для покупок, вы вместо этого использовали зрелое решение для электронной коммерции, такое как Magento или OsCommerce. Корзина для покупок - это интерфейс, который требует высокой степени безопасности, и если вы боретесь с подобными проблемами POST, я могу гарантировать, что позже вас будут мучить головные боли. Есть много отличных стабильных выпусков, некоторые из которых так же просты, как простые объектные модели, которые доступны для скачивания.