From 7d564efbccc4b361d2fa2db2902fb35882304aae Mon Sep 17 00:00:00 2001 From: polo Date: Tue, 20 Dec 2022 03:31:33 +0100 Subject: recherche de clients --- src/model/Clients.php | 32 +++++++++++++++++++++++++++++--- src/model/Model.php | 16 +++++++++++----- 2 files changed, 40 insertions(+), 8 deletions(-) (limited to 'src/model') diff --git a/src/model/Clients.php b/src/model/Clients.php index 816cff3..92a4b31 100644 --- a/src/model/Clients.php +++ b/src/model/Clients.php @@ -46,10 +46,36 @@ class Clients extends Model } - public function newRow(array $entry) + public function newRow(array $input) { - $this->hydrate(['prenom_nom' => $entry[0], 'adresse' => $entry[1], 'code_client' => $entry[2], 'commentaires' => $entry[3]]); + $this->hydrate(['prenom_nom' => $input[0], 'adresse' => $input[1], 'code_client' => $input[2], 'commentaires' => $input[3]]); $this->create(); - $this->setIdFromLastInsertID(); + $this->setIdFromLastInsertID(); // dans ModelChildren, n'utilise pas Model::execQuery() + } + + public function findByKeywords(array $keywords, string $field): array + { + $result = []; + for($i = 0; $i < count($keywords); $i++) + { + // tableau à deux dimensions obtenu pour un mot clé + $query_result = $this->execQuery('SELECT * FROM ' . $this->table . ' WHERE ' . $field . ' LIKE "%' . $keywords[$i] . '%"')->fetchAll(); + foreach($query_result as $one_array) // pour chaque sous tableau + { + $already_exist = false; + for($j = 0; $j < count($result); $j++) // pour chaque tableau déjà enregistré dans le tableau $result + { + if($result[$j]['ID'] === $one_array['ID']) + { + $already_exist = true; + } + } + if(!$already_exist) + { + $result[] = $one_array; + } + } + } + return($result); } } diff --git a/src/model/Model.php b/src/model/Model.php index 9effbe7..8cbf056 100644 --- a/src/model/Model.php +++ b/src/model/Model.php @@ -12,6 +12,12 @@ class Model extends DB $this->db = parent::getInstance(); // connexion } + // getters + public function getTable(): string + { + return($this->table); + } + // setters (plusieurs en même temps) public function hydrate(array $data) // $data = tableau associatif en entrée: nom_du_champ => valeur { @@ -78,17 +84,17 @@ class Model extends DB // read SELECT - public function readAll() // obtenir une table + public function readAll(): array // obtenir une table { - $query = $this->execQuery('SELECT * FROM ' . $this->table . ';'); // fonctionne aussi sans le point virgule dans le SQL!! - return($query->fetchAll()); + return($this->execQuery('SELECT * FROM ' . $this->table)->fetchAll()); // fonctionne aussi sans le point virgule dans le SQL!! } + 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) // obtenir une entrée avec un tableau associatif 'champ' => 'valeur' + public function find(array $criteria): array // obtenir une entrée avec un tableau associatif 'champ' => 'valeur' { $fields = []; $values = []; @@ -134,7 +140,7 @@ class Model extends DB } - // fonction appelée une seule fois pour chaque table + // fonction appelée une seule fois au lancement du programme // le tableau nécessaire n'est pas copié en mémoire à l'instanciation (pas de fuite de mémoire), mais uniquement à l'appel de cette fonction statique, à la fin de la fonction la mémoire est libérée // DBStructure::${self::$tableStructure} permet de nommer une variable statique de classe static public function createTables() -- cgit v1.2.3