From dedbe2f5cee33431c1299c7f0dbef4e247dc2447 Mon Sep 17 00:00:00 2001 From: polo Date: Mon, 19 Dec 2022 02:51:03 +0100 Subject: nouveau client main.php en cours --- src/model/CESU.php | 5 +---- src/model/Clients.php | 13 +++++++++---- src/model/DevisFactures.php | 5 +---- src/model/Locations.php | 5 +---- src/model/Model.php | 14 +++++--------- src/model/Prestations.php | 5 +---- src/model/StructTablesDB.php | 4 ++-- src/model/traits.php | 16 ++++++++++++++++ 8 files changed, 36 insertions(+), 31 deletions(-) create mode 100644 src/model/traits.php (limited to 'src/model') diff --git a/src/model/CESU.php b/src/model/CESU.php index 4679da2..28a54a8 100644 --- a/src/model/CESU.php +++ b/src/model/CESU.php @@ -12,10 +12,7 @@ class CESU extends Model private $duree_travail; private $salaire; - public function __construct() - { - $this->table = self::TABLE; // => Model::$table - } + use ModelChildren; // setters public function setID(int $value) diff --git a/src/model/Clients.php b/src/model/Clients.php index 1256458..816cff3 100644 --- a/src/model/Clients.php +++ b/src/model/Clients.php @@ -10,10 +10,7 @@ class Clients extends Model public $code_client; public $commentaires; - public function __construct() - { - $this->table = strtolower(__CLASS__); // simple parce que la classe a le nom de la table - } + use ModelChildren; // renseigne parent::table //~ public function set(string $variable, $value) //~ { @@ -47,4 +44,12 @@ class Clients extends Model $this->commentaires = $value; return($this); } + + + public function newRow(array $entry) + { + $this->hydrate(['prenom_nom' => $entry[0], 'adresse' => $entry[1], 'code_client' => $entry[2], 'commentaires' => $entry[3]]); + $this->create(); + $this->setIdFromLastInsertID(); + } } diff --git a/src/model/DevisFactures.php b/src/model/DevisFactures.php index be733dd..218ebfe 100644 --- a/src/model/DevisFactures.php +++ b/src/model/DevisFactures.php @@ -19,10 +19,7 @@ class DevisFactures extends Model private $deplacement; private $total_HT; - public function __construct() - { - $this->table = strtolower(__CLASS__); - } + use ModelChildren; // setters public function setID(int $value) diff --git a/src/model/Locations.php b/src/model/Locations.php index 2aa175a..b788d43 100644 --- a/src/model/Locations.php +++ b/src/model/Locations.php @@ -15,10 +15,7 @@ class Locations extends Model private $loyer_mensuel; private $total_HT; - public function __construct() - { - $this->table = strtolower(__CLASS__); - } + use ModelChildren; // setters public function setID(int $value) diff --git a/src/model/Model.php b/src/model/Model.php index ad9e6c7..9effbe7 100644 --- a/src/model/Model.php +++ b/src/model/Model.php @@ -3,7 +3,7 @@ class Model extends DB { - private $db; // instance de PDO + protected $db; // instance de PDO protected $table; // <= enfant //static protected $tableStructure; @@ -12,7 +12,6 @@ class Model extends DB $this->db = parent::getInstance(); // connexion } - // setters (plusieurs en même temps) public function hydrate(array $data) // $data = tableau associatif en entrée: nom_du_champ => valeur { @@ -51,7 +50,7 @@ class Model extends DB } - // méthodes CRUD qui marchent (les spécifiques sont dans les classes enfant) + // méthodes CRUD // create INSERT public function create() // = write @@ -79,17 +78,17 @@ class Model extends DB // read SELECT - public function readAll() + public function readAll() // obtenir une table { $query = $this->execQuery('SELECT * FROM ' . $this->table . ';'); // fonctionne aussi sans le point virgule dans le SQL!! return($query->fetchAll()); } - public function findById(int $id) + public function findById(int $id) // obtenir une entrée avec son ID { return($this->execQuery('SELECT * FROM ' . $this->table . ' WHERE id = ' . $id)->fetch()); } - public function find(array $criteria) + public function find(array $criteria) // obtenir une entrée avec un tableau associatif 'champ' => 'valeur' { $fields = []; $values = []; @@ -140,7 +139,6 @@ class Model extends DB // DBStructure::${self::$tableStructure} permet de nommer une variable statique de classe static public function createTables() { - //~ var_dump(StructTablesDB::$structureOfTables); foreach(StructTablesDB::$structureOfTables as $tableName => $oneTable) { //var_dump(StructTablesDB::${self::$tableStructure}); => propriété statique de classe dans une variable @@ -156,7 +154,5 @@ class Model extends DB parent::getInstance()->exec($query); // merci singleton! } - - } } diff --git a/src/model/Prestations.php b/src/model/Prestations.php index 4f58d70..32f9768 100644 --- a/src/model/Prestations.php +++ b/src/model/Prestations.php @@ -13,10 +13,7 @@ class Prestations extends Model private $mode_paiement; private $commentaires; - public function __construct() - { - $this->table = strtolower(__CLASS__); - } + use ModelChildren; // setters public function setID(int $value) diff --git a/src/model/StructTablesDB.php b/src/model/StructTablesDB.php index cf6de5d..ee4baf1 100644 --- a/src/model/StructTablesDB.php +++ b/src/model/StructTablesDB.php @@ -10,10 +10,10 @@ class StructTablesDB // la table prestations est liée à la table clients // les tables devis_factures, cesu et locations sont liées à la table prestations 'clients' => ['ID' => 'INTEGER', 'prenom_nom' => 'TEXT', 'adresse' => 'TEXT', 'code_client' => 'TEXT', 'commentaires' => 'TEXT'], - 'prestations' => ['ID' => 'INTEGER', 'ID_client' => 'INTEGER', 'combientieme_fois' => 'INTEGER', 'code_presta' => 'TEXT', 'date' => 'INTEGER', 'type' => 'TEXT', 'mode_paiement' => 'TEXT', 'commentaires' => 'TEXT'], + 'prestations' => ['ID' => 'INTEGER', 'ID_client' => 'INTEGER', 'combientieme_fois' => 'INTEGER', 'code_presta' => 'TEXT', 'date' => 'INTEGER', 'type_presta' => 'TEXT', 'mode_paiement' => 'TEXT', 'commentaires' => 'TEXT'], 'devisfactures' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'validite_devis' => 'TEXT', 'signature_devis' => 'TEXT', 'taches' => 'TEXT', 'machine' => 'TEXT', 'OS' => 'TEXT', 'donnees' => 'TEXT', 'cles_licences' => 'TEXT', 'total_main_d_oeuvre' => 'REAL', 'pieces' => 'TEXT', 'total_pieces' => 'REAL', 'deplacement' => 'REAL', 'total_HT' => 'REAL'], 'cesu' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'taches' => 'TEXT', 'duree_travail' => 'TEXT', 'salaire' => 'REAL'], - 'locations' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'nature_bien' => 'TEXT', 'modele' => 'TEXT', 'valeur' => 'REAL', 'etat_des_lieux_debut' => 'TEXT', 'etat_des_lieux_fin' => 'TEXT', 'duree_location' => 'TEXT', 'loyer_mensuel' => 'REAL', 'total_HT' => 'REAL'] + 'locations' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'designation' => 'TEXT', 'modele_description' => 'TEXT', 'valeur' => 'REAL', 'etat_des_lieux_debut' => 'TEXT', 'etat_des_lieux_fin' => 'TEXT', 'duree_location' => 'INTEGER', 'loyer_mensuel' => 'REAL', 'loyers_encaisse' => 'INTEGER', 'caution' => 'INTEGER'] ]; // les types de variables de sqlite sont peu nombreux et autorisent un typage automatique diff --git a/src/model/traits.php b/src/model/traits.php new file mode 100644 index 0000000..43d9b7f --- /dev/null +++ b/src/model/traits.php @@ -0,0 +1,16 @@ +table = strtolower(__CLASS__); + } + + public function setIdFromLastInsertID() // à faire juste après l'écriture d'une nouvelle entrée + { + $this->db = parent::getInstance(); + $this->ID = $this->db->lastInsertId(); // méthode de PDO + } +} -- cgit v1.2.3