CodeIgniter - Utilisation de la base de données

Comme tout autre framework, nous devons interagir très souvent avec la base de données et CodeIgniter nous facilite cette tâche. Il fournit un riche ensemble de fonctionnalités pour interagir avec la base de données.

Dans cette section, nous allons comprendre comment les fonctions CRUD (Créer, Lire, Mettre à jour, Supprimer) fonctionnent avec CodeIgniter. Nous utiliseronsstud table pour sélectionner, mettre à jour, supprimer et insérer les données dans stud table.

Nom de la table: goujon
roll_no int (11)
Nom varchar (30)

Connexion à une base de données

Nous pouvons nous connecter à la base de données de la manière suivante -

  • Automatic Connecting- La connexion automatique peut être effectuée en utilisant le fichier application / config / autoload.php. La connexion automatique chargera la base de données pour chaque page. Nous avons juste besoin d'ajouter la bibliothèque de base de données comme indiqué ci-dessous -

$autoload['libraries'] = array(‘database’);
  • Manual Connecting- Si vous souhaitez une connectivité à la base de données pour certaines pages seulement, nous pouvons opter pour une connexion manuelle. Nous pouvons nous connecter à la base de données manuellement en ajoutant la ligne suivante dans n'importe quelle classe.

$this->load->database();

Ici, nous ne passons aucun argument car tout est défini dans le fichier de configuration de la base de données application / config / database.php

Insérer un enregistrement

Pour insérer un enregistrement dans la base de données, la fonction insert () est utilisée comme indiqué dans le tableau suivant -

Syntax

insert ([ $ table = '' [, $ set = NULL [, $ escape = NULL ]]])

Parameters

  • $table( string ) - Nom de la table

  • $set( array ) - Un tableau associatif de paires champ / valeur

  • $escape( booléen ) - Indique s'il faut échapper les valeurs et les identifiants

Returns

TRUE en cas de succès, FALSE en cas d'échec

Return Type

booléen

L'exemple suivant montre comment insérer un enregistrement dans studtable. Le $ data est un tableau dans lequel nous avons défini les données et insérer ces données dans la tablestud, il suffit de passer ce tableau à la fonction d'insertion dans le 2 ème argument.

$data = array( 
   'roll_no' => ‘1’, 
   'name' => ‘Virat’ 
); 

$this->db->insert("stud", $data);

Mettre à jour un enregistrement

Pour mettre à jour un enregistrement dans la base de données, le update() la fonction est utilisée avec set() et where()fonctions comme indiqué dans les tableaux ci-dessous. leset() La fonction définira les données à mettre à jour.

Syntax

set ( $ key [, $ value = '' [, $ escape = NULL ]])

Parameters

  • $key( mixte ) - Nom de champ ou un tableau de paires champ / valeur

  • $value( string ) - Valeur du champ, si $ key est un seul champ

  • $escape( booléen ) - Indique s'il faut échapper les valeurs et les identifiants

Returns

Instance CI_DB_query_builder (chaînage de méthodes)

Return Type

CI_DB_query_builder

le where() La fonction décidera quel enregistrement mettre à jour.

Syntax

où ( $ key [, $ value = NULL [, $ escape = NULL ]])

Parameters

  • $key( mixte ) - Nom du champ à comparer ou tableau associatif

  • $value( mixte ) - Si une seule clé, par rapport à cette valeur

  • $escape( booléen ) - Indique s'il faut échapper les valeurs et les identifiants

Returns

Instance DB_query_builder

Return Type

objet

Finalement, le update() La fonction mettra à jour les données dans la base de données.

Syntax

update ([ $ table = '' [, $ set = NULL [, $ where = NULL [, $ limit = NULL ]]]])

Parameters

  • $table( string ) - Nom de la table

  • $set( array ) - Un tableau associatif de paires champ / valeur

  • $where( string ) - La clause WHERE

  • $limit( int ) - La clause LIMIT

Returns

TRUE en cas de succès, FALSE en cas d'échec

Return Type

booléen
$data = array( 
   'roll_no' => ‘1’, 
   'name' => ‘Virat’ 
); 

$this->db->set($data); 
$this->db->where("roll_no", ‘1’); 
$this->db->update("stud", $data);

Supprimer un enregistrement

Pour supprimer un enregistrement dans la base de données, la fonction delete () est utilisée comme indiqué dans le tableau suivant -

Syntax

delete ([ $ table = '' [, $ where = '' [, $ limit = NULL [, $ reset_data = TRUE ]]]])

Parameters

  • $table( mixte ) - Le (s) tableau (s) à supprimer; chaîne ou tableau

  • $where( string ) - La clause WHERE

  • $limit( int ) - La clause LIMIT

  • $reset_data( booléen ) - TRUE pour réinitialiser la clause «write» de la requête

Returns

Instance CI_DB_query_builder (chaînage de méthodes) ou FALSE en cas d'échec

Return Type

mixte

Utilisez le code suivant pour supprimer un enregistrement dans le studtable. Le premier argument indique le nom de la table pour supprimer l'enregistrement et le second argument décide quel enregistrement supprimer.

$this->db->delete("stud", "roll_no = 1");

Sélection d'un enregistrement

Pour sélectionner un enregistrement dans la base de données, le get est utilisée, comme indiqué dans le tableau suivant -

Syntax

get ([ $ table = '' [, $ limit = NULL [, $ offset = NULL ]]])

Parameters

  • $table( string ) - La table à interroger le tableau

  • $limit( int ) - La clause LIMIT

  • $offset( int ) - La clause OFFSET

Returns

Instance CI_DB_result (chaînage de méthodes)

Return Type

CI_DB_result

Utilisez le code suivant pour obtenir tous les enregistrements de la base de données. La première instruction récupère tous les enregistrements de la table «stud» et renvoie l'objet, qui sera stocké dans $ query object. La deuxième déclaration appelle leresult() fonction avec l'objet $ query pour obtenir tous les enregistrements sous forme de tableau.

$query = $this->db->get("stud"); 
$data['records'] = $query->result();

Fermer une connexion

La connexion à la base de données peut être fermée manuellement, en exécutant le code suivant -

$this->db->close();

Exemple

Créez une classe de contrôleur appelée Stud_controller.php et enregistrez-le à application/controller/Stud_controller.php

Voici un exemple complet, dans lequel toutes les opérations mentionnées ci-dessus sont effectuées. Avant d'exécuter l'exemple suivant, créez une base de données et une table comme indiqué au début de ce chapitre et apportez les modifications nécessaires dans le fichier de configuration de la base de données stocké dansapplication/config/database.php

<?php 
   class Stud_controller extends CI_Controller {
	
      function __construct() { 
         parent::__construct(); 
         $this->load->helper('url'); 
         $this->load->database(); 
      } 
  
      public function index() { 
         $query = $this->db->get("stud"); 
         $data['records'] = $query->result(); 
			
         $this->load->helper('url'); 
         $this->load->view('Stud_view',$data); 
      } 
  
      public function add_student_view() { 
         $this->load->helper('form'); 
         $this->load->view('Stud_add'); 
      } 
  
      public function add_student() { 
         $this->load->model('Stud_Model');
			
         $data = array( 
            'roll_no' => $this->input->post('roll_no'), 
            'name' => $this->input->post('name') 
         ); 
			
         $this->Stud_Model->insert($data); 
   
         $query = $this->db->get("stud"); 
         $data['records'] = $query->result(); 
         $this->load->view('Stud_view',$data); 
      } 
  
      public function update_student_view() { 
         $this->load->helper('form'); 
         $roll_no = $this->uri->segment('3'); 
         $query = $this->db->get_where("stud",array("roll_no"=>$roll_no));
         $data['records'] = $query->result(); 
         $data['old_roll_no'] = $roll_no; 
         $this->load->view('Stud_edit',$data); 
      } 
  
      public function update_student(){ 
         $this->load->model('Stud_Model');
			
         $data = array( 
            'roll_no' => $this->input->post('roll_no'), 
            'name' => $this->input->post('name') 
         ); 
			
         $old_roll_no = $this->input->post('old_roll_no'); 
         $this->Stud_Model->update($data,$old_roll_no); 
			
         $query = $this->db->get("stud"); 
         $data['records'] = $query->result(); 
         $this->load->view('Stud_view',$data); 
      } 
  
      public function delete_student() { 
         $this->load->model('Stud_Model'); 
         $roll_no = $this->uri->segment('3'); 
         $this->Stud_Model->delete($roll_no); 
   
         $query = $this->db->get("stud"); 
         $data['records'] = $query->result(); 
         $this->load->view('Stud_view',$data); 
      } 
   } 
?>

Créez une classe de modèle appelée Stud_Model.php et enregistrez-le dans application/models/Stud_Model.php

<?php 
   class Stud_Model extends CI_Model {
	
      function __construct() { 
         parent::__construct(); 
      } 
   
      public function insert($data) { 
         if ($this->db->insert("stud", $data)) { 
            return true; 
         } 
      } 
   
      public function delete($roll_no) { 
         if ($this->db->delete("stud", "roll_no = ".$roll_no)) { 
            return true; 
         } 
      } 
   
      public function update($data,$old_roll_no) { 
         $this->db->set($data); 
         $this->db->where("roll_no", $old_roll_no); 
         $this->db->update("stud", $data); 
      } 
   } 
?>

Créez un fichier de vue appelé Stud_add.php et enregistrez-le dans application/views/Stud_add.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>Students Example</title> 
   </head> 
   <body> 
         <?php 
            echo form_open('Stud_controller/add_student');
            echo form_label('Roll No.'); 
            echo form_input(array('id'=>'roll_no','name'=>'roll_no')); 
            echo "<br/>"; 
			
            echo form_label('Name'); 
            echo form_input(array('id'=>'name','name'=>'name')); 
            echo "<br/>"; 
			
            echo form_submit(array('id'=>'submit','value'=>'Add')); 
            echo form_close(); 
         ?> 
   </body>
</html>

Créez un fichier de vue appelé Stud_edit.php et enregistrez-le dans application/views/Stud_edit.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>Students Example</title> 
   </head> 
	
   <body> 
      <form method = "" action = "">
		
         <?php 
            echo form_open('Stud_controller/update_student'); 
            echo form_hidden('old_roll_no',$old_roll_no); 
            echo form_label('Roll No.'); 
            echo form_input(array('id'⇒'roll_no',
               'name'⇒'roll_no','value'⇒$records[0]→roll_no)); 
            echo "
            "; 

            echo form_label('Name'); 
            echo form_input(array('id'⇒'name','name'⇒'name',
               'value'⇒$records[0]→name)); 
            echo "
            "; 

            echo form_submit(array('id'⇒'sub mit','value'⇒'Edit')); 
            echo form_close();
         ?> 
			
      </form> 
   </body>
	
</html>

Créez un fichier de vue appelé Stud_view.php et enregistrez-le dans application/views/Stud_view.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>Students Example</title> 
   </head>
	
   <body> 
      <a href = "<?php echo base_url(); ?>
         index.php/stud/add_view">Add</a>
		
      <table border = "1"> 
         <?php 
            $i = 1; 
            echo "<tr>"; 
            echo "<td>Sr#</td>"; 
            echo "<td>Roll No.</td>"; 
            echo "<td>Name</td>"; 
            echo "<td>Edit</td>"; 
            echo "<td>Delete</td>"; 
            echo "<tr>"; 
				
            foreach($records as $r) { 
               echo "<tr>"; 
               echo "<td>".$i++."</td>"; 
               echo "<td>".$r->roll_no."</td>"; 
               echo "<td>".$r->name."</td>"; 
               echo "<td><a href = '".base_url()."index.php/stud/edit/"
                  .$r->roll_no."'>Edit</a></td>"; 
               echo "<td><a href = '".base_url()."index.php/stud/delete/"
                  .$r->roll_no."'>Delete</a></td>"; 
               echo "<tr>"; 
            } 
         ?>
      </table> 
		
   </body>
	
</html>

Apportez la modification suivante dans le fichier d'itinéraire à application/config/routes.php et ajoutez la ligne suivante à la fin du fichier.

$route['stud'] = "Stud_controller"; 
$route['stud/add'] = 'Stud_controller/add_student'; 
$route['stud/add_view'] = 'Stud_controller/add_student_view'; 
$route['stud/edit/(\d+)'] = 'Stud_controller/update_student_view/$1'; 
$route['stud/delete/(\d+)'] = 'Stud_controller/delete_student/$1';

Maintenant, exécutons cet exemple en visitant l'URL suivante dans le navigateur. Remplacez yoursite.com par votre URL.

http://yoursite.com/index.php/stud