r votre patiente, c'étais plustôt simple finalement
$productTotal = count($totalProduct);
et pour UTF8
j'ai corriger ainsi
private $DB_ENCODING = 'utf8';
try{
$this->db = new PDO('mysql:host='.$this->host.';dbname='.$this->database.';charset=.'$DB_Encoding, $this->username, $this->password, array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING
));
}catch(PDOException $e){
die('<h1>Impossible de se connecter a la base de donnee</h1>');
}
- Edité par lutinjoyeux 3 décembre 2024 à 19:06:34
mouef, ça "fonctionne" mais la démarche est encore moins optimale qu'avant, tu utilises ta surcouche de PDO dont la méthode query retourne le résultat d'un fetchAll dedans : du coup tu ne peux pas faire un SELECT COUNT(*) puis fetchColumn d'où ce count :/ Elle est tellement limitée que je ne suis pas convaincu qu'elle présente un intérêt quelconque au final, il faudrait donner un accès à PDO::query ou écrire une méthode spécialisée (one ?) qui exécute la requête que tu lui passes puis renvoie le résultat d'un fetchColumn. Et encore, c'est en supposant qu'elle est correctement employée quand il y aurait des binds à réaliser (j'ai des doutes sur ce point).
PS : il est 1000 fois préférable de laisser planter à ce genre de try/catch qui n'a strictement aucune utilité
Plutôt qu'un rowCount() sur une requête SELECT * …, je conseillerais un fetchColumn() sur une requête SELECT count(…) FROM …. Cela évite de charger tous les résultats pour au final ne faire que les compter.
Et oui, tu peux enlever le bloc try/catch autour de la construction de PDO dans ta classe DB.
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli