登录屏幕上的Codeigniter数据库选择

时间:2016-07-17 14:50:47

标签: 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);

每个数据库的许多表都不会更改,并且包含相同的信息。

我希望有一个包含此信息的主应用程序数据库,包括年份列表以及调用数据库的内容。然后,该数据库将用于选择正确的年份数据库..

1 个答案:

答案 0 :(得分: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!

      }

}