Потому что вы пытаетесь присвоить переменной $name2 значение, которого еще не существует — $_POST['name2'] еще не получен. Проверяйте через isset или через тернарник, тогда не будут появляется предупреждения.
Разберите через explode REQUEST_URI и делайте любые проверки.
Вообще, привычная схема — /controller/action/params. В вашем случае, нужно было бы просто искать класс контроллера cart и вызывать его, но, как я понимаю, у вас нет никакого MVC в приложении.
Как минимум для общего развития, чтобы не теряться в тех же цмс-ках, которые без шаблонизаторов работают. Если вы знаете JS, то освоить php на совсем базовом уровне — дело нескольких дней.