Salut,
tu pourrais faire un truc dans le genre:
Bonjour à tous,
Après avoir réalisé une structure de blog en PHP, j'ai découvert l'architecture MVC et les bases de la POO.
Je cherche donc à améliorer mon travail pour respecter l'architecture MVC, notamment en utilisant des classes :)
Mon code "non legit" fonctionne, il compte le nombre de commentaire pour chaque billet de blog (pour écrire "Voir les commentaires (nombre de commentaires)").
Voici ce code :
MODEL :
VUE (je ne passe même pas par le contrôleur et j'y met direct une fonction haha)
La boucle While permet l'affichage de chaque billet de blog grâce à une requête SQL SELECT.
On se rend donc compte que ma fonction est dépendante d'une variable dans la vue (l'id du billet de blog). Donc si je mets ma fonction countComments dans une classe, ça ne fonctionnera plus.
J'ai essayé de recréer dans ma fonction countComment ce While en appelant ma fonction qui affiche chaque billet de blog, mais ça ne fonctionne pas. Je suppose que c'est parce que du coup mon while s'applique 2 fois (une fois dans la fonction countComment, et une fois après, à l'affichage des billets). J'ai essayé de retourner un tableau, toujours sans résultat probant.
J'ai essayé de ne plus dépendre d'une variable en comptant le nombre de commentaires pour chaque billet de blog et retourner un tableau dans l'ordre, mais forcément quand il n'y a pas de commentaire il n'y a pas de ligne dans ma table, donc j'ai des valeurs nulles au lieu de zéro.
Par exemple si j'ai en nombre de commentaires dans l'ordre : 0 - 1 - 3 - 0 - 0 -2 - 0 - 0 - 0
Lui va me retourner 1 - 3 - 2
Jusque là je m'en suis toujours sorti mais là j'ai besoin d'être guidé, il y a une bonne méthode c'est sûr, mais je n'arrive pas à la trouver...
Des idées ? :)
Merci d'avance !
Salut,
tu pourrais faire un truc dans le genre:
Bon, j'ai avancé, juste après avoir posté j'ai réussi à obtenir un tableau qui match avec mon nombre de commentaires :)
Par contre, je ne comprends pas pourquoi il y a une valeur 0 à chaque fois ?
Le truc c'est que quand j'essaye d'afficher chaque valeur de ce tableau dans mon While, ça repart de zéro à chaque page :(. Donc si par exemple sur ma dernière page de 5 billets j'ai dans l'ordre ce nombre de commentaires : 2 - 3 - 1 - 0 - 0
Ca affichera ça, mais sur chacune de mes pages...
Bon bah résolu !
J'y aurais mis plusieurs jours...
Il suffisait de bien prendre ma requête SQL qui a comme LIMIT les 5 billets à chaque page (j'avais dupliqué cette requête et supprimé cet endroit pour l'utiliser dans ma fonction countComment, car je croyais que ça me polluait)
Si le code intéresse quelqu'un, pas de souci je le posterai
Hello Curvata,
Wahou merci d'avoir pris le temps de faire une réponse aussi complète !
Dans l'idée j'ai utilisé la même logique, même si mon code n'a rien à voir, il est pas aussi clean. Je ne connais pas fetchAll et fetchColumn, mais ça a l'air plus adapté.
Je vais peut être pouvoir essayer d'améliorer mon travail en me basant sur le tiens :)
Pour le moment, voici mon code :
Class PostManager
Classe CommentManager
Je passe sur le controlleur et l'index, rien de sorcier
index_view
Bonsoir.
Niveau performances ce n'est pas top ton système.
Le mieux serait que tu ajoutes dans la table blog_posts une colonne par exemple nommée comments_count qui par défaut aurait la valeur 0.
Lorsqu'un nouvel enregistrement est sauvegardé dans la table blog_comments, tu incrémentes la valeur de la colonne de l'enregistrement correspondant dans la table blog_posts.
Ce qui t'évitera de faire des requêtes SQL supplémentaires lorsque tu récupères les enregistrements de la table blog_posts.
Hello Lartak,
Oui c'est plus intelligent effectivement, merci de l'astuce :)