2011-10-24 5 views
2

J'ai une application multi-location que je développe et je suis presque là.Base de données Codeigniter - Sélection automatique

Actuellement, je suis en utilisant une base de données par client - copie chaque fois et la désignation en fonction basées sur $ _SERVER [ « HTTP_HOST »] ...

Beaucoup de tables chaque base de données ne changent jamais, et contiennent le même information.

Je voudrais avoir une base de données d'application principale qui contient cette information, y compris une liste de clients et ce que la base de données est appelée. Cette base de données serait alors utilisée pour sélectionner la bonne base de données clients ...

Est-ce possible et quelqu'un peut-il me diriger vers un tutoriel approprié?

Merci

Répondre

1

OK, vous aurez donc besoin différentes configs de base de données pour la base de données « administrative » et vos bases de données « clients ».

Utilisez les exemples de cette page pour générer ces configs distincts:

http://ellislab.com/codeigniter/user_guide/database/configuration.html

Ensuite, dans votre contrôleur principal (s'il vous plaît dites-moi votre extension d'un MY_Controller.php et non pas seulement en utilisant CI_Controller.php), vous Je veux lire votre base de données 'admin' et obtenir toutes les informations sur le client. Vous souhaitez ensuite générer un tableau $config pour cette base de données client et de recharger la base de données avec le nouveau tableau $config:

// in MY_Controller constructor 

// do your thing here to connect to the admin database and get client details 
// ... 
// 

$config['hostname'] = "localhost"; 
$config['username'] = $client_db_username; // you got this from the 'admin' database 
$config['password'] = $client_db_password; // you got this from the 'admin' database 
$config['database'] = $client_db_name; // you got this from the 'admin' database 
$config['dbdriver'] = "mysql"; 
$config['dbprefix'] = ""; 
$config['pconnect'] = FALSE; 
$config['db_debug'] = TRUE; 
$config['cache_on'] = FALSE; 
$config['cachedir'] = ""; 
$config['char_set'] = "utf8"; 
$config['dbcollat'] = "utf8_general_ci"; 

$this->load->database($config); 

Vous aurez alors une connexion à la base de données client.

Remarque Si vous devez vous connecter à deux bases de données en arrière, vous pouvez vous connecter à plusieurs bases de données comme expliqué sur cette page: http://ellislab.com/codeigniter/user_guide/database/connecting.html

+0

Parfait, je viens de lire dans votre réponse et tous les liens contenus dans. On dirait que c'est exactement ce dont j'avais besoin ... –

Questions connexes