Witam!
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:
<form method="POST" action="" onsubmit="">
<td align="center"><input type="text" name="login" size="40" maxlength="50" /></td> <td align="center"><input type="email" name="email" size="40" maxlength="50" /></td> <td><input type="password" name="password" size="40" maxlength="50" /></td> <td colspan="2" align="center"> <input name="rejestruj" type="submit" value="Rejestruj"/> <a href="index.html">Wstecz
</a>
<?php
if(isset($_POST['rejestruj'])) { 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{
echo 'Klasa ' .$class_db_file. ' nie została odnaleziona'; }
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
if($connection = mysql_connect($this->db_host, $this->db_user, $this->db_passw)) //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
if(isset($sql) && $sql!=''){ //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 (isset($sql) && $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ę.
Ten post edytował xsalok 18.01.2016, 21:10:36