Page 1 sur 1

Aide MVC

Posté : 25 janv. 2022, 18:01
par filou80
Bonjour à tous,

Je me remet un peu au code, j'utilise l'architecture MVC.
Je souhaite recuperer une valeur toute bête le nombre d'inscrit dans la table ou plutot le nombre de ligne dans la table.
voici ma requete dans model:
public function compter()
{
$sql = 'SELECT COUNT(*) FROM utilisateurs;';
$pdo = Database::getInstance();
$req = $pdo->prepare($sql);
try {
if($req->execute()) {
return $req->fetch(PDO::FETCH_OBJ);
}
} catch (PDOException $ex) {
return false;
}
}
voici mon controller :
<?php
// Session start et redirection vers connexion
require_once(dirname(__FILE__).'/../publics/utils/session.php');
require_once(dirname(__FILE__).'/../models/Utilisateur.php');

//On recupere les valeurs

$nbrInscrit = new Utilisateurs();
$returnNbrInscrit = $nbrInscrit->compter();


include(dirname(__FILE__).'/../views/utilisateurs.php');
et voici ma vue :
<div class="container">
<div class="row">
<div class="col-6 text-center fond">
<span>Nombre d'inscrit :</span>
</div>

<div class="col-6 text-center fond">

<?=htmlentities($returnNbrInscrit)?>

</div>
</div>
</div>
Mais cela me retourne rien mais lorsque je fait un var_dump cela m'indique ceci :

Nombre d'inscrit :
object(stdClass)#5 (1) { ["COUNT(*)"]=> string(1) "2" }

Donc il me renvoit bien la bonne réponse 2, il y a bien 2 inscrits.

Merci par avance pour votre aide.

@+Filou

Re: Aide MVC

Posté : 26 janv. 2022, 04:57
par Patriboom
Il faut supposer que ton objet Utilisateurs est défini dans le fichier Utilisateurs.php

Il y a ce code qui m'intrigue et qui pourrait être la source de ton souci:
<?=htmlentities($returnNbrInscrit)?>

Ne devrait-on pas lire plutòt
<?php
echo htmlentities($returnNbrInscrit);
?>
?

Re: Aide MVC

Posté : 26 janv. 2022, 07:52
par filou80
Bonjour,

Le = dans <?= ........?> veut dire echo c'est une méthode simplifier

<?php
echo htmlentities($returnNbrInscrit);
?>

Merci pour ton aide.
@+ Filou

Re: Aide MVC

Posté : 26 janv. 2022, 13:36
par ynx
Bonjour,

Penses à activer l'affichage des erreurs en développement, tu devrais avoir un message indiquant que htmlentities() attend une chaine de caractère et non pas un objet.

Puisque tu utilises PDO::FETCH_OBJ dans la fonction compter(), le retour de cette fonction est donc un objet qui contient une propriété nommée "COUNT(*)". On peut donc afficher cette propriété dans la vue :
echo htmlentities($returnNbrInscrit->{'COUNT(*)'});
On pourrait aussi utiliser un alias dans la requête sql pour avoir une propriété plus claire que "COUNT(*)" :
// dans le modèle
$sql = 'SELECT COUNT(*) AS total FROM utilisateurs;';

// dans la vue
echo htmlentities($returnNbrInscrit->total);
Enfin, au lieu de récupérer un objet via fetch() avec PDO::FETCH_OBJ, on pourrait aussi directement récupérer le résultat de la requête via fetchColumn() :
// dans le modèle
return $req->fetchColumn();

// dans la vue
echo htmlentities($returnNbrInscrit);

Re: [RESOLU] Aide MVC

Posté : 26 janv. 2022, 15:50
par filou80
Bonjour,
Super cela fonctionne.
Je vous remercie de votre aide.
C'est dur de se remettre au code apres un moment.

@+Filou