Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Cours_PHP

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 43

I.

Introduction
PHP est un langage de script largement utilisé pour le
développement web côté serveur. Il est souvent utilisé pour interagir
avec des bases de données, principalement MySQL, grâce à
phpMyAdmin, une interface graphique qui permet de gérer les bases
de données MySQL.
Dans ce cours, nous allons apprendre à :
1. Se connecter à une base de données MySQL en utilisant PHP.
2. Insérer des données dans la base de données.
3. Récupérer des données depuis la base de données.

II. Prérequis
Avoir un serveur local installé (par exemple XAMPP, WAMP).
Connaître les bases de PHP (variables, fonctions).
Connaître les bases de MySQL et phpMyAdmin.

III. Se connecter à une base de données MySQL


Avant d'insérer ou de récupérer des données, la première étape
consiste à établir une connexion entre PHP et la base de données.
1. Étapes dans phpMyAdmin
Exécution de XAMPP

Après avoir téléchargé et installé le logiciel XAMPP, vous l'exécuterez


et normalement, vous arriverez sur cette interface.
Pour mettre en place le serveur local, vous devrez activer Apache et
MySQL en appuyant sur le bouton 'Start'.

Pour accéder à l'interface de phpMyAdmin, appuyez sur le bouton


'Admin' de MySQL.

Accédez à phpMyAdmin
Vue d’ensemble

Cadre 1

Cadre 3

Cadre 2

Cadre 1: Barre de menu rapide


Cadre 2: Base de données et Table
Cadre 3: Fenêtre principale

2. Créez une base de données. Par exemple : tuto_bd

Pour la création d'une nouvelle base de données, nous pouvons utiliser


deux méthodes : soit en utilisant l'interface graphique, soit en exécutant
une requête SQL.
Méthode 1: Création de la base de données avec
l’interface graphique

Appuyez sur le
Entrez le nom bouton pour
de votre base valider la
de données. création.

2 3
1

Cliquez ici pour


créer la base de
données.
3. Créez une table dans cette base de données.

Qu'est-ce qu'une table en base de données ?

En base de données, une table est une structure de stockage des


données qui organise l'information sous forme de lignes et de
colonnes, un peu comme une feuille de calcul. Chaque table dans une
base de données est utilisée pour stocker des données relatives à un
certain sujet ou entité (par exemple, des clients, des produits, des
commandes, etc.).

Composants d'une table :


Lignes (ou enregistrements) : Chaque ligne de la table représente
une entrée ou un enregistrement. Par exemple, dans une table qui
stocke des informations sur des utilisateurs, chaque ligne
représenterait un utilisateur unique avec toutes ses informations
(nom, email, téléphone, etc.).
Colonnes (ou champs) : Les colonnes définissent les catégories de
données qui sont stockées dans la table. Chaque colonne
représente un attribut ou une caractéristique de l'entité modélisée
par la table. Par exemple, dans une table d'utilisateurs, les
colonnes pourraient être le nom, l'adresse email, et le numéro de
téléphone. Une colonne contient un type de données spécifique
pour tous les enregistrements de la table (par exemple, une
colonne de noms ne contient que des noms).
Exemple:
Imaginons une table appelée Utilisateurs pour stocker des
informations sur des utilisateurs.

Dans cet exemple :


Chaque ligne représente un utilisateur différent (par exemple, Alice Dupont ou
Bob Martin).
Chaque colonne représente un attribut des utilisateurs (ID, Nom, Email,
Téléphone).
Revenons à notre cours. Après avoir fini de créer la base de données,
vous allez atterrir sur cette interface qui va vous demander d'entrer le
nom de votre table et de choisir le nombre de colonnes. Dans notre
cas, nous allons appeler notre table infos avec les colonnes 4 suivantes
:
id
nom
prénom
âge

Appuyez sur le bouton


pour valider la création.

Après avoir validé la création de la table, vous allez arriver sur cette
interface où vous devrez saisir le nom de vos différentes colonnes,
types ainsi que leurs Taille/Valeurs :
Après avoir créé la colonne id, faites défiler le menu vers la droite pour
activer la case AUTO_INCREMENT, tout en restant sur la même ligne
de la colonne id.

PRIMARY : Ce terme signifie que la colonne id est utilisée comme clé


primaire. La clé primaire est un identifiant unique pour chaque
enregistrement de la table, garantissant qu'il n'y a pas de doublon dans
cette colonne.

Explication des types de chaque champ de la table :

id (INT) : Ce type de données est un entier (integer). Il est utilisé


pour stocker des nombres entiers sans décimale. Dans ce cas, il
représente l'identifiant unique de chaque enregistrement dans la
table.

nom (VARCHAR) : Ce type de données permet de stocker des


chaînes de caractères (texte). Le nombre entre parenthèses spécifie
la longueur maximale autorisée pour cette chaîne, ici 50 caractères.
Le champ "nom" est utilisé pour stocker le nom de la personne.

prenom (VARCHAR) : Comme pour le champ "nom", ce type de


données permet de stocker du texte avec une longueur maximale
de 50 caractères. Le champ "prénom" est utilisé pour stocker le
prénom de la personne.

age (INT) : Ce type de données est un entier (integer), comme pour


le champ "id". Il est utilisé pour stocker des nombres entiers sans
décimale, ici pour représenter l'âge de la personne.
Explication des concepts de Taille/Valeurs pour les
types de champs

Taille : La taille définie dans Taille/Valeurs 50 signifie que la chaîne


de caractères peut contenir jusqu'à 50 caractères. Si une chaîne
contient moins de caractères, seule la longueur nécessaire est
utilisée.
Par exemple, si vous stockez le nom "Martin", il occupera 6 caractères,
même si vous avez défini la taille à 50. Le reste de l'espace n'est pas
utilisé.

Défilez vers le bas, puis appuyez sur le bouton Enregistrer pour valider
la création de la table.

Méthode 2: Création de la base de données avec

2 Cliquez sur SQL

Exécutez le code SQL ici.


1

Cliquez ici pour


créer la base de
données.
Voici la version SQL de la création de notre base de données.

Défilez vers le bas, puis appuyez sur le bouton Enregistrer pour valider
la création de la table.
2. Code PHP pour se connecter à la base de
données

Détail étape par étape :


1. Déclaration des variables de connexion :

$servername : Représente l'adresse du serveur où se trouve


MySQL. Ici, "localhost" signifie que le serveur est local (sur la
même machine que le script PHP).
$username : Le nom d'utilisateur pour se connecter à MySQL.
Dans cet exemple, l'utilisateur est "root", qui est l'utilisateur par
défaut pour MySQL sur les serveurs locaux comme XAMPP.
$password : Le mot de passe associé à l'utilisateur "root". Dans
les environnements locaux comme XAMPP, ce mot de passe est
souvent vide.
$dbname : Le nom de la base de données que vous souhaitez
utiliser, ici "tuto_bd".
2. Création de la connexion avec mysqli :

Cette ligne utilise la classe mysqli (MySQL Improved) pour


créer une connexion avec le serveur de base de données.
Les paramètres fournis sont :
$servername : L'adresse du serveur (localhost).
$username : Le nom d'utilisateur (root).
$password : Le mot de passe (vide dans ce cas).
$dbname : Le nom de la base de données ("tuto_bd").
Si la connexion est réussie, la variable $conn contiendra
l'objet représentant cette connexion à la base de données.

3. Vérification de la connexion :

Cette condition vérifie si la connexion a échoué en utilisant la


propriété connect_error de l'objet $conn.
Si une erreur de connexion est détectée, le script s'arrête
(die()) et affiche le message "Connexion échouée" suivi du
détail de l'erreur (stocké dans $conn->connect_error).

4. Message de succès :

Si la connexion réussit, cette ligne affiche un message


confirmant que la connexion à la base de données a été
établie avec succès.
Ce type de code est essentiel pour connecter vos applications PHP
à une base de données MySQL.
Une fois connecté, vous pouvez utiliser l'objet $conn pour effectuer
des requêtes SQL comme l'insertion de données, la récupération
d'informations, la mise à jour, etc.

IV. Insérer des données dans la base de


données
Après avoir établi la connexion, nous pouvons insérer des données
dans la table.
1. Structure de la table infos
id (clé primaire auto-incrémentée)
nom
prenom
age

2. Code PHP pour insérer des données


Comme mentionné précédemment, la connexion à la base de
données se fait en définissant les paramètres de connexion
(serveur, nom d'utilisateur, mot de passe et base de données),
puis en utilisant l'objet mysqli pour établir la connexion. Une
vérification est ensuite effectuée pour s'assurer que la connexion
est bien établie.
Explication étape par étape :
La partie suivante du code consiste à insérer des données dans la
table infos de la base de données.

1. Préparation des données à insérer :

Ici, on définit trois variables : $nom, $prenom, et $age qui


contiennent respectivement les valeurs à insérer dans les
colonnes nom, prenom, et age de la table infos.
2. Création de la requête SQL :

Cette requête SQL permet d'insérer les valeurs des


variables dans les colonnes correspondantes de la table
infos.
3. Exécution de la requête :

La méthode query() de l'objet mysqli exécute la requête


SQL. Si l'insertion réussit, un message de confirmation est
affiché. En cas d'échec, un message d'erreur détaillant le
problème s'affiche.
4. Fermeture de la connexion :

Après l'exécution de la requête, il est important de fermer


la connexion à la base de données pour libérer les
ressources.

Test du code pour l’insertion

Message de l’insertion dans le navigateur

Les informations se trouvent désormais dans la base de données.

V. Récupérer des données depuis la base de


données
Récupérer des données est essentiel pour afficher des informations
sur une page web.

1. Code PHP pour récupérer des données


Récupération des données
1. Requête SQL pour récupérer les données :

Cette requête sélectionne les colonnes id, nom, prenom et age de la


table infos dans la base de données.

2. Exécution de la requête :

Cette ligne exécute la requête SQL et stocke le résultat dans la


variable $result.
3. Vérification des résultats :

Cette condition vérifie si la requête a renvoyé au moins une ligne.

4. Affichage des résultats :

Si des résultats sont trouvés, une boucle while parcourt chaque


ligne et affiche les données des colonnes id, nom, prenom, et age de
chaque enregistrement.

5. Aucun résultat trouvé :

Si aucune donnée n'est renvoyée par la requête, le message "0


résultats" est affiché.

6. Fermeture de la connexion :

Une fois toutes les opérations terminées, la connexion à la base de


données est fermée.
VI. Exercices pratiques

Exercice 1 : Connexion à la base de données


Créez un script PHP qui se connecte à une base de données appelée
magasin.
Exercice 2 : Insertion de données
Créez un formulaire HTML pour insérer un produit (nom, prix) dans
une table produits. Utilisez PHP pour traiter les données du
formulaire et les insérer dans la base de données.
Exercice 3 : Récupération des données
Affichez une liste de tous les produits avec leurs noms et prix à
partir de la table produits dans une page web.

Correction des exercices


Exercice 1 : Connexion à la base de données
Énoncé : Créez un script PHP qui se connecte à une base de
données appelée magasin.
Création de la base de données et table
script PHP qui se connecte à une base de données appelée
magasin.

Explication : Le script établit une connexion à la base de données


magasin. Si la connexion échoue, un message d'erreur s'affiche.

Exercice 2 : Insertion de données


Énoncé : Créez un formulaire HTML pour insérer un produit (nom,
prix) dans une table produits. Utilisez PHP pour traiter les données
du formulaire et les insérer dans la base de données.
HTML - Formulaire : formulaire.php
PHP - insert_produit.php

Explication du code PHP :


Connexion à la base de données : Le script se connecte à la base
de données magasin en utilisant mysqli.
Vérification de la soumission du formulaire : Si le formulaire a
été soumis, il récupère les données via $_POST.
Insertion des données : Les données sont insérées dans la table
produits.
Message de confirmation : Si l'insertion est réussie, un message
de confirmation s'affiche ; sinon, un message d'erreur est
retourné.
Exécution:

Formulaire d’ajout

Aperçu dans la base de données

Exercice 3 : Récupération des données


Énoncé : Affichez une liste de tous les produits avec leurs noms et
prix à partir de la table produits dans une page web.
VII. Mise à jour, suppression de données et requêtes
préparées

1. Mise à jour de données


La mise à jour des données dans une base de données est réalisée
à l'aide de la requête UPDATE. Par exemple, pour modifier le prix
d’un produit, nous utilisons le code suivant :
Code PHP pour mettre à jour des données :

Explication : La requête UPDATE modifie le prix d'un produit en


fonction de son nom.

2. Suppression de données
Pour supprimer une entrée de la base de données, nous utilisons
la requête DELETE. Voici un exemple pour supprimer un produit.

Code PHP pour supprimer des données :


Explication : La requête DELETE supprime l’entrée dont le nom
correspond au produit donné.

3. Sécurisation des requêtes avec les requêtes préparées


Les requêtes préparées permettent de sécuriser vos scripts PHP
contre les attaques d'injection SQL. Voici un exemple d’utilisation
de requêtes préparées pour l’insertion de données.

Code PHP pour supprimer des données :

Explication :
prepare() crée une requête avec des paramètres (?).
bind_param() associe des variables à ces paramètres en
précisant les types de données (s pour string, d pour double, etc.).
Cela rend la requête sécurisée contre l’injection SQL.
Formulaire pour la mise à jour

Code PHP de mise à jour: mise_à_jour.php


Formulaire pour la suppression
Code PHP de suppression: suppression.php

Les requêtes préparées sont une méthode plus sûre et plus


performante pour exécuter des requêtes SQL. Elles permettent de
se protéger contre les attaques par injection SQL. Voici comment
on peut insérer, mettre à jour et supprimer des données en
utilisant des requêtes préparées.
Exemple - Insertion avec requêtes préparées

Exemple - Mise à jour avec requêtes préparées

Exemple - Suppression avec requêtes préparées


I. Empêcher l'ajout de doublons dans la base
de données
Dans ce cours, nous allons apprendre à empêcher l'ajout
de doublons dans une base de données lors de l'insertion
de nouveaux produits. Cela signifie que si un produit
portant le même nom et le même prix existe déjà, il sera
impossible de l'ajouter à nouveau.
Nous allons procéder par les étapes suivantes :
1. Vérifier l'existence du produit avant de l'insérer.
2. Si le produit existe déjà, un message d'erreur s'affichera.
3. Si le produit n'existe pas, il sera inséré dans la base de
données.

1. Structure de la table produits


Commençons par créer une table produits dans la base de
données. Cette table contiendra le nom du produit et son
prix.
2. Formulaire HTML pour l'ajout de produit

3. Code PHP pour empêcher l'ajout de doublons


Le fichier PHP ajouter_produit.php gérera l'insertion dans
la base de données. Avant d'insérer un nouveau produit, il
va vérifier si un produit avec le même nom et le même prix
existe déjà dans la base de données.
Explication du Code
1. Requête préparée pour vérifier les doublons : Avant
d'insérer un nouveau produit, nous effectuons une
requête pour vérifier si un produit avec le même nom et
le même prix existe déjà. La requête est préparée et
sécurisée contre les injections SQL.

2. Vérification du nombre de résultats : Si la requête


retourne un résultat (un produit correspondant existe déjà),
alors le produit ne sera pas ajouté et un message d'erreur
s'affichera. Sinon, le produit sera inséré.
3. Insertion des données : Si le produit n'existe pas dans la
base de données, on l'ajoute avec une nouvelle requête
préparée.

PROJET :
formulaire HTML pour ajouter des produits à une base de
données, puis afficher les produits dans un tableau juste
en dessous du formulaire.
Tout au long de ce cours, nous avons utilisé la
méthode mysqli pour établir une connexion à la
base de données.

Mais pour ce projet, nous allons découvrir une


autre manière de se connecter à la base de
données en utilisant la méthode PDO.
Caractéristiques de MySQLi :
Supporte uniquement MySQL : MySQLi ne
fonctionne qu'avec MySQL. Si vous souhaitez
passer à une autre base de données, vous devrez
changer entièrement votre code.
Mode procédural ou orienté objet : MySQLi peut
être utilisé soit en mode procédural, soit en mode
orienté objet. PDO, par contre, ne supporte que le
mode orienté objet.
Requêtes préparées : Comme PDO, MySQLi
prend en charge les requêtes préparées pour se
protéger des injections SQL, mais la syntaxe est
différente.

Caractéristiques de PDO :
Support de multiples bases de données : PDO
est une abstraction pour la base de données qui
permet de se connecter non seulement à MySQL,
mais également à d'autres systèmes de gestion de
bases de données (PostgreSQL, SQLite, MS SQL,
Oracle, etc.). En changeant simplement le DSN,
vous pouvez basculer vers une autre base de
données sans changer beaucoup de code.
Sécurité : PDO permet de sécuriser les requêtes
avec des requêtes préparées (prepared
statements). Cela aide à prévenir les attaques par
injection SQL, ce qui est crucial pour la sécurité des
applications web.
Méthodes avancées : PDO offre plus d'options en
matière de gestion des erreurs, de contrôle des
transactions et de gestion des types de données
retournés (par exemple, récupérer les données
sous forme d'objets ou de tableaux associatifs).

Comparaison directe PDO vs MySQLi

En résumé, PDO est plus flexible et offre une meilleure


portabilité, tandis que MySQLi est plus simple et
spécifiquement conçu pour MySQL. Les deux prennent
en charge les requêtes préparées et sont sécurisés
contre les injections SQL.
Étape 1 : Créer une base de données MySQL
Avant de commencer, vous devez créer une base de données et
une table pour stocker les informations des produits. Voici un
exemple de script SQL pour créer une base de données et une
table :

Étape 2 : Créer le fichier de connexion à la base de données


Créez un fichier db.php qui contient les informations de
connexion à la base de données :
Étape 3 : Créer le formulaire HTML et le script PHP pour ajouter des
produits
Dans ce fichier, vous aurez à la fois le formulaire HTML pour saisir les
informations des produits et le script PHP qui les enregistre dans la base
de données.
Créez un fichier index.php :
Tester le code

Ajoute la fonctionnalité de suppression et


de mise à jour des produits

Nous allons ajouter deux boutons supplémentaires à chaque


ligne du tableau :
1. Un bouton pour supprimer un produit.
2. Un bouton pour mettre à jour un produit.
Étape 1: Modification de la table dans le fichier
index.php pour inclure les boutons de suppression et
mise à jour

Ajoutons la logique pour supprimer un produit dans le


fichier supprimer.php.
Fonctionnalité de mise à jour (modification des
produits)
Pour la modification des produits, nous allons créer un
fichier modifier.php qui récupérera l'ID du produit et
affichera un formulaire permettant de le modifier.

Code php pour la modification du produit


Code du formulaire HTML pour la modification du produit
Améliorations possibles: Styliser le formulaire et le
tableau avec du CSS pour un meilleur rendu visuel.

Correction de bug:
lorsque la page est rafraîchie après l'envoi d'un formulaire, ce
qui entraîne une nouvelle soumission du formulaire et donc
une duplication des données. Pour corriger ce bug, il faut
éviter de soumettre les données du formulaire lorsque la page
est actualisée.
Une méthode simple pour éviter ce problème est d'utiliser une
redirection après la soumission du formulaire. Cela permet
d'empêcher le navigateur de renvoyer les données du
formulaire lorsque la page est rechargée.
La meilleure solution pour éviter cette duplication est
d'appliquer la technique de Post/Redirect/Get (PRG). Elle
consiste à rediriger l'utilisateur vers une nouvelle page après le
traitement du formulaire, de sorte qu'un simple rechargement
de la page ne renvoie pas la requête POST et n'ajoute pas un
autre produit.
Explication des changements
Après l'insertion du produit dans la base de données, nous
redirigeons vers la page principale (index.php) en utilisant la
fonction header(). Cela empêche la soumission multiple du
formulaire lorsque l'utilisateur actualise la page.
Utilisation de exit; juste après la redirection pour arrêter
l'exécution du script après la redirection. Cela garantit que le
reste du code n'est pas exécuté après la redirection.

Le message de succès est transmis à la page via l'URL en


utilisant ?message=Produit ajouté avec succès !. Vous pouvez
l'afficher dans la page principale en récupérant la variable
GET :

Vous aimerez peut-être aussi