Codeigniter dynamique de la connexion de base de données
Je suis un débutant en php/POO et avez une question à propos de l'évolution dynamique de ma connexion de base de données.
Voici ce que ma main.php ressemble:
class main extends CI_Controller {
function __construct()
{
parent::__construct();
/* Standard Libraries of codeigniter are required */
$this->load->database($connectdb);
$this->load->helper('url');
$this->load->library('grocery_CRUD');
}
public function index()
{
if ($_POST["username"] == "root")
{
$connectdb="default";
}
if ($_POST["username"] == "user1")
{
$connectdb="default1";
}
if ($_POST["username"] == "user2")
{
$connectdb="default2";
}
$connect = @mysql_connect("localhost", $_POST["username"], $_POST["password"]);//won't display the warning if any.
if (!$connect)
{
echo 'Server error. Please try again sometime. CON';
}else{
print("<a href=\"http://v-admindb/ci/index.php/main/employees?username=".$_POST["username"]."\">Employees</a>");
echo "<br>";
print("<a href=\"http://v-admindb/ci/index.php/main/visitors?username=".$_POST["username"]."\">Visitors</a>");
}//Just an example to ensure that we get into the function
//LOAD LIBRARIES
}
public function employees()
{
$this->grocery_crud->set_table('employees');
$output = $this->grocery_crud->render();
$this->_example_output($output);
}
public function visitors()
{
$this->grocery_crud->set_table('visitors');
$output = $this->grocery_crud->render();
$this->_example_output($output);
}
function _example_output($output = null)
{
$this->load->view('our_template.php',$output);
}
}
Voici mon database.php:
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = 'root';
$db['default']['database'] = 'my_new_cms';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
//CONNECTION FOR user1
$db['default1']['hostname'] = 'localhost';
$db['default1']['username'] = 'user1';
$db['default1']['password'] = 'user1';
$db['default1']['database'] = 'my_new_cms';
$db['default1']['dbdriver'] = 'mysql';
$db['default1']['dbprefix'] = '';
$db['default1']['pconnect'] = TRUE;
$db['default1']['db_debug'] = TRUE;
$db['default1']['cache_on'] = FALSE;
$db['default1']['cachedir'] = '';
$db['default1']['char_set'] = 'utf8';
$db['default1']['dbcollat'] = 'utf8_general_ci';
$db['default1']['swap_pre'] = '';
$db['default1']['autoinit'] = TRUE;
$db['default1']['stricton'] = FALSE;
//CONNECTION FOR user2
$db['default2']['hostname'] = 'localhost';
$db['default2']['username'] = 'user2';
$db['default2']['password'] = 'user2';
$db['default2']['database'] = 'my_new_cms';
$db['default2']['dbdriver'] = 'mysql';
$db['default2']['dbprefix'] = '';
$db['default2']['pconnect'] = TRUE;
$db['default2']['db_debug'] = TRUE;
$db['default2']['cache_on'] = FALSE;
$db['default2']['cachedir'] = '';
$db['default2']['char_set'] = 'utf8';
$db['default2']['dbcollat'] = 'utf8_general_ci';
$db['default2']['swap_pre'] = '';
$db['default2']['autoinit'] = TRUE;
$db['default2']['stricton'] = FALSE;
Quand j'ai essayez de vous connecter j'ai cette erreur:
Une Erreur PHP a été rencontrée
Gravité: Avis
Message: Undefined variable: connectdb
Nom de fichier: controllers/main.php
Numéro De Ligne: 12
Une Erreur A Été Rencontrée
Vous n'avez pas sélectionné un type de base de données à laquelle se connecter.
Changement de $this->load->base de données($connectdb) à 'défaut', 'par défaut 1", ou " default2 fait le travail. Comment puis-je mettre une variable en sorte que l'connecter les paramètres changent en fonction de qui est connecter?
J'espère que quelqu'un peut aider, merci!
Eric
- si vous allez travailler avec codeigniter lisez le manuel de première ...
Vous devez vous connecter pour publier un commentaire.
Vous devez fournir les toutes les informations de base de données dans
application/config/database.php´
Normalement, vous devez définir la valeur par défaut de la base de données du groupe, comme suit:
Avis que les informations de connexion et les paramètres sont fournis dans le tableau nommé
$db['default']
.Vous pouvez ensuite ajouter une autre base de données dans un nouveau tableau - appelons-le 'anotherdb'.
Maintenant, si vous souhaitez utiliser la deuxième base de données, il suffit d'aller
et puis, au lieu de
$this->db->foo()
, vous vous$DB_another->foo()
et vous pouvez l'étendre à plusieurs groupes de ce type
Pour les détails, jetez un oeil ici:
http://ellislab.com/codeigniter/user-guide/database/connecting.html