Во первых не ошибка, а предупреждение,
во вторых, как написал
Rsa97, кука у юзера изначально не имеет данного ключа, котрый вы задаете
ниже данной проверки, соответственно и куку вы, из-за вывода варнинга, уже не установите. Про то что все операции по записи в куки можно провести только до вывода чего-либо в браузер вы видимо не в курсе...
в третьих для такого рода проверок существует empty(), которая в том числе учитывает наличие переменной как таковой,
в четвертых - "код связанный с бд" - дырявый кошмар, кроме того что переменные вообще никак не проверяются(?), они еще и пихаются прямо в запрос, вместо использования подготовленных выражений,
в пятых код приведенный выше - адская каша из кода и разметки, возьмите за правило разделять код и разметку, если не по файлам, то хотя бы код сверху - разметка снизу, на основании уже вычисленных значений.