дава грешка, която не пречи, но не искам да се показва

anonimen

Super Moderator
Здравейте,
този код:

PHP:
$insert = "insert into users (username, password, email, birthdate, date";
if(isset($_POST['name'])){$insert .= ",name";}
$insert .= ") values('$user', '$pss', '$email', '$date', now()";
if(isset($_POST['name'])){$insert .= ",'$name'";}
$insert .= ")";

проверява дали съществува $name и ако съществува, sql изразът изглежда така:

insert into users (username, password, email, birthdate, date,name) values('$user', '$pss', '$email', '$date', now(),'$name')

A ако не съществува, $insert има друг стойност:

insert into users (username, password, email, birthdate, date) values('$user', '$pss', '$email', '$date', now())

И проблемът е, че ако във формуляра не е попълнено полето name, се извежда грешка(а кодът си работи - регистрира потребителя, но потребителят си мисли, че не се е регистрирал, презарежда страницата и тогава вече му казва, че има такъв потребител - аз почти изпитах това чувство:)).
Грешката, която дава е тази:
Notice: Undefined variable: name in ---/registration.php on line 146
И не мога да разбера защо - първо се проверява за съществуването на $name, и ако не съществува, не се добавя $name към $insert.
Ред 146 е този:
PHP:
if(isset($_POST['name'])){$insert .= ",'$name'";}
 
Имаш ли на променлилвата $name присъединен като стойност $_POST['name'];

Ако да - виж по-долу.

Пробвай като проверка това:

Код:
if(isset($_POST) && isset($_POST['name'])

Пък като цяло за по-лесно можеше да напрвиш така

1. Присъединяваш $_POST информацията от формата на променливи.
2. Проверваш дали е set-нато $_POST['name'];
2.1. Aко е - $name = $_POST['name'];
2.2. Aко не е - $name = '';
3. Просто си изпълняваш заявката:

Код:
insert into users (username, password, email, birthdate, date,name) values('$user', '$pss', '$email', '$date', now(),'$name')
 
Щом не ти пречи
Код:
error_reporting(E_ALL ^ E_NOTICE);
изключва notice във файла в който го поставиш
 
Мерси, Fakeheal, че ме подсети - бях съвсем забравил да сложа $name=$_POST['name'] Но все пак, нали всички променливи, предадени с get и post, стават автоматично глобални? Поне аз така си мислех.
А за функцията, която изключва всички грешки, не се налага да я ползвам - щом грешката може да се отстрани, то error_reporting е съвсем безполезна.

Пиша сега, защото ме мързеше тогава(като ми отговорихте) и чак сега се сетих :)
 

Back
Горе