je fais un CRUD à partir d'un tutoriel. Et je reçois cette erreur.
Vous avez spécifié un groupe de connexion à la base de données non valide.
Quel serait le problème?
database.php - configuration de la base de données
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'cicrud';
$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;
users_model.php -model
<?php
class Users_model extends CI_Model {
function __construct()
{
parent::__construct();
$this->load->database('cicrud');
}
public function get_all_users()
{
$query = $this->db->get('users');
return $query->result();
}
public function insert_users_to_db($data)
{
return $this->db->insert('users', $data);
}
}
?>
users.php - contrôleur
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Users extends CI_Controller {
function __construct()
{
parent::__construct();
#$this->load->helper('url');
$this->load->model('users_model');
}
public function index()
{
$data['user_list'] = $this->users_model->get_all_users();
$this->load->view('show_users', $data);
}
public function add_form()
{
$this->load->view('insert');
}
public function insert_new_user()
{
$udata['name'] = $this->input->post('name');
$udata['email'] = $this->input->post('email');
$udata['address'] = $this->input->post('address');
$udata['mobile'] = $this->input->post('mobile');
$res = $this->users_model->insert_users_to_db($udata);
if($res){
header('location:'.base_url()."index.php/users/".$this->index());
}
}
}
show_users.php - vues HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CI CRUD</title>
<script type="text/javascript">
function show_confirm(act,gotoid)
{
if(act=="edit")
var r=confirm("Do you really want to edit?");
else
var r=confirm("Do you really want to delete?");
if (r==true)
{
window.location="<?php echo base_url();?>index.php/users/"+act+"/"+gotoid;
}
}
</script>
</head>
<body>
<h2> Simple CI CRUD Application </h2>
<table width="600" border="1" cellpadding="5">
<tr>
<th scope="col">Id</th>
<th scope="col">User Name</th>
<th scope="col">Email</th>
<th scope="col">Mobile</th>
<th scope="col">Address</th>
<th scope="col" colspan="2">Action</th>
</tr>
<?php foreach ($user_list as $u_key){ ?>
<tr>
<td><?php echo $u_key->id; ?></td>
<td><?php echo $u_key->name; ?></td>
<td><?php echo $u_key->email; ?></td>
<td><?php echo $u_key->address; ?></td>
<td><?php echo $u_key->mobile; ?></td>
<td width="40" align="left" ><a href="#" onClick="show_confirm('edit',<?php echo $u_key->id;?>)">Edit</a></td>
<td width="40" align="left" ><a href="#" onClick="show_confirm('delete',<?php echo $u_key->id;?>)">Delete </a></td>
</tr>
<?php }?>
<tr>
<td colspan="7" align="right"> <a href="<?php echo base_url();?>index.php/user/add_form">Insert New User</a></td>
</tr>
</table>
</body>
</html>
Vous chargez un groupe de bases de données appelé circrud
. Mais il n'y a pas de groupe de base de données appelé ça. Le seul que vous avez est un groupe appelé default
qui sera chargé par défaut si vous ne spécifiez pas de groupe.
$this->load->database('cicrud');
Tu devrais juste faire
$this->load->database();
dans cette partie du code:
class Users_model extends CI_Model {
function __construct()
{
parent::__construct();
$this->load->database();
}
Vous utilisez déjà le groupe de base de données "cicrud" dans votre connexion à la base de données ici:
$this->load->database('cicrud');
Pour que vous puissiez le changer en:
$this->load->database();
Ou vous pouvez changer votre configuration en ceci:
$db['cicrud']['hostname'] = 'localhost';
$db['cicrud']['username'] = 'root';
$db['cicrud']['password'] = '';
$db['cicrud']['database'] = 'cicrud';
$db['cicrud']['dbdriver'] = 'mysql';
$db['cicrud']['dbprefix'] = '';
$db['cicrud']['pconnect'] = TRUE;
$db['cicrud']['db_debug'] = TRUE;
$db['cicrud']['cache_on'] = FALSE;
$db['cicrud']['cachedir'] = '';
$db['cicrud']['char_set'] = 'utf8';
$db['cicrud']['dbcollat'] = 'utf8_general_ci';
$db['cicrud']['swap_pre'] = '';
$db['cicrud']['autoinit'] = TRUE;
$db['cicrud']['stricton'] = FALSE;
Voyez ce qui est meilleur pour vous.
$autoload['libraries'] = array('database','session');
ajoutez ceci dans config/autoload.php puis
$this->load->database('databasename');
ajouter ceci dans le modèle