From 9d8133643773912d54fb0c7d86ef04e6acffa8c9 Mon Sep 17 00:00:00 2001 From: polo Date: Sat, 25 Feb 2023 02:27:22 +0100 Subject: =?UTF-8?q?lire=20tables,=20modifications=20BDD,=20cr=C3=A9ation?= =?UTF-8?q?=20documents=20et=20enveloppes=20latex,=20suppression=20de=20tr?= =?UTF-8?q?aits.php?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/model/Model.php | 95 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 89 insertions(+), 6 deletions(-) (limited to 'src/model/Model.php') diff --git a/src/model/Model.php b/src/model/Model.php index 4c1fb4d..6a7907c 100644 --- a/src/model/Model.php +++ b/src/model/Model.php @@ -1,16 +1,16 @@ db = parent::getInstance(); // connexion //~ $this->table = strtolower(__CLASS__); + //~ echo "TABLE = " . $this->table . "\n"; } // getters @@ -19,7 +19,25 @@ class Model extends DB return($this->table); } + public function getAll(): array + { + return get_object_vars($this); // retourne les propriétés de l'objet + } + // setters + public function setID(int $value = 0) + { + if($value === 0) + { + $this->ID = $this->db->lastInsertId(); // méthode de PDO (attention ne gère pas la concurence) + } + else + { + $this->ID = $value; + } + return($this); + } + public function hydrate(array $data): bool // $data = tableau associatif en entrée: nom_du_champ => valeur { foreach($data as $key => $value) @@ -41,6 +59,71 @@ class Model extends DB return true; } + // cette fonction reçoit des données d'un tableau simple, permettant d'associer des champs de formulaires aux noms différents des champs de la BDD + function hydrateFromForm(string $data_string, Object $Presta = NULL): bool // quand l'objet est $Details, on hydrate aussi $Presta + { + //~ $tableSize = count(StructTablesDB::$structureOfTables[$this->getTable()]); // int + + if($data_string !== '') + { + $data_array = explode('|', $data_string); // array + $check = false; + switch($this->getTable()) + { + case 'clients'; + if($data_array[0] == '') + { + echo "debug: données insuffisantes, le nom du client doit au minimum être renseigné\n"; + return false; + } + else + { + $check = $this->hydrate(['prenom_nom' => $data_array[0], 'code_client' => $data_array[1], 'adresse' => $data_array[2], 'code_postal' => $data_array[3], 'ville' => $data_array[4], 'telephone' => $data_array[5], 'courriel' => $data_array[6], 'apropos' => $data_array[7]]); + } + break; + case 'prestations'; // inutilisé + break; + case 'devis'; + $check = $Presta->hydrate(['mode_paiement' => $data_array[6]]); + if($check) + { + $check = $this->hydrate(['taches' => $data_array[0], 'total_main_d_oeuvre' => $data_array[1], 'pieces' => $data_array[2], 'total_pieces' => $data_array[3], 'deplacement' => $data_array[4], 'total_HT' => $data_array[5], 'delai_livraison' => $data_array[7], 'validite_devis' => $data_array[8], 'signature_devis' => $data_array[9]]); + } + break; + case 'factures'; + $check = $Presta->hydrate(['mode_paiement' => $data_array[10]]); + if($check) + { + $check = $this->hydrate(['taches' => $data_array[0], 'machine' => $data_array[1], 'OS' => $data_array[2], 'donnees' => $data_array[3], 'cles_licences' => $data_array[4], 'total_main_d_oeuvre' => $data_array[5], 'pieces' => $data_array[6], 'total_pieces' => $data_array[7], 'deplacement' => $data_array[8], 'total_HT' => $data_array[9]]); + } + break; + case 'cesu'; + $check = $Presta->hydrate(['mode_paiement' => $data_array[3]]); + if($check) + { + $check = $this->hydrate(['taches' => $data_array[0], 'duree_travail' => $data_array[1], 'salaire' => $data_array[2]]); + } + break; + case 'locations'; + //~ $check = $Presta->hydrate(['mode_paiement' => $data_array[11]]); + //~ if($check) + //~ { + $check = $this->hydrate(['designation' => $data_array[0], 'modele_description' => $data_array[1], 'valeur' => $data_array[2], 'etat_des_lieux_debut' => $data_array[3], 'etat_des_lieux_fin' => $data_array[4], 'duree_location' => $data_array[5], 'loyer_mensuel' => $data_array[6], 'loyers_payes' => $data_array[7], 'caution' => $data_array[8]]); + //~ } + break; + default: // inutilisé + echo "debug: table inconnue hydrateFromForm()"; + return false; + } + return $check; + } + else + { + echo "debug: annulation lors du formulaire\n"; + return false; + } + } + // exécuter le SQL // les attributs correspondent aux ? dans les requêtes préparées @@ -51,8 +134,8 @@ class Model extends DB if($attributes !== null) // requête préparée { - var_dump($sql); - var_dump($attributes); + //~ var_dump($sql); + //~ var_dump($attributes); $query = $this->db->prepare($sql); $query->execute($attributes); return $query; @@ -75,7 +158,7 @@ class Model extends DB //~ var_dump($this); foreach($this as $field => $value) { - var_dump($field); var_dump($value); + //~ var_dump($field); var_dump($value); // champs non renseignées et variables de l'objet qui ne sont pas des champs // note: avec le !== (au lieu de !=) une valeur 0 est différente de null if($value !== null && $field != 'db' && $field != 'table') -- cgit v1.2.3