Où est le problème ? Lorsque tu instancies la classe MysqlDatabase, tu choisis quelle DB tu veux taper non ? Donc tu peux créer 2 instances, une pour chaque BDD, non ?
Bonjour
Ayant suivi les cours de la POO de grafikart, je me retrouve devant une problématique.
Le MVC traditionnel, nous permet de nous conncecter à une seule base de donnée en même temps. Cependant , j'ai deux bases de données contenant chacune la table Posts par exemple. (L'une listant les articles anciens) et l'autre les nouveaux.
Comment puis je modificier la classe mysqlDatatases pour me connecter sur différente bases de données et ensuite l'intégrer dans mes vues.
Cordialement
12 réponses
C'est parceque il te faut un tableau d'instance et tu peux mettre en clef le nom de la connection et en valeur la connection elle-même
ensuite c'est du get($name) en fonction de ce que tu veux.
Alors le fichier Config retourne un tableau avec toutes les informations concernant les serveurs mysql et j'ai étendu le probleme au cas ou à LDAP, mais je verrais cela plus tard
ensuite la class Config est la suivante
ensuite la class mysql est la suivante
la class application qui gere un peu tout
et pour terminer le baseController
L'idée si elle est bonne est la suivante:
ENFIN ce serai mon ideal, à moins que vous ayez autre chose à me proposer.
MERCI
Salut,
Il suffit de créer 2 instances : une pour ta première BDD et une pour ta seconde, tout simplement ;)
De plus, si je me rappelle bien, il s'agit de singletons donc réutilisable facilement à tout endroit de ton app.
Par contre, je trouve cela bizarre d'avoir deux bases de données.
Attention, si les deux bases sont sur le même serveur, inutile d'aller créer deux instances, une seule suffit pour se connecter. Il faut juste préciser dans ta query le nom de la base avant le nom de la table (ex. SELECT * FROM `ma_bdd`.`ma_table` WHERE `id` = 1;).
Bonjour, et merci de vous portez à mon aide,
je vois ce que vous voulez dire, mais dans le pattern MVC de la formation, les fonctions "LoadModel" et "getTable" prennent en paramètre UNE connection à la base Mysql.
On va se tutoyer hein, on est pas chez les aristos ;)
A ce moment là, il te faut faire deux instances, une pour chaque DB.
Peux-tu me montrer le code de la méthode LoadModel stp ?
Pour le tutoiement avec plaisir.. Merci
Le but de cette manoeuvre est de pouvoir travailler sur une vue avec l'appel à deux ou X base de données.
La méthode LoadModel est la suivante :
Bon, elle ne m'apprend rien ... je n'ai plus du tout la structure de son code en tête...
A quelle endroit se connecte-on à une base de données (la classe mysqlDatabases je suppose...) ? Peux-tu partager le bout de code correpondant s'il-te-plaît ?
j'ai oublie la fonction getDB dans la class Application
le tuto nous fait instancier la classe MysqDatabase uniquement avec la fonction au dessus, et moi j'ai mis en paramètre
mais cela ne change pas le probleme, il faut que je change pas fonction loadModel en fonction de mysql(), mais je pensais que cela
Car si je rajoute un paramètre à la class LoadModel
il ne me creer pas deux instances, mais uniquement la premiere
Je ne connais pas du tout ce terme.. de tableau d'instance. En gros cela veut dire que je stocke mes différentes instance pdo dans un tableau?
Oui en gros c'est l'idée. Et tupeux y accéder via la clef du tableau.
Oki, je devrais donc effectuer cette fonction dans le mysqlDatabase