table = 'clients'; // à mettre dans ModelChildren } //~ public function set(string $variable, $value) //~ { //~ $this->$variable = $value; //~ return($this); //~ } // getters public function getID(): int { return $this->ID; } public function getCodeClient(): string { return $this->code_client; } // setters //~ public function setID() -> dans le trait ModelChildren public function setPrenomNom($value) { $this->prenom_nom = (string) $value; return($this); } public function setCodeClient($value) { $this->code_client = (string) $value; return($this); } public function setAdresse($value) { $this->adresse = (string) $value; return($this); } public function setTelephone($value) // chaine parce que zenity renvoie une chaine et parce qu'on garde le 0 au début { if(is_numeric($value)) { $this->telephone = (string) $value; } else { $this->telephone = ''; echo 'debug: le champ "telephone" ne doit comporter que des nombres, aucun numéro ne sera utilisé' . "\n"; } return($this); } public function setCourriel($value) { $this->courriel = (string) $value; return($this); } public function setCommentaires($value) { $this->commentaires = (string) $value; return($this); } public function findByKeywords(array $keywords, string $field): array // n'hydrate pas les variables, on doit choisir un client et hydrater ensuite { $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); } }