Ecrire des données avec PDO
Sommaire
- 1- Objectifs
- 2- Présentation
- 3- Insertion des données
- 3.1- Création d'un formulaire HTML
- 3.2- Requête SQL
- 3.3- Traitement PHP
- 3.4- Requête
INSERTavec des espaces réservés de position - 3.5- Requête
INSERTavec des espaces réservés nommés - 3.6- Enchaîner
execute ()pourprepare () - 3.7- Contrôler les champs mot de passe
- 4- Requête
UPDATEen utilisant PDO - 4.1- Requête
UPDATEavec espaces réservés positionnels - 4.2- Requête
UPDATEavec des espaces réservés nommés - 4.3- Application
- 4.3.1- Cours PHP
Écrire des données avec PDO
-
Objectifs
- Utiliser PDO de PHP, pour manipuler des données insérer, modifier et supprimer les données d’une base de données
-
Présentation
- Nous avons vu dans la section précédente que l’on pouvait facilement récupérer des informations de notre base de données en utilisant le PDO.
- Dans cette section on va voir comment ajouter, modifier et supprimer des données. Pour cela, nous allons aborder de nouvelles requêtes SQL fondamentales et qu’il vous faut connaître :INSERT,UPDATE et DELETE.
- Dans ce tutoriel, vous allez créer et mettre en place la base de données pour votre site « gestion des apprenants« .
- Le schéma de la base de données est la suivante:
-
Insertion des données
-
Création d’un formulaire HTML
- Le formulaire HTML est l’outil privilégié pour saisir des données et les envoyer vers le serveur PHP/MySQL.
- La méthode du formulaire "post" est privilégié, car elle permet de ne pas rendre visible les données à l’utilisateur par l’URL
-
Requête SQL
- Pour ajouter un enregistrement à une base de donnée, vous aurez besoin de connaître la requête SQL
INSERT INTO. - Il est possible d’écrire l’instruction
INSERT INTOde deux manières. - La première méthode spécifie à la fois les noms des colonnes et les valeurs à insérer:
INSERT INTO nom_de_la_table (colonne1, colonne2, colonne3, ...)
VALUES (valeur1, valeur2, valeur3, ...);- Pour ajouter des valeurs à toutes les colonnes de la table, vous n’avez pas besoin de spécifier les noms de colonne dans la requête SQL. Cependant, assurez-vous que l’ordre des valeurs est dans le même ordre que les colonnes du tableau. La syntaxe
INSERT INTOserait la suivante: INSERT INTO nom_de_la_table
VALUES (valeur1, valeur2, valeur3, ...);- Syntaxe d’insertion alternative (propre à MySQL) :
INSERT INTO nom_de_la_table set colonne1=valeur1, colonne2=valeur2, colonne3=valeur3, ...;-
Traitement PHP
- Appeler le fichier de connexion.php crée dans la section précédente
- Vérifier l’existence des saisies obligatoires correspondant aux variables $_POST[‘variable01’], $_POST[‘variable02’] ….
- Cette fois, au lieu de faire appel à la fonction
query()(que l’on utilisait dans la section précédente pour récupérer des données), on va utiliser cette fois ci la fonctionexec()qui est prévue pour exécuter des modifications sur la base de données - L’insertion de données variables se réalise grâce à une requête préparée pour plus d’information concernant les requêtes préparées lire l’article suivant
- Seule la commande SQL
INSERTdistingue cette opération de celle de lecture de données. Le script de l’exemple suivant réalise ce type d’insertion en récupérant les données saisies par l’utilisateur dans un formulaire lors d’un ajout d’un apprenant à la table apprenants. - Vous n’avez pas à vérifier le résultat de execute()(comme il est souvent montré dans les didacticiels de mauvaise qualité). Une telle condition n’aura aucun sens, car en cas d’erreur, une exception PDOException sera lancée et l’exécution du script sera terminée, ce qui signifie qu’une telle condition n’atteindra jamais la partie
else. - Aucun opérateur
try ... catchne doit être utilisé, sauf si vous disposez d’un scénario spécifique pour gérer l’erreur, tel qu’une annulation de transaction illustrée ci-dessous. Veuillez consulter l’article sur les rapports d’erreurs pour plus de détails. -
Enchaîner
execute ()pourprepare () - Pour les deux méthodes vous pouvez enchainer execute() et prepare() comme suit:
-
Contrôler les champs mot de passe
- Pour plus d’information consulter l’article :Contrôler les champs mot de passe
- Avant d’envoyer les données au serveur les deux champs mot de passe et réécriture de mot de passe doivent être égaux.
- L’utilisateur doit être averti du fiabilité de mot de passe selon les conditions suivantes:
- Un mot de passe est correcte s’il contient:
- Au moins 1 caractère majuscule.
- Au moins 1 caractère minuscule.
- Au moins 1 chiffre.
- Au moins 1 caractère spécial.
- Minimum 10 caractères.
- Le mot de passe doit être crypté
- Formulaire de saisie
-
Requête
UPDATEen utilisant PDO - Pour exécuter une requête
UPDATEavec PDO, suivez simplement les étapes ci-dessous : - créer une instruction SQL UPDATE correcte
- remplacer toutes les valeurs réelles par des espaces réservés
- préparer la requête résultante
- exécutez l’instruction, en envoyant toutes les valeurs réelles à execute()sous la forme d’un tableau.
- ou vous pouvez enchaîner
execute()pourprepare(): - Dans le cas où vous avez un tableau prédéfini avec des valeurs, ou préférez les espaces réservés nommés en général, le code serait
- ou vous pouvez enchaîner
execute()pourprepare(): -
Application
- Un utilisateur doit pouvoir modifier des enregistrements dans la table "apprenants" ses coordonnées, son adresse ou son adresse mail par exemple.
- L’exemple suivant crée une page contenant un formulaire qui permet la saisie du code de l’apprenant dans une zone de texte.
- Formulaire de modification

Afficher la solution
Requête INSERT avec des espaces réservés de position

Requête INSERT avec des espaces réservés nommés

Vous n’avez pas à vérifier le résultat de
execute(). Car en cas d’erreur, une exceptionPDOExceptionsera lancée et l’exécution du script sera terminée, ce qui signifie qu’une telle condition n’atteindra jamais la conditionelse.
L’opérateurtry ... catchne doit être utilisé.

Vous l’aurez compris, stocker un mot de passe en clair est une faute grave et ne se justifie jamais. Votre mot de passe est une donnée ultrasensible et ne doit être connu que de vous.

Afficher la solution
Partie HTML :
Partie PHP :
Partie JS :
Requête UPDATE avec espaces réservés positionnels
-
Méthode 01

Méthode 02
![]()
Requête UPDATE avec des espaces réservés nommés
Méthode 01

Méthode 02

Afficher la solution
Partie HTML à ajouter dans le fichier header.php :
Partie HTML recherche apprenant :
Partie HTML modifier un apprenant :
Partie PHP recherche apprenant :
Partie PHP modifier apprenant :


