7 juin 2020 15:25

Lecture de données

Maintenant que nous savons établir une connexion à la base données, voyons comment on peut lire des données depuis celle-ci. Pour cela nous avons besoin d'une base de données et d'une table avec quelques enregistrement dans celle-ci. Voici le script qui permet de créer la table et les instructions SQL pour pouvoir insérer quelques données. Je vous renvoi à la documentation de MySQL pour voir comment exécuter un script SQL.

CREATE SCHEMA `framework` ;

CREATE TABLE `employee` (
  `id` int NOT NULL AUTO_INCREMENT,
  `first_name` varchar(100) NOT NULL,
  `last_name` varchar(100) NOT NULL,
  `job_title` varchar(100) DEFAULT NULL,
  `salary` double DEFAULT NULL,
  `notes` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `employee` (`first_name`, `last_name`, `job_title`, `salary`) VALUES 
                       ('Robin', 'Jackman', 'Software Engineer', 5500),
                       ('Taylor', 'Edward', 'Software Architect', 7200),
                       ('Vivian', 'Dickens', 'Database Administrator', 6000),
                       ('Harry', 'Clifford', 'Database Administrator', 6800),
                       ('Eliza', 'Clifford', 'Software Engineer', 4750),
                       ('Nancy', 'Newman', 'Software Engineer', 5100),
                       ('Melinda', 'Clifford', 'Project Manager', 8500),
                       ('Harley', 'Gilbert', 'Software Architect', 8000);

Au début de ce billet nous avons dit qu'il y avait deux classes, autre que celle pour la connexion à la base de données, qui sont Table et TableRow. Nous allons voir comment nous pouvons utiliser ces deux classes.

La classe Table

La première chose à savoir, est que vous pouvez soit utiliser la classe, enfin certaines des fonctions de la classe, de manière statique ou bien après avoir déclarer l'objet via l'instruction new. Enfin avant d'utiliser la classe, vous devez savoir ce que vous souhaitez faire, ou plutôt ce que vous voulez comme résultat et comment vous allez faire pour y arriver. Pour la première question, vous devez savoir si le résultat que vous souhaitez avoir sera un et un seul enregistrement ou bien au contraire plusieurs enregistrement. Quant à la deuxième question, à savoir comment vous voulez faire votre recherche, vous pouvez soit rechercher via l'identifiant unique du record, et donc le champ id qui est obligatoirement la PRIMARY KEY (clé primaire) de notre table ou via une requête SQL pour laquelle vous spécifierez soit tout l'instruction SQL, à savoir, par exemple, SELECT `id`, `first_name`, `last_name` from `employee` where `job_title`= ''Database Administrator ou bien simplement en donnant le nom de la table, et uniquement la 'where clause'. Voyons tout cela par l'exemple ce sera bien plus parlant.

Commençons par rechercher un enregistrement sur base de sa clé primaire de manière statique. Ceci se fera comme suit :

/* Rechecher de l'employé avec l'ID = 1 */
$employee = Table::FetchById('employee', 1);

Ok, mais maintenant comment est-ce que l'on peut voir le contenu des différents champs ? Là aussi il y a plusieurs façons. Soit vous connaissez le nom des champs et vous les affichez sur base de leur nom :

/* Affiche le contenu du champ `first_name` via le nom champ */
echo $employee->First_name;

soit sur base du numéro de colonne du champ,

/* Affiche le contenu du champ `first_name` via le numéro de colonne du champ */
echo $employee->get(1);

mais attention le premier champ se trouvant à la position 0, il faut donc pour afficher le deuxième champ bien utiliser get(1) au lieu de get(2).

Dans les deux méthodes, à chaque fois, ce sera la valeur "Robin" qui sera affichée. Il n'y a pas plus simpe, n'est-ce pas ?

En fait, sans le savoir, vous avez déjà utilisé la classe TableRow car la méthode FetchById renvoi un objet de type TableRow si un enregristrement correspondant à la clé primaire passée en deuxième arguments a été trouvé, si non c'est la valeur false qui est renvoyée.

<<<< Connexion à la base de données

^^^ Sommaire