Pracuję aktualnie nad projektem z PHP na uczelnię i przeglądarka zwraca takie oto błędy oraz zapytanie:
Notice: Undefined property: user_data_base::$login in C:\xampp\htdocs\php_new\user_data_base.php on line 17
Notice: Undefined property: user_data_base::$email in C:\xampp\htdocs\php_new\user_data_base.php on line 17
Notice: Undefined property: user_data_base::$password in C:\xampp\htdocs\php_new\user_data_base.php on line 17
INSERT INTO users.users ('login','email','password') VALUES('','','');
Próbowałem przesyłać z formularza metodą GET i POST , obie dają te same rezultaty a ja nie wiem już co robić. Jak widać zapytanie które jest przesyłane do bazy danych jest puste(wartości z formularza).
plik z formularzem wygląda tak:
<?php include 'user.php'; include 'user_data_base.php'; $user = new user_data_base($_POST['login'],$_POST['email'],$_POST['password']); $user->save(); } ?>
a pozostałe pliki php z klasami tak:
1.user.php
<?php class user{ private $login; private $email; private $password; function __construct($login,$email,$password){ $this->login = $login; $this->email = $email; $this->password = $password; } } ?>
2.user_data_base.php
<?php $class_db_file = 'data_base.php'; require_once($class_db_file); } else{ exit; } class user_data_base extends user{ function save(){ $db = new data_base(); $db->connect(); $sql = "INSERT INTO users.users ('login','email','password') VALUES('".$this->login."','".$this->email."','".$this->password."');"; $db->select($sql); } } ?>
3.data_base.php
<?php class data_base{ // na początek zmienny prywatne, niedostępne poza klasą // ustalamy zmienne na stałe które w pliku php ustalamy // za pomocą define(DB_HOST, 'db_host'); private $db_host = 'localhost'; // podstawiamy host bazy danych private $db_name = 'users'; // podajemy nazwę bazy danych private $db_user = 'user'; // podajemy nazwę użytkownika z uprawnieniami odczytu i zapisu private $db_passw = 'user'; // podajemy hasło dla użytkownika; // zmienne publiczne - dostępne poza klasą public $connection; // połączenie public $error; // ew. błąd zwrócony przez bazę danych //łaczenie z bazą danych public function connect(){ //sprawdzam czy uda mi się nawiązać połączenie z bazą danych //jeśli połączenie zostanie nawiązane podstawiam je pod zmienną $connection //sprawdzam czy uda mi się wybrać bazę danych, jeśli tak to podstawiam pod $connection połączenie i zwracam true $this->connection = $connection; return true; } //jeśli nie podstawiam pod zmienną error błąd MYSQL do późniejszego sformatowania else { return false; } } //w przypadku powodzenia zwraca wynik zapytania SQL public function select($sql){ //sprawdzam czy istnieje aktywne połączenie z bazą danych if($this->connection){ //ustawiam kodowanie dla połączenia na UTF-8 mysql_set_charset('utf8',$this->connection); //sprawdzam czy $sql zaiwera zapytanie SQL do bazy danych i czy nie jest pusta //wysyłam zapytanie do bazy jeśli operacja skończy się sukcesem to zwracam wynik return result; } //jeśli nie to błąd do $error else { return false; } } else{ $this->error = 'Błąd zapytania SQL'; return false; } } else{ $this->error = 'Brak połączenia z bazą danych'; return false; } }//eof select(); //funkcja która zwraca TRUE jako potwierdzenie pomyślnego wykonania operacji public function query($sql){ if ($this->connection) { mysql_set_charset('utf8', $this->connection); //różnica pomiędzy selectem jest tutaj return true; } //eof różnica else { return false; } } else { $this->error = 'Brak połączenia z bazą danych'; return false; } } else { $this->error = 'Błąd zapytania SQL'; return false; } }//eof query(); //zamknięcie połączenia z bazą danych public function close(){ if($this->connection){ return true; } else{ return false; } } else{ $this->error = 'Brak aktywnego połączenia'; return false; } }//eof close(); } ?>
Będę wdzięczny za jakąkolwiek wskazówkę.