problema clase, folosire proprietate in clasa extinsa
Scris: Vin Dec 02, 2016
Salut,
De cateva zile imi bat capul cu o anumita problema si nici ca-i dau de cap
Am clasa connection din care am extins clasa create_delete, ambele clase sunt instantiate in fisierul index.php.
Am sa redau mai jos cele doua clase si indexul unde sunt instantiate:
Fisierul class.connection.php ce contine clasa connection
Fisierul class.create_delete.php ce contine clasa create_delete
Fisierul index.php in care sunt instantiate clasele
Problema apare in a doua clasa atunci cand se executa interogarea $tabel query() pe server pentru a crea tabelul, daca nu folosesc OOP e destul de simplu, folosesc variabila care contine conectarea la baza de date si functioneaza, in schimb aici conectarea la baza de date o am in proprietatea $conectare a primei clase si in loc de a scrie $conectare->query($tabel) am incercat $this->conectare->query($tabel) plus inca cateva variante, toate cu acelasi rezultat, erori de diferite tipuri.
Ideea e ca nu stapanesc prea bine OOP si sunt inca in curs de invatare de aceea orice explicatie e foarte bine venita.
Multumesc!
De cateva zile imi bat capul cu o anumita problema si nici ca-i dau de cap
Am clasa connection din care am extins clasa create_delete, ambele clase sunt instantiate in fisierul index.php.
Am sa redau mai jos cele doua clase si indexul unde sunt instantiate:
Fisierul class.connection.php ce contine clasa connection
Cod: Selectaţi tot
<?php
class connection{
// proprietatile clasei
public $server;
public $user_name;
public $password;
public $database_name;
public $conectare;
// metoda construct care face conectarea la bd
public function __construct($server, $user_name, $password, $database_name){
$this->server = $server;
$this->user_name = $user_name;
$this->password = $password;
$this->database_name = $database_name;
$this->conectare = new mysqli($this->server, $this->user_name, $this->password, $this->database_name);
if (mysqli_connect_errno()){
exit('Conectare nereulita la baza de date: '. mysqli_connect_error());
}
else echo '<br> Esti conectat la baza de date => ' . $this->database_name;
}
}
?>
Cod: Selectaţi tot
<?php
include('class.connection.php');
class create_delete extends connection{
// proprietatile clasei
public $nume_tabel;
public $numar_coloane;
public $nume_coloane = array();
// metoda construct
public function __construct($nume_tabel, $numar_coloane, $nume_coloane){
$this->nume_tabel = $nume_tabel;
$this->numar_coloane = $numar_coloane;
$this->nume_coloane = $nume_coloane;
}
// metoda pt creare tabel
public function CREEAZA_TABEL(){
if($this->numar_coloane > 1){
// interogare sql pentru CREARE TABEL
$tabel = "CREATE TABLE `" . $this->nume_tabel . "` ( ";
for($i = 0; $i < $this->numar_coloane; $i++){
if($this->nume_coloane[$i] == 'id'){
$tabel .= "`" . $this->nume_coloane[$i] . "` INT(3) UNSIGNED AUTO_INCREMENT PRIMARY KEY, ";
}
elseif($this->nume_coloane[$i] !== 'data'){
$tabel .= "`" . $this->nume_coloane[$i] . "` CHAR(25) , ";
}
else{
$tabel .= "`" . $this->nume_coloane[$i] . "` TIMESTAMP ";
}
}
$tabel .= " ) CHARACTER SET utf8 COLLATE utf8_general_ci";
// Executa interogarea $tabel query pe server pentru a crea tabelul
if ($conectare->query($tabel) === TRUE) {
echo 'Table "users" successfully created';
}
else {
echo 'Error: '. $conectare->error;
}
}
}
}
?>
Cod: Selectaţi tot
<?php
$date_conectare = array("localhost", "root", "", "lacafeabd");
$date_tabel = array("user", "id", "nume", "e-mail", "parola", "data");
include('class.create_delete.php');
$clasa_conectare = new connection($date_conectare[0], $date_conectare[1], $date_conectare[2], $date_conectare[3]);
$clasa_creare_stergere = new create_delete(array_shift($date_tabel), count($date_tabel), $date_tabel);
echo $clasa_creare_stergere->CREEAZA_TABEL();
?>
Ideea e ca nu stapanesc prea bine OOP si sunt inca in curs de invatare de aceea orice explicatie e foarte bine venita.
Multumesc!