2016-07-17 3 views
0

Hi я пытался Войти экран Пользователь пароль и еще один год полеCodeigniter Выбор базы данных при входе в систему Экран

год это имя базы данных Выбор

Например я 2015_db, 2016_db, 2017_db на основе входа в поле выбора экрана от года

<?php echo form_open('login',$attributes); ?> 

    <label for="ddlLanguage">English</label> 
    <input type="radio" name="ddlLanguage" id="ddlLanguage" value="eng" checked="checked"> 
    <label for="ddlLanguage">Arabic</label> 
    <input type="radio" name="ddlLanguage" id="radio2" value="ar"> 

    <div class="clearfix"></div> 

    <input type="text" name="txtUsername" value="<?= $this->vAdmin;?>" class="usernameLogin" /> 

    <input type="password" name="txtPassword" value="<?= $this->vPass;?>" class="usernameLogin" /> 

    <select name="year" id="year" > 
     <option value="2015">--2015--</option> 
     <option value="2015">--2016--</option> 
    </select> 

    <label class="label" for="chkSave" > REMEMBERME </label> 
    <input type="checkbox" name="chkSave" value="1" /> 

    <a href="<?php echo base_url('forgotpassword/showlist');?>" class="forgot">FORGOTPASSWORD?</a> 

    <input type="submit" name="button" id="button" value="LOGIN" class="login"> 

</form> 

Пожалуйста, помогите мне как назначить имя базы данных в контроллере и модели динамически.

как этот

$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); 

много таблиц каждая база данных никогда не меняются, и содержат ту же информацию.

Я хотел бы иметь основную базу данных приложений, которая содержит эту информацию, включая список лет и то, что называется базой данных. Эта база данных будет затем использоваться для выбора правильной базы данных год ..

+0

Старайтесь не использовать PHP эхо для всех, только тогда, когда это данные от контроллера. Наряду с этим, нет необходимости включать index.php в ваш базовый url, если вы правильно настроили свой базовый url, вы можете полностью удалить его или просто включить функцию 'base_url()' автоматически. – killstreet

+0

Я отредактировал ваш вопрос, чтобы он был более читабельным, я также добавил короткий тег php для вывода данных. Еще один совет - удалить любой стиль, который вы добавили, если ваш вопрос не связан с дизайном. Это просто очищает код для чтения другими. – killstreet

ответ

0

Сначала Вы должны указать свои учетные данные базы данных в конфигурации/database.php

$active_group = 'customName'; 
$query_builder = TRUE; 

$db['customName'] = array(
'dsn' => '', 
'hostname' => 'localhost', // your host name 
'username' => '',   //username for the db 
'password' => '',   //password to access db 
'database' => '', 
'dbdriver' => 'mysqli', 
'dbprefix' => '', 
'pconnect' => FALSE, 
'db_debug' => (ENVIRONMENT !== 'production'), 
'cache_on' => FALSE, 
'cachedir' => '', 
'char_set' => 'utf8', 
'dbcollat' => 'utf8_general_ci', 
'swap_pre' => '', 
'encrypt' => FALSE, 
'compress' => FALSE, 
'stricton' => FALSE, 
'failover' => array(), 
'save_queries' => TRUE 
); 

Вы можете указать много дб учетных данных, как это > Для активного дб установить

$active_group = 'customName'; // use 'default' or named one 

Чтобы загрузить базу данных автоматически в конфигурации/autoload.php использовать этот

$autoload['libraries'] = array('database'); 
// now db is available globally 

Вы также можете загрузить в БД диспетчерское построить так:

public function __construct() 
{ 
    parent::__construct(); 

    $this->load->database(); 

    } 

В модели:

public function __construct() { 
    $this->load->database(); 
    } 

Подключение к нескольким базам данных

Подключение к нескольким базам данных Если вам нужно подключить более чем одной базы данных одновременно вы можете сделать это следующим образом:

$DB1 = $this->load->database('group_one', TRUE); 
    $DB2 = $this->load->database('group_two', TRUE); 

Примечание: Изменить слова «group_one» и «group_two» к определенной группе имена, к которым вы подключаетесь (или вы можете передать значения соединения, как указано выше).

Установив второй параметр в TRUE (boolean), функция вернет объект базы данных.

Когда вы подключаетесь таким образом, вы будете использовать свое имя объекта для выдачи команд, а не синтаксиса, используемого в этом руководстве.Другими словами, вместо выполнения команд с:

$this->db->query(); 
    $this->db->result(); 
    etc... 

    You will instead use: 

    $DB1->query(); 
    $DB1->result(); 
    etc... 

Примечание:

Вам не нужно создавать отдельные конфигурации базы данных, если вам нужно только использовать другую базу данных на том же соединении. Вы можете переключиться на другую базу данных, когда вам нужно, например:

$this->db->db_select($database2_name); 
+0

Это будет подключаться только к его серверу по умолчанию и не позволит ему подключаться к другому. – killstreet

0

Таким образом, на первом вы должны иметь все базы данных, предварительно определенных в файле config/database.php. Он должен выглядеть следующим образом:

$db['db_2015'] = array(
    'dsn' => '', 
    'hostname' => 'localhost', 
    'username' => 'root', 
    'password' => '', 
    'database' => 'database_name', 
    'dbdriver' => 'mysqli', 
    'dbprefix' => '', 
    'pconnect' => TRUE, 
    'db_debug' => TRUE, 
    'cache_on' => FALSE, 
    'cachedir' => '', 
    'char_set' => 'utf8', 
    'dbcollat' => 'utf8_general_ci', 
    'swap_pre' => '', 
    'encrypt' => FALSE, 
    'compress' => FALSE, 
    'stricton' => FALSE, 
    'failover' => array() 
); 

$db['db_2016'] = array(
    'dsn' => '', 
    'hostname' => 'localhost', 
    'username' => 'root', 
    'password' => '', 
    'database' => 'database_name', 
    'dbdriver' => 'mysqli', 
    'dbprefix' => '', 
    'pconnect' => TRUE, 
    'db_debug' => TRUE, 
    'cache_on' => FALSE, 
    'cachedir' => '', 
    'char_set' => 'utf8', 
    'dbcollat' => 'utf8_general_ci', 
    'swap_pre' => '', 
    'encrypt' => FALSE, 
    'compress' => FALSE, 
    'stricton' => FALSE, 
    'failover' => array() 

);

Как только вы заполнили все базы данных, вы хотите проверить свой ввод в контроллере, где он был отправлен.

public function getPostLogin() 
{ 
     $this->loginModel->validateLogin($this->input->post());//This will also send the database along to the function where you could catch which database to use. 
} 

Внутри модели вы могли бы сделать что-то вроде этого:

<?php class loginModel extends CI_model{ 

     public function validateLogin($params) 
     { 
      $this->load->database($params['database']); 
      //After this you can run queries like always. 
      return $this->db->get('users');//just an example! 

     } 

} 
Смежные вопросы