web-dev-qa-db-fra.com

J'essaie de connecter deux bases de données avec un site Joomla

J'ai deux sites joomla avec des bases de données différentes. Et je souhaite partager toutes les données d'un site à un autre site .Par exemple lorsque je m'inscris Un utilisateur sur un site Web, il est également mis à jour sur la base de données du deuxième site. J'ai ce code pour la base de données externe de connexion. Mais je suis nouveau dans joomla, donc je ne sais pas comment implémenter ce code.

<?php
$db = JFactory::getDbo();
?>

<?php
$option = array(); //prevent problems

$option['driver']   = 'mysql';            // Database driver name
$option['Host']     = 'db.myhost.com';    // Database Host name
$option['user']     = 'fredbloggs';       // User for database authentication
$option['password'] = 's9(39s£h[%dkFd';   // Password for database authentication
$option['database'] = 'bigdatabase';      // Database name
$option['prefix']   = 'abc_';             // Database prefix (may be empty)

$db = JDatabaseDriver::getInstance( $option );
?> 
2
Sanjay Yadav

Il existe déjà une solution simple pour atteindre vos objectifs.

Si vous installez extension Fabrik , vous pouvez ensuite ajouter une nouvelle connexion à la base de données dans les paramètres d'administration du composant. En utilisant Fabrik, vous pouvez ensuite afficher et mettre à jour les champs et les données de différentes bases de données dans les mêmes formulaires.

2
William Ellis

EDIT 2:

Je pense que ce n'est pas l'explication voulue pour l'utilisateur, mais il est possible qu'il ait besoin de renseigner les informations de son site Web principal avec un système de plug-in dans les deux bases de données.


Si vous souhaitez implémenter le code à l'aide de substitutions et de composants personnalisés, il vous suffit d'utiliser, par exemple, ce guide simple pour obtenir des informations à partir de l'autre base de données:

https://docs.joomla.org/Selecting_data_using_JDatabase

EDIT:

Plus spécifiquement, vous devez créer deux objets, un pour la connexion locale et un autre pour la connexion externe.

$db = JFactory::getDbo();
$extDb = JDatabaseDriver::getInstance( $option );

Et utilisez la même requête que vous créez pour les deux objets:

$query = "UPDATE #__anytable SET column1 = value1";
$db->setQuery($query); $db->execute();
$extDb->setQuery($query); $extDb->execute();

PD: Ne publiez pas les informations d'identification telles que l'utilisateur et le mot de passe sur Internet.

1
troyKoutei