Introduction à PHP et MySQL

Bienvenue dans la première séance de formation sur l'introduction à PHP et MySQL. Avant de commencer, voici les prérequis pour tirer le meilleur parti de cette formation :

1. Avoir une bonne base en HTML, CSS et Javascript. Si vous ne maîtrisez pas ces langages, vous pouvez suivre la formation disponible ici : https://carrefour.codingclubhaiti.com/seance/concevez-votre-site-web-avec-html-css-et-javascript/8/16

2. Comprendre les logiques de base de la programmation informatique, telles que les variables, les conditions (if/else), les boucles, les tableaux, etc. Si vous n'êtes pas familier avec ces concepts, vous pouvez suivre la formation disponible ici : https://carrefour.codingclubhaiti.com/seance/programmation-fondamentale-cours-complet-pour-debutant-en-programmation/1/1

3. Être capable d'installer des logiciels sur votre ordinateur.

4. Avoir des notions de base en gestion de bases de données. Ne vous inquiétez pas, nous allons vous expliquer les bases de données au cours de cette formation.

Dans cette première séance, nous aborderons les sujets suivants :

- Définition de PHP
- Utilité de PHP
- Quand une page est-elle dynamique?
- Exemples d'utilisation de PHP
- Utilité de MySQL

1. Définition de PHP :

PHP (Hypertext Preprocessor) est un langage de script côté serveur largement utilisé pour le développement web. Il permet de générer des pages web dynamiques et d'interagir avec des bases de données. PHP est intégré dans le code HTML et s'exécute sur le serveur web avant d'être envoyé au navigateur du client.

2. Utilité de PHP :

PHP est utilisé pour rendre vos pages web dynamiques. Par exemple, en visitant Facebook, vous pouvez constater que les pages sont totalement dynamiques, avec des profils, des contacts, des pages, des notifications, etc.

3. Quand une page est-elle dynamique?

Prenons l'exemple d'un portfolio créé avec des pages statiques en HTML, CSS et Javascript (Accueil, à propos, Nos services, Blog, Contactez-nous, etc.). Si vous souhaitez apporter des modifications à votre site, comme ajouter, modifier ou supprimer des services, des articles de blog ou encore le texte de la page "À propos" et autres, vous devrez modifier directement le code HTML, ce qui peut être fastidieux. De plus, si vous souhaitez envoyer des e-mails à partir de votre page de contact, vous ne pourrez pas le faire avec une page statique. En outre, avec une page statique, le contenu reste le même pour tous les visiteurs. En revanche, avec une page dynamique, les visiteurs peuvent voir du contenu personnalisé en fonction de leurs requêtes.

4. Que peut on faire avec PHP?

1- Développement de sites web dynamiques : PHP permet de créer des sites web interactifs en générant du contenu dynamique en fonction des interactions des utilisateurs.

2- Systèmes de gestion de contenu (CMS) : Des plateformes comme WordPress, Joomla et Drupal sont développées en PHP pour permettre aux utilisateurs de créer et de gérer facilement le contenu de leur site web.

3- E-commerce : PHP est utilisé pour développer des sites de commerce électronique, en permettant aux utilisateurs d'ajouter des produits au panier, de passer des commandes, de gérer les paiements et les expéditions.

4- Forums et blogs : PHP est couramment utilisé pour créer des forums en ligne et des blogs où les utilisateurs peuvent interagir, commenter et partager du contenu.

5- Authentification utilisateur : PHP est utilisé pour gérer les systèmes d'inscription, de connexion et de gestion des profils d'utilisateurs sur les sites web.

6- Systèmes de réservation : De nombreux sites web de réservation d'hôtels, de billets d'avion ou de réservation de tables dans des restaurants sont développés en PHP.

7- Messagerie : PHP peut être utilisé pour développer des systèmes de messagerie en temps réel ou des applications de chat.

8- Traitement de formulaires : PHP est utilisé pour collecter et traiter les données saisies par les utilisateurs dans les formulaires en ligne.

9- Applications d'entreprise : PHP est également utilisé dans le développement d'applications d'entreprise pour gérer les processus internes, la gestion des employés, etc.

10- Intégration avec des bases de données : PHP facilite l'intégration avec diverses bases de données, ce qui permet de stocker et de récupérer des informations côté serveur.

11- Systèmes de gestion des fichiers : PHP peut être utilisé pour télécharger, gérer et manipuler des fichiers sur le serveur.

12- API et services web : PHP est utilisé pour créer des API et des services web qui permettent aux applications de communiquer entre elles.

13- Réseaux sociaux : PHP est utilisé pour développer des fonctionnalités de réseau social telles que les profils d'utilisateurs, les flux d'actualités, les likes, les commentaires, etc.

14- Systèmes de réservation de rendez-vous : PHP est utilisé pour créer des systèmes de réservation de rendez-vous pour des professionnels de la santé, des salons de beauté, des centres de fitness, etc.

15- Galeries d'images : PHP permet de créer des galeries d'images en ligne où les utilisateurs peuvent télécharger, organiser et partager leurs photos.

16- Systèmes de vote et sondages en ligne : PHP peut être utilisé pour mettre en place des systèmes de vote en ligne, des sondages et des questionnaires interactifs.

17- Jeux en ligne : PHP est utilisé pour développer des jeux en ligne simples, tels que des jeux de quiz, des jeux de mots, etc.

Ces exemples ne sont qu'une partie des utilisations concrètes de PHP. Grâce à sa facilité d'utilisation et à sa polyvalence, PHP est un langage très populaire pour le développement web et continue d'être largement utilisé dans l'industrie.

5. Quelle site internet utilise PHP comme backend en ce moment ou l'ai utilisé dans le passé?

Il y a un grand nombre de sites web qui utilisent ou ont utilisé PHP comme backend, car c'est l'un des langages de programmation les plus populaires pour le développement web. Voici quelques exemples de sites célèbres qui ont utilisé PHP comme backend :

1- Facebook : Facebook était à l'origine développé en utilisant PHP.

2- WordPress : WordPress est l'un des CMS (système de gestion de contenu) les plus populaires, utilisé par des millions de sites web dans le monde. Il est entièrement développé en PHP.

3- Wikipedia : Wikipedia, l'encyclopédie en ligne collaborative, utilise PHP comme langage principal pour gérer et afficher son contenu.

4- Yahoo : Dans le passé, Yahoo utilisait largement PHP pour certains de ses services web.

5- Flickr : Flickr, la plateforme de partage de photos, était initialement développée en PHP avant d'être rachetée par Yahoo.

6- Tumblr : Tumblr est une plateforme de blogging qui a été développée en utilisant PHP.

7- Slack : Le site web de Slack, un service de messagerie pour les équipes de travail, utilise PHP dans son backend.

8- Mailchimp : Mailchimp, une plateforme de marketing par e-mail, a utilisé PHP pour développer une partie de son infrastructure backend.

9- Badoo : Badoo, un réseau social de rencontres, utilise PHP comme langage principal pour gérer ses fonctionnalités.

Parlons maintenant de MySQL.

MySQL est un système de gestion de base de données. Nous aurons besoin d'enregistrer les données pour les utiliser ultérieurement.

Prenons par exemple une école qui enregistre les notes des étudiants dans un fichier Excel pour ensuite effectuer les calculs et afficher les résultats. Pour cela, nous aurons besoin d'une base de données pour stocker ces informations, telles que le nom, le prénom, la note, etc.

Dans cette formation, nous utiliserons MySQL à travers PHPMyAdmin, que nous retrouverons dans le logiciel que nous allons utiliser.

Logiciels nécessaires pour programmer en PHP

Pour les sites statiques, nous aurons besoin d'un navigateur (Firefox, Chrome, Opera, etc.), d'un éditeur de texte (VS Code, Notepad++, Sublime Text, etc.), mais aussi d'un serveur. Le PHP est un langage qui s'exécute côté serveur, c'est pourquoi nous avons besoin d'un serveur.

Comme serveur local, vous avez plusieurs possibilités. Les plus connues sont WAMP (pour Windows), XAMP, MAMP (pour Mac OS), EASY PHP, etc. Dans cette formation, nous utiliserons WAMP, qui est largement répandu.

Pour commencer, rendez-vous sur le site officiel : https://www.wampserver.com/

Téléchargez la dernière version et choisissez la version 64 bits ou 32 bits en fonction de votre système d'exploitation.

Vous pourriez rencontrer des difficultés lors de l'installation si votre ordinateur manque certains fichiers DLL. Si vous éprouvez des difficultés à installer WAMP, je vous conseille d'essayer XAMP, qui fonctionne de manière similaire.

Sur mobile, vous pouvez télécharger selon mes recherches :

- AWD (Android Web Developer) : Cette application propose un environnement complet pour le développement web, y compris la prise en charge de PHP et de MySQL.
Lien : https://play.google.com/store/apps/details?id=org.kidinov.awd&hl=en_US

- BufferCode : C'est une application qui offre un environnement de développement web sur iOS, prenant en charge PHP, MySQL et d'autres langages.
Lien : https://apps.apple.com/us/app/buffer-editor-code-editor/id502633252

Je ne les ai pas encore expérimentées, mais je le ferai pour mieux vous orienter.

En résumé, voici tout ce que vous devez savoir sur PHP et MySQL pour débuter. Je vous donne rendez-vous dans la prochaine séance pour apprendre comment intégrer du code PHP dans un site web en HTML et le rendre dynamique. Assurez-vous d'avoir installé les logiciels nécessaires avant de suivre la prochaine séance. À la séance prochaine !

05 Août 2023 1

Good job.????

THERMIDOR SchiloMike Weedley F 05 Août 2023Répondre

Séances

1 - Introduction à PHP et MySQL

Bienvenue dans la première séance de formation sur l'introduction à PHP et MySQL. Avant de commencer, voici les prérequis pour tirer le meilleur parti de cette formation : 1. Avoir une bonne base en HTML, CSS et Javascript. Si vous ne maîtrisez pas ces langages, vous pouvez suivre la formation disponible ici : https://carrefour.codingclubhaiti.com/seance/concevez-votre-site-web-avec-html-css-et-javascript/8/16 2. Comprendre les logiques de base de la programmation informatique, telles que les variables, les conditions (if/else), les boucles, les tableaux, etc. Si vous n'êtes pas familier avec ces concepts, vous pouvez suivre la formation disponible ici : https://carrefour.codingclubhaiti.com/seance/programmation-fondamentale-cours-complet-pour-debutant-en-programmation/1/1 3. Être capable d'installer des logiciels sur votre ordinateur. 4. Avoir des notions de base en gestion de bases de données. Ne vous inquiétez pas, nous allons vous expliquer les bases de données au cours de cette formation. Dans cette première séance, nous aborderons les sujets suivants : - Définition de PHP - Utilité de PHP - Quand une page est-elle dynamique? - Exemples d'utilisation de PHP - Utilité de MySQL b~1. Définition de PHP :~b PHP (Hypertext Preprocessor) est un langage de script côté serveur largement utilisé pour le développement web. Il permet de générer des pages web dynamiques et d'interagir avec des bases de données. PHP est intégré dans le code HTML et s'exécute sur le serveur web avant d'être envoyé au navigateur du client. b~2. Utilité de PHP :~b PHP est utilisé pour rendre vos pages web dynamiques. Par exemple, en visitant Facebook, vous pouvez constater que les pages sont totalement dynamiques, avec des profils, des contacts, des pages, des notifications, etc. b~3. Quand une page est-elle dynamique?~b Prenons l'exemple d'un portfolio créé avec des pages statiques en HTML, CSS et Javascript (Accueil, à propos, Nos services, Blog, Contactez-nous, etc.). Si vous souhaitez apporter des modifications à votre site, comme ajouter, modifier ou supprimer des services, des articles de blog ou encore le texte de la page "À propos" et autres, vous devrez modifier directement le code HTML, ce qui peut être fastidieux. De plus, si vous souhaitez envoyer des e-mails à partir de votre page de contact, vous ne pourrez pas le faire avec une page statique. En outre, avec une page statique, le contenu reste le même pour tous les visiteurs. En revanche, avec une page dynamique, les visiteurs peuvent voir du contenu personnalisé en fonction de leurs requêtes. b~4. Que peut on faire avec PHP?~b 1- Développement de sites web dynamiques : PHP permet de créer des sites web interactifs en générant du contenu dynamique en fonction des interactions des utilisateurs. 2- Systèmes de gestion de contenu (CMS) : Des plateformes comme WordPress, Joomla et Drupal sont développées en PHP pour permettre aux utilisateurs de créer et de gérer facilement le contenu de leur site web. 3- E-commerce : PHP est utilisé pour développer des sites de commerce électronique, en permettant aux utilisateurs d'ajouter des produits au panier, de passer des commandes, de gérer les paiements et les expéditions. 4- Forums et blogs : PHP est couramment utilisé pour créer des forums en ligne et des blogs où les utilisateurs peuvent interagir, commenter et partager du contenu. 5- Authentification utilisateur : PHP est utilisé pour gérer les systèmes d'inscription, de connexion et de gestion des profils d'utilisateurs sur les sites web. 6- Systèmes de réservation : De nombreux sites web de réservation d'hôtels, de billets d'avion ou de réservation de tables dans des restaurants sont développés en PHP. 7- Messagerie : PHP peut être utilisé pour développer des systèmes de messagerie en temps réel ou des applications de chat. 8- Traitement de formulaires : PHP est utilisé pour collecter et traiter les données saisies par les utilisateurs dans les formulaires en ligne. 9- Applications d'entreprise : PHP est également utilisé dans le développement d'applications d'entreprise pour gérer les processus internes, la gestion des employés, etc. 10- Intégration avec des bases de données : PHP facilite l'intégration avec diverses bases de données, ce qui permet de stocker et de récupérer des informations côté serveur. 11- Systèmes de gestion des fichiers : PHP peut être utilisé pour télécharger, gérer et manipuler des fichiers sur le serveur. 12- API et services web : PHP est utilisé pour créer des API et des services web qui permettent aux applications de communiquer entre elles. 13- Réseaux sociaux : PHP est utilisé pour développer des fonctionnalités de réseau social telles que les profils d'utilisateurs, les flux d'actualités, les likes, les commentaires, etc. 14- Systèmes de réservation de rendez-vous : PHP est utilisé pour créer des systèmes de réservation de rendez-vous pour des professionnels de la santé, des salons de beauté, des centres de fitness, etc. 15- Galeries d'images : PHP permet de créer des galeries d'images en ligne où les utilisateurs peuvent télécharger, organiser et partager leurs photos. 16- Systèmes de vote et sondages en ligne : PHP peut être utilisé pour mettre en place des systèmes de vote en ligne, des sondages et des questionnaires interactifs. 17- Jeux en ligne : PHP est utilisé pour développer des jeux en ligne simples, tels que des jeux de quiz, des jeux de mots, etc. Ces exemples ne sont qu'une partie des utilisations concrètes de PHP. Grâce à sa facilité d'utilisation et à sa polyvalence, PHP est un langage très populaire pour le développement web et continue d'être largement utilisé dans l'industrie. b~5. Quelle site internet utilise PHP comme backend en ce moment ou l'ai utilisé dans le passé?~b Il y a un grand nombre de sites web qui utilisent ou ont utilisé PHP comme backend, car c'est l'un des langages de programmation les plus populaires pour le développement web. Voici quelques exemples de sites célèbres qui ont utilisé PHP comme backend : 1- Facebook : Facebook était à l'origine développé en utilisant PHP. 2- WordPress : WordPress est l'un des CMS (système de gestion de contenu) les plus populaires, utilisé par des millions de sites web dans le monde. Il est entièrement développé en PHP. 3- Wikipedia : Wikipedia, l'encyclopédie en ligne collaborative, utilise PHP comme langage principal pour gérer et afficher son contenu. 4- Yahoo : Dans le passé, Yahoo utilisait largement PHP pour certains de ses services web. 5- Flickr : Flickr, la plateforme de partage de photos, était initialement développée en PHP avant d'être rachetée par Yahoo. 6- Tumblr : Tumblr est une plateforme de blogging qui a été développée en utilisant PHP. 7- Slack : Le site web de Slack, un service de messagerie pour les équipes de travail, utilise PHP dans son backend. 8- Mailchimp : Mailchimp, une plateforme de marketing par e-mail, a utilisé PHP pour développer une partie de son infrastructure backend. 9- Badoo : Badoo, un réseau social de rencontres, utilise PHP comme langage principal pour gérer ses fonctionnalités. b~Parlons maintenant de MySQL.~b MySQL est un système de gestion de base de données. Nous aurons besoin d'enregistrer les données pour les utiliser ultérieurement. Prenons par exemple une école qui enregistre les notes des étudiants dans un fichier Excel pour ensuite effectuer les calculs et afficher les résultats. Pour cela, nous aurons besoin d'une base de données pour stocker ces informations, telles que le nom, le prénom, la note, etc. Dans cette formation, nous utiliserons MySQL à travers PHPMyAdmin, que nous retrouverons dans le logiciel que nous allons utiliser. b~Logiciels nécessaires pour programmer en PHP~b Pour les sites statiques, nous aurons besoin d'un navigateur (Firefox, Chrome, Opera, etc.), d'un éditeur de texte (VS Code, Notepad++, Sublime Text, etc.), mais aussi d'un serveur. Le PHP est un langage qui s'exécute côté serveur, c'est pourquoi nous avons besoin d'un serveur. Comme serveur local, vous avez plusieurs possibilités. Les plus connues sont WAMP (pour Windows), XAMP, MAMP (pour Mac OS), EASY PHP, etc. Dans cette formation, nous utiliserons WAMP, qui est largement répandu. Pour commencer, rendez-vous sur le site officiel : https://www.wampserver.com/ Téléchargez la dernière version et choisissez la version 64 bits ou 32 bits en fonction de votre système d'exploitation. Vous pourriez rencontrer des difficultés lors de l'installation si votre ordinateur manque certains fichiers DLL. Si vous éprouvez des difficultés à installer WAMP, je vous conseille d'essayer XAMP, qui fonctionne de manière similaire. Sur mobile, vous pouvez télécharger selon mes recherches : - AWD (Android Web Developer) : Cette application propose un environnement complet pour le développement web, y compris la prise en charge de PHP et de MySQL. Lien : https://play.google.com/store/apps/details?id=org.kidinov.awd&hl=en_US - BufferCode : C'est une application qui offre un environnement de développement web sur iOS, prenant en charge PHP, MySQL et d'autres langages. Lien : https://apps.apple.com/us/app/buffer-editor-code-editor/id502633252 Je ne les ai pas encore expérimentées, mais je le ferai pour mieux vous orienter. En résumé, voici tout ce que vous devez savoir sur PHP et MySQL pour débuter. Je vous donne rendez-vous dans la prochaine séance pour apprendre comment intégrer du code PHP dans un site web en HTML et le rendre dynamique. Assurez-vous d'avoir installé les logiciels nécessaires avant de suivre la prochaine séance. À la séance prochaine !

2 - Intégration de PHP dans vos pages

Bienvenue à la 2ème séance de formation dédiée à l'introduction à PHP et MySQL pour la création de sites web dynamiques. Au cours de cette séance, nous allons écrire nos premiers codes PHP et approfondir notre compréhension de l'intégration de PHP dans un fichier. L'objectif de cette séance est de vous fournir les connaissances essentielles pour manipuler PHP et l'intégrer dans vos fichiers web. En comprenant les bases de l'interaction entre PHP et vos pages web, vous serez en mesure de créer des sites interactifs et riches en fonctionnalités. b~- Quelle est la différence entre HTML, CSS et PHP?~b a) HTML est utilisé pour structurer une page web et permet d'ajouter divers éléments tels que du texte, des images, des liens, des vidéos, des formulaires, etc. b) CSS est utilisé pour styliser une page web en ajoutant des propriétés telles que la couleur, la largeur, la hauteur, etc. c) PHP permet de générer du contenu de manière dynamique. Grâce à PHP, vous pouvez générer du code HTML et CSS de manière dynamique. Il s'exécute côté serveur, renvoyant au navigateur du contenu généralement en HTML. Il permet d'effectuer des calculs, de gérer des formulaires, de traiter des données provenant de bases de données, et d'autres opérations dynamiques. b~- Quels sont les avantages de l'utilisation de PHP pour générer du contenu dynamique?~b 1. Réutilisation de code : PHP permet de créer des scripts et des fonctions réutilisables, simplifiant le développement et la maintenance du site web. 2. Interaction avec les bases de données : PHP est couramment utilisé pour interagir avec les bases de données, ce qui permet de stocker et de récupérer des données dynamiques telles que des articles de blog et des informations d'utilisateurs. 3. Formulaires et traitement des données : PHP facilite la collecte et le traitement des données à partir de formulaires web, en permettant la validation et la manipulation des données soumises par les utilisateurs. 4. Personnalisation du contenu : En utilisant PHP, vous pouvez afficher un contenu spécifique à chaque utilisateur en fonction de leurs préférences, de leur historique d'activité ou d'autres critères, améliorant ainsi l'expérience utilisateur. 5. Inclusion de fichiers et de templates : PHP permet d'inclure des fichiers réutilisables dans différentes pages, simplifiant la gestion des mises à jour et maintenant la cohérence du design sur l'ensemble du site. 6. Gestion des sessions et des cookies : PHP prend en charge la gestion des sessions utilisateur et des cookies, ce qui permet de créer des fonctionnalités telles que la connexion des utilisateurs et le suivi des paniers d'achat. 7. Intégration de services tiers : PHP facilite l'intégration de services et d'API tiers, ajoutant des fonctionnalités telles que le partage sur les réseaux sociaux et le traitement des paiements en ligne. b~- Comment intégrer PHP dans un fichier (<?php ?>)~b Les balises PHP b~(<?php ?>)~b servent à incorporer du code PHP dans un fichier HTML. Ces balises permettent d'insérer des instructions, des opérations et des logiques côté serveur au sein d'une page web, créant ainsi du contenu dynamique. Voici comment elles fonctionnent et leur rôle dans un fichier HTML : Ouvrir et fermer les balises PHP : Pour commencer une section de code PHP dans un fichier HTML, utilisez la balise d'ouverture <?php et pour la fermer, employez la balise de fermeture ?>. Tout le code PHP doit être inclus entre ces balises. ~code~ <?php // Code PHP ici ?> ~/code~ b~Incorporer du code PHP :~b Vous pouvez insérer n'importe quel code PHP valide entre les balises. Cela inclut des instructions conditionnelles, des boucles, des appels de fonctions, des opérations mathématiques, etc. ~code~ <?php $nom = "Alice"; echo "Bonjour, " . $nom; ?> ~/code~ b~Mélange avec le code HTML :~b Vous pouvez combiner des balises PHP avec du code HTML dans le même fichier. Cela vous permet de créer des pages web dynamiques en générant du contenu HTML en fonction des valeurs PHP. ~code~ <!DOCTYPE html> <html> <head> <title>Exemple PHP</title> </head> <body> <?php $nom = "Alice"; ?> <p>Bonjour <?php echo $nom; ?></p> ou <?php echo "<p>Bonjour ".$nom."</p>"; ?> </body> </html> ~/code~ En résumé, les balises PHP (<?php ?>) sont utilisées pour incorporer du code PHP dans un fichier HTML. - Comment dynamiser une page web en utilisant PHP pour rendre le contenu plus interactif et personnalisé. b~Affichage de contenu conditionnel :~b Vous pouvez afficher différents contenus en fonction de conditions. Par exemple, vous pourriez afficher un message différent selon l'heure de la journée : ~code~ <!DOCTYPE html> <html> <head> <title>Salutation</title> </head> <body> <?php $heure = date("H"); if ($heure < 12) { echo "<p>Bonjour, bienvenue</p>"; } else { echo "<p>Bonsoir, bienvenue</p>"; } ?> </body> </html> ~/code~ b~Afficher la date actuelle :~b ~code~ <!DOCTYPE html> <html> <head> <title>Date</title> </head> <body> <?php echo "<p>Aujourd'hui, nous sommes le " . date("d/m/Y H:i:s") . "</p>"; ?> </body> </html> ~/code~ b~Inclusion d'un fichier externe :~b Créez un fichier "entete.php" contenant l'en-tête de votre site, puis utilisez ce fichier dans toutes vos pages. ~code~ <?php include("entete.php"); ?> <body> </body> </html> ~/code~ b~Effectuer des opérations :~b ~code~ <!DOCTYPE html> <html> <head> <title>Date</title> </head> <body> <?php $prixDachat = 12; $transport = 2; $prixDeRevient = $prixDachat + $transport; echo "<p>Le prix de revient est : " . $prixDeRevient . "</p>"; ?> </body> </html> ~/code~ Ces exemples basiques illustrent comment PHP peut être utilisé pour ajouter de l'interactivité et de la dynamique à une page web, en fonction de différentes situations et besoins. b~Exercice :~b Afficher la date actuelle et les informations de profil d'un utilisateur dans un paragraphe (Nom, Prénom, Email, Téléphone, Date de naissance, Age, Adresse) en utilisant des variables. Par example pour afficher Date : 12/08/2023 13:23:10 Nom : Appolon Prénom : Guy Alain Email : appolonguyalain65@gmail.com Téléphone : 34228202 Date de naissance : 12 Juillet 2000 Age : 23 ans Adresse : Carrefour, Ouest, Haiti Essayez de faire l'exercice selon votre compréhension et lors de la prochaine session, nous le ferons ensemble.

3 - Maîtriser la Concaténation en PHP

La concaténation en PHP est le processus de combinaison de chaînes de caractères pour en former une seule. Cela peut être utile lorsque vous voulez afficher des informations en les mélangeant avec du texte ou d'autres données. En PHP, le point (`..`) ou ("..") est utilisé pour concaténer des chaînes. Voici quelques exemples concrets pour illustrer la concaténation en PHP : b~Exemple 1 : Concaténation de chaînes simples~b ~code~ $nom = "Appolon"; $age = 20; $message="Je suis fier d'être membre du coding club kafou."; echo "Bonjour, je m'appelle ".$nom." et j'ai ".$age." ans et voici mon message : ".$message; ~/code~ b~Résultat :~b Bonjour, je m'appelle Appolon et j'ai 20 ans et voici mon message : Je suis fier d'être membre du coding club kafou. b~Exemple 2 : Concaténation avec des valeurs numériques~b ~code~ $gainParMois = 15000; $nombreDeMois = 12; $total = $gainParMois * $nombreDeMois; echo "Le gain annuel est : ".$total." Gourdes."; ~/code~ b~Résultat :~b Le gain annuel est : 180000 Gourdes. b~Exemple 3 : Concaténation avec des variables~b ~code~ $ville = "Carrefour"; $temperature = 22; echo "Aujourd'hui à ".$ville.", il fait ".$temperature." degrés Celsius."; ~/code~ b~Résultat :~b Aujourd'hui à Carrefour, il fait 22 degrés Celsius. b~Exemple 4 : Concaténation de chaînes multiples~b ~code~ $ingredient1 = "farine"; $ingredient2 = "oeufs"; $ingredient3 = "sucre"; echo "Ingrédients : ".$ingredient1.", ".$ingredient2.", ".$ingredient3."."; ~/code~ b~Résultat :~b Ingrédients : farine, oeufs, sucre. b~Exemple 5 : Concaténation à partir d'un tableau~b ~code~ $categories=array("Électronique", "Santé", "Beauté", "Maison"); echo "<ul>"; foreach($categories as $categorie) { echo "<li>".$categorie."</li>"; } echo "</ul>"; ~/code~ b~Résultat :~b - Électronique - Santé - Beauté - Maison En utilisant la concaténation en PHP, vous pouvez combiner des valeurs de différentes manières pour créer des messages ou des contenus dynamiques en fonction des données que vous avez. Cela permet de rendre votre code plus lisible et plus convivial pour les utilisateurs.

4 - Variables Locales, Globales et Superglobales

Bienvenue dans la 4ème séance de formation dédiée à l'introduction à PHP et MySQL. Au cours de cette séance, nous plongerons dans le monde des variables en PHP et explorerons leurs différentes portées. Les variables jouent un rôle crucial dans la programmation, permettant de stocker et de manipuler des données. Dans cette séance, nous allons nous concentrer sur trois types de variables : les Variables Locales, les Variables Globales et les Superglobales. b~Variables Locales :~b Ces variables sont des éléments clés à l'intérieur de fonctions en PHP. Elles sont déclarées à l'intérieur de la fonction et ne sont accessibles que dans cette portion de code spécifique. En dehors de la fonction, ces variables sont hors de portée et ne peuvent pas être utilisées. ~code~ function gainannuel($gainParMois) { $nombreDeMois=12; $total = $gainParMois * $nombreDeMois; echo $total; } gainannuel(1500); ~/code~ b~Variables Globales :~b Les variables globales sont accessibles partout dans une page. Cependant, pour les utiliser au sein d'une fonction, il est nécessaire d'utiliser le mot-clé `global` suivi du nom de la variable. Les variables globales sont pratiques pour partager des données entre différentes parties d'une page. ~code~ $name="Appolon Guy Alain"; echo "Je suis ".$name; ~/code~ b~Superglobales :~b Les superglobales en PHP sont des variables spéciales pré-définies qui peuvent être utilisées pour transmettre des données d'une page à une autre, ou même au sein de la même page, permettant ainsi de faire circuler des informations importantes entre différents segments de votre application. Elles jouent un rôle essentiel dans la communication et l'échange de données entre le client et le serveur. Ces variables superglobales sont disponibles dans tous les scripts PHP sans nécessiter de déclaration explicite. Voici quelques exemples de superglobales couramment utilisées et leur rôle dans la circulation des données : b~$_GET :~b Elle permet de récupérer des données envoyées via la méthode GET dans l'URL. Ces données sont généralement utilisées pour effectuer des recherches, des filtres ou pour transmettre des paramètres entre les pages. ~code~ // URL : http://exemple.com/index.php?nom=Appolon&age=25 $nom = $_GET['nom']; $age = $_GET['age']; echo "Bonjour je suis ".$nom.", j'ai ".$age." ans."; ~/code~ Affiche : Bonjour je suis Appolon, j'ai 25 ans. Autre exemple Supposons que vous ayez un lien avec des paramètres dans l'URL : ~code~ <a href="profil.php?utilisateur=Jean&&email=jean@gmail.com&&phone=34637382">Voir le profil</a> ~/code~ Dans le fichier profil.php, vous pouvez récupérer les paramètres à l'aide de la superglobale $_GET : ~code~ $utilisateur=$_GET['utilisateur']; $email=$_GET['email']; $phone=$_GET['phone']; echo "Name : ".$utilisateur." <br /> Email : ".$email." <br /> Phone : ".$phone; ~/code~ b~$_POST :~b Cette superglobale est utilisée pour récupérer des données envoyées via la méthode POST, généralement à partir de formulaires HTML. Elle est utile pour collecter des informations confidentielles ou des données de taille importante. Supposons que vous ayez un formulaire HTML comme ceci : ~code~ <form method="POST" action="traitement.php"> <input type="text" name="nom" /> <input type="submit" value="Envoyer" name="envoyer" /> </form> ~/code~ Dans le fichier traitement.php, vous pouvez accéder aux données du formulaire envoyées via la superglobale $_POST : ~code~ if(isset($_POST['envoyer'])) { $nom = $_POST['nom']; echo "Bonjour, Bienvenue ".$nom; } ~/code~ b~$_SESSION :~b La superglobale $_SESSION est employée pour stocker des variables de session, qui sont utilisées pour maintenir des informations spécifiques à un utilisateur entre différentes pages. Cela permet de garder une trace de l'état de l'utilisateur tout au long de sa navigation. Exemple d'utilisation de la superglobale $_SESSION : ~code~ <form method="POST" action="traitement.php"> <input type="text" name="nom" /> <input type="submit" value="Envoyer" name="envoyer" /> </form> ~/code~ Dans le fichier traitement.php ~code~ if(isset($_POST['envoyer'])) { $_SESSION['nom'] = $_POST['nom']; echo "Utilisateur connecté ".$_SESSION['nom']; } ~/code~ b~NB :~b vous devez d'abord appeler la fonction session_start() au début de votre script PHP, avant tout code HTML ou sortie de contenu. Cette fonction initialise la session et permet à PHP de gérer les variables de session pour l'utilisateur en cours. b~$_COOKIE :~b $_COOKIE est utilisée pour accéder aux cookies stockés dans le navigateur de l'utilisateur. Les cookies sont de petites données persistantes qui peuvent être utilisées pour garder en mémoire certaines informations entre les sessions. Ces superglobales offrent un moyen efficace et pratique de faire circuler des données entre différentes parties de votre application, que ce soit pour personnaliser le contenu affiché, gérer l'état de l'utilisateur ou permettre une interaction dynamique entre l'utilisateur et le serveur. Cependant, il est important d'utiliser ces superglobales de manière sécurisée en validant et en filtrant les données reçues pour éviter les failles de sécurité.

5 - Création de Pages Membres et Profils Dynamiques avec PHP

Bienvenue à la 5ème séance de formation sur l'introduction à PHP et MySQL. Dans cette séance, nous allons explorer l'utilisation des tableaux associatifs et des variables $_GET pour créer de manière dynamique une page membre et une page de profil. Page Membre : ~code~ <?php $user_table=array(); $user_table[]=array('id' => 1, 'name' => 'Appolon', 'email' => 'appo@gmail.com', 'phone' => '3489292', 'age' => 25); $user_table[]=array('id' => 2, 'name' => 'Marie', 'email' => 'marie@gmail.com', 'phone' => '8947442', 'age' => 20); $user_table[]=array('id' => 3, 'name' => 'Jean', 'email' => 'jean@gmail.com', 'phone' => '8393738393', 'age' => 30); $user_table[]=array('id' => 4, 'name' => 'Darlise', 'email' => 'darlise@gmail.com', 'phone' => '8393735372', 'age' => 28); $user_table[]=array('id' => 5, 'name' => 'Hugens', 'email' => 'hugens@gmail.com', 'phone' => '3536398262', 'age' => 42); $user_table[]=array('id' => 6, 'name' => 'Eben-za', 'email' => 'ebenza@gmail.com', 'phone' => '92725272209', 'age' => 17); foreach($user_table as $user) { echo "<a href='profil.php?id=".$user['id']."'>".$user['name']."</a><br />"; } ?> ~/code~ Explication : Dans cette partie du code, nous avons créé un tableau associatif `$user_table` contenant des informations sur différents membres. Ensuite, nous avons utilisé une boucle foreach pour générer des liens vers les profils de ces membres en passant leur ID en tant que paramètre GET dans l'URL. Page Profil : ~code~ <?php $user_table=array(); $user_table[]=array('id' => 1, 'name' => 'Appolon', 'email' => 'appo@gmail.com', 'phone' => '3489292', 'age' => 25); $user_table[]=array('id' => 2, 'name' => 'Marie', 'email' => 'marie@gmail.com', 'phone' => '8947442', 'age' => 20); $user_table[]=array('id' => 3, 'name' => 'Jean', 'email' => 'jean@gmail.com', 'phone' => '8393738393', 'age' => 30); $user_table[]=array('id' => 4, 'name' => 'Darlise', 'email' => 'darlise@gmail.com', 'phone' => '8393735372', 'age' => 28); $user_table[]=array('id' => 5, 'name' => 'Hugens', 'email' => 'hugens@gmail.com', 'phone' => '3536398262', 'age' => 42); $user_table[]=array('id' => 6, 'name' => 'Eben-za', 'email' => 'ebenza@gmail.com', 'phone' => '92725272209', 'age' => 17); if(isset($_GET['id'])) { foreach($user_table as $user) { if($_GET['id'] == $user['id']) { echo "Nom : ".$user['name']."<br />"; echo "Email : ".$user['email']."<br />"; echo "Téléphone : ".$user['phone']."<br />"; echo "Age : ".$user['age']."<br />"; break; } } } ?> ~/code~ Explication : Dans cette partie du code, nous avons également défini le tableau associatif `$user_table` contenant des informations sur les membres. Ensuite, nous avons vérifié si l'ID du membre était passé en tant que paramètre GET dans l'URL (via `$_GET['id']`). Si c'est le cas, nous avons parcouru le tableau pour trouver le membre correspondant à cet ID et afficher ses informations, telles que son nom, son email, son téléphone et son âge. Cela permet de créer une page de profil dynamique en fonction de l'ID du membre passé dans l'URL.

6 - Traitement de formulaire en PHP

Bienvenue à la 6ème séance de formation sur l'introduction à PHP et MySQL. Aujourd'hui, nous plongerons dans l'univers des formulaires et leur traitement en PHP en utilisant la superglobale `$_POST`. $_POST est une variable superglobale qui est utilisée pour collecter des données envoyées vers le serveur en utilisant la méthode POST. Cette variable superglobale est un tableau associatif qui contient les données POST, où les clés du tableau sont les noms des champs du formulaire HTML et les valeurs sont les données saisies par l'utilisateur dans ces champs. Les données POST sont généralement utilisées pour envoyer des informations sensibles, telles que des mots de passe ou des données de formulaire complexes. Voici comment vous pouvez utiliser `$_POST` en PHP pour récupérer et traiter des données POST envoyées via un formulaire de contact : Créez un formulaire HTML dans votre fichier HTML : ~code~ <div class='contact-form'> <form method="post" action="traitement.php"> <div class='row'> <div class='col-md-6'> <input type="text" class='form-control' name="nom" /> </div> <div class='col-md-6'> <input type="email" class='form-control' name="email" /> </div> <div class='col-md-12'> <input type="text" class='form-control' name="sujet" /> </div> <div class='col-md-12'> <textarea name="message" class='form-control'></textarea> </div> <div class='col-md-12'> <button type='submit' class='btn btn-primary'>Envoyer</button> </div> </div> </form> </div> ~/code~ Dans le fichier PHP spécifié dans l'attribut "action" du formulaire (dans cet exemple, "traitement.php"), vous pouvez accéder aux données POST à l'aide de `$_POST`. Par exemple : ~code~ <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $nom = $_POST["nom"]; $email = $_POST["email"]; $sujet = $_POST["sujet"]; $message = $_POST["message"]; // Faites quelque chose avec les données, comme les afficher ou les enregistrer dans une base de données echo "Nom : ".$nom."<br>"; echo "Email : ".$email."<br>"; echo "Sujet : ".$sujet."<br>"; echo "Message : ".$message; } ?> ~/code~ Assurez-vous que le formulaire pointe vers le fichier PHP approprié dans l'attribut "action". Lorsque le formulaire est soumis, les données seront envoyées à ce fichier PHP, où vous pouvez les récupérer à l'aide de `$_POST`. Traiter correctement les données de manière sécurisée La sécurité lors de la manipulation des données soumises par les utilisateurs est d'une importance vitale pour tout site web ou application qui traite des informations sensibles ou confidentielles. Voici quelques raisons pour lesquelles la sécurité des données utilisateur est cruciale : - Prévention des attaques par injection de code : Les attaques par injection de code, telles que les attaques SQL injection et les attaques XSS (Cross-Site Scripting), peuvent se produire si les données utilisateur ne sont pas correctement validées et échappées. Ces attaques peuvent permettre à des attaquants de manipuler ou de voler des données, de compromettre la sécurité du système, voire de prendre le contrôle du site ou de l'application. - Protection contre les attaques de contournement d'autorisation : Les utilisateurs malveillants peuvent tenter de modifier les données soumises pour accéder à des fonctionnalités ou à des zones du site auxquelles ils n'ont pas accès légitimement. La validation des données utilisateur est essentielle pour s'assurer que seules les personnes autorisées peuvent effectuer certaines actions. - Garantie de l'intégrité des données : L'intégrité des données est cruciale pour s'assurer que les informations stockées sont exactes et n'ont pas été altérées de manière malveillante. Une manipulation incorrecte des données soumises peut entraîner des erreurs ou des corruptions de données. - Protection de la vie privée des utilisateurs : Les utilisateurs s'attendent à ce que leurs données personnelles et sensibles soient traitées de manière confidentielle et sécurisée. Les violations de la vie privée peuvent avoir des conséquences graves pour les individus, notamment le vol d'identité, la fraude, la diffusion non autorisée d'informations personnelles, etc. Comment se protéger contre les attaques XSS, l'injection SQL et autres menaces lors de la soumission d'un formulaire. Pour protéger votre application web contre les attaques XSS (Cross-Site Scripting), l'injection SQL et d'autres menaces lors de la soumission d'un formulaire, suivez ces bonnes pratiques de sécurité : 1. Validation des données : Validez et filtrez toutes les données entrantes, en particulier celles provenant de formulaires, pour vous assurer qu'elles correspondent au format attendu. Rejetez toute donnée qui ne respecte pas les critères de validation. 2. Échappement des données : Échappez correctement toutes les données avant de les afficher dans une page web. Utilisez des fonctions d'échappement spécifiques au contexte, comme `htmlspecialchars()` en PHP, pour empêcher l'exécution de scripts malveillants dans les données. ~code~ <?php $nom = $_POST['nom']; // Échappez les données avant de les afficher $nom = htmlspecialchars($nom); // Affichez le texte échappé dans votre page web echo "Nom : ".$nom; ?> ~/code~ 3. Utilisation de requêtes préparées : Lorsque vous effectuez des opérations de base de données, utilisez des requêtes préparées avec des paramètres liés plutôt que d'incorporer directement des données utilisateur dans vos requêtes SQL. Les requêtes préparées empêchent l'injection SQL en séparant les données des instructions SQL. 4. Mise en place de l'authentification et de l'autorisation : Assurez-vous que seuls les utilisateurs autorisés peuvent accéder aux fonctionnalités de votre site. Utilisez des mécanismes d'authentification solides et définissez des règles d'autorisation appropriées pour chaque utilisateur. 5. Chiffrement : Chiffrez les données sensibles. comme les mots de passe, en utilisant des algorithmes de hachage sécurisés. ~code~ <?php $password = "12345@aB"; // Crypter le mot de passe $passwordCrypter = password_hash($password, PASSWORD_DEFAULT); // Afficher le mot de passe crypté. echo "Password : " . $passwordCrypter; ?> ~/code~

7 - Maîtrisez les Sessions en PHP

Bienvenue à la 7ème séance de formation sur l'introduction à PHP et MySQL ! Aujourd'hui, nous allons plonger dans le monde des sessions en PHP en utilisant la variable superglobale $_SESSION. b~Qu'est-ce qu'une session ?~b Une session est un moyen de stocker des données de manière persistante tout au long de la navigation d'un utilisateur sur un site web. Elle permet par exemple d'associer un ensemble de données à un utilisateur spécifique pendant sa visite sur le site, généralement identifié par un identifiant de session unique. Ces données peuvent être utilisées pour stocker des informations telles que les identifiants de l'utilisateur, les préférences, le contenu d'un panier d'achat, etc. b~Pourquoi les sessions sont-elles importantes en développement web ?~b Les sessions sont essentielles en développement web car elles permettent de maintenir l'état de l'application entre les différentes pages. Elles facilitent également la gestion de l'authentification des utilisateurs, le suivi des interactions et le stockage temporaire d'informations importantes. b~Comment démarrer une session en PHP :~b Pour démarrer une session en PHP, vous pouvez utiliser la fonction `session_start()`. Cette fonction doit être appelée avant toute sortie vers le navigateur (c'est-à-dire avant que des données ne soient envoyées au navigateur de l'utilisateur) et généralement au début de chaque script PHP où vous souhaitez accéder à des données de session. Voici un exemple simple : ~code~ <?php session_start(); // Le reste de votre code ?> ~/code~ Vous pouvez utiliser la variable superglobale `$_SESSION` pour stocker et récupérer des données de session. Par exemple, pour définir une variable de session : ~code~ $_SESSION['username'] = 'JohnDoe'; ~/code~ Et pour récupérer cette valeur ultérieurement : ~code~ $username = $_SESSION['username']; echo $username; ~/code~ b~Exemples de données couramment stockées :~b Les données couramment stockées en session incluent : - Les identifiants de l'utilisateur (ID, nom d'utilisateur, etc.). - Les préférences de l'utilisateur (langue, thème, paramètres de compte, etc.). - Les informations du panier d'achat (articles, quantités, prix, etc.). b~Détruire une session :~b Vous pouvez détruire une session en utilisant la fonction `session_destroy()`. Cela supprimera toutes les données associées à la session en cours. Voici un exemple : ~code~ <?php session_start(); session_destroy(); //Rediriger l'utilisateur vers la page d'accueil ou une autre page après la destruction de la session. header("Location: index.php"); ?> ~/code~ Ou encore en utilisant la fonction unset() ~code~ <?php unset($_SESSION['username']); ?> ~/code~ b~Chiffrez les mots de passe en utilisant des algorithmes de hachage sécurisés.~b ~code~ <?php $password = "12345@aB"; // Crypter le mot de passe $passwordCrypte = password_hash($password, PASSWORD_DEFAULT); // Afficher le mot de passe crypté echo "Mot de passe crypté : " . $passwordCrypte; // Vérifier l'authenticité du mot de passe if (password_verify($password, $passwordEnBaseDeDonnees)) { // Connecter l'utilisateur } else { $error = "Mot de passe incorrect"; } ?> ~/code~ Exercice: https://carrefour.codingclubhaiti.com/archive/exercice-d-evaluation-creation-d-un-site-web-e-commerce-en-php/3/92

8 - Création d'un site e-commerce basique avec PHP - Première partie

Dans cette séance, nous utilisons des tableaux associatifs pour stocker les catégories et les produits, comme dans une base de données. ~code~ $category=array(); $category[]=array('id' => 1, 'titre' => "Électronique"); $category[]=array('id' => 2, 'titre' => "Laptop"); $category[]=array('id' => 3, 'titre' => "Téléphone"); $category[]=array('id' => 4, 'titre' => "Vêtements"); $product=array(); $product[]=array('id' => 1, 'category' => 1, 'image' => 'alexa.webp', 'name' => 'Alexa', 'price' => '120$', 'description' => 'Echo (4e génération), Avec son premium, Bleu-gris + Amazon Smart Plug (Prise connectée WiFi), Fonctionne avec Alexa - Kit de démarrage Maison connectée'); $product[]=array('id' => 2, 'category' => 3, 'image' => 'iphone.jpg', 'name' => 'Iphone 14', 'price' => '900$', 'description' => "9 W/kg Le DAS (débit d'absorption spécifique) des téléphones mobiles quantifie le niveau d'exposition maximal de l'utilisateur aux ondes électromagnétiques, pour une utilisation à l'oreille. La réglementation française impose que le DAS ne dépasse pas 2 W/kg."); $product[]=array('id' => 3, 'category' => 2, 'image' => 'lenovo.jpg', 'name' => 'Lenovo', 'price' => '240$', 'description' => 'Lenovo Yoga Slim 7 ProX 14ARH7 - Ordinateur Portable 14.5 3K (AMD Ryzen 5 6600HS Creator Edition, RAM 16Go, SSD 512Go, AMD Radeon 680M Graphics,Windows 11 Home) Clavier rétroéclairé AZERTY FR - Gris '); $product[]=array('id' => 4, 'category' => 2, 'image' => 'macbookpro.jpg', 'name' => 'MacBook Pro', 'price' => '750$', 'description' => 'Apple Ordinateur Portable MacBook Air 2020 : Puce M1, éCran Retina 13, 8 Go de RAM, 256 Go de Stockage SSD, Clavier rétroéClairé, Caméra FaceTime HD, Touch ID; Argent'); $product[]=array('id' => 5, 'category' => 1, 'image' => 'montre.webp', 'name' => 'Montre', 'price' => '150$', 'description' => "Cette montre pour homme va avec presque toutes les tenues. Convient pour une occasion, qu'elle soit formelle ou décontractée. Portez cette montre lors de vos déplacements, que vous voyagiez pour affaires ou pour le plaisir, à l'intérieur et à l'extérieur, ou pour un usage quotidien. Et c'est un cadeau parfait pour vous et vos proches pour toutes les occasions comme Noël, Thanksgiving, les anniversaires, la fête des pères, les remises de diplômes, la Saint-Valentin, etc. ou si vous voulez simplement vous offrir quelque chose de nouveau et de tendance."); $product[]=array('id' => 6, 'category' => 4, 'image' => 'pullover.jpg', 'name' => 'Pullover', 'price' => '70$', 'description' => "Ce quart de zip en mélange de cachemire et de laine est parfait pour l'hiver. Super doux, moelleux et chaud, superposez ce style sur votre t-shirt ou chemise boutonnée préféré pour un look sans effort. Corps en tricot jersey avec bordure côtelée et col montant côtelé. La fermeture éclair en laiton vintage comporte une tirette en cuir."); $product[]=array('id' => 7, 'category' => 3, 'image' => 'samsung.jpg', 'name' => 'Samsung Galaxy A23', 'price' => '600$', 'description' => "Le Samsung Galaxy A23 5G est un modèle d'entrée de gamme qui s'équipe d'un écran de 6,6 pouces, animé par un SoC Qualcomm Snapdragon 695, couplé jusqu'à 6 Go de RAM et 128 Go de stockage extensible jusqu'à 1 To via microSD. Il possède 4 capteurs photo à l'arrière : un grand-angle de 50 mégapixels (avec stabilisation otique), un ultra grand-angle de 5 mégapixels, un objectif macro et un capteur de profondeur de 2 mégapixels chacun. Il a une batterie de 5 000 mAh compatible charge rapide (25 W)."); $product[]=array('id' => 8, 'category' => 1, 'image' => 'jbl.jpg', 'name' => 'JBL Headphones', 'price' => '140$', 'description' => "JBL Tune 660NC – Casque Bluetooth sans fil pliable – Avec son JBL Pure Bass et suppression active du bruit – Jusqu'à 44 heures d'autonomie – Couleur : Bleu "); ~/code~

9 - Création d'un site e-commerce basique avec PHP - Deuxième partie

Dans cette séance, nous utiliserons des tableaux associatifs pour stocker les utilisateurs et les commandes. Nous allons créer une page de connexion pour permettre aux utilisateurs de se connecter, de voir leurs profils, ainsi que les produits qu'ils ont achetés. ~code~ $users=array(); $users[]=array('id' => 1, 'name' => 'Appolon', 'email' => 'appo@gmail.com', 'password' => '1234', 'phone' => '3489292', 'age' => 25); $users[]=array('id' => 2, 'name' => 'Marie', 'email' => 'marie@gmail.com', 'password' => '4567', 'phone' => '8947442', 'age' => 20); $users[]=array('id' => 3, 'name' => 'Jean', 'email' => 'jean@gmail.com', 'password' => '9123', 'phone' => '8393738393', 'age' => 30); $users[]=array('id' => 4, 'name' => 'Darlise', 'email' => 'darlise@gmail.com', 'password' => '1678', 'phone' => '8393735372', 'age' => 28); $users[]=array('id' => 5, 'name' => 'Hugens', 'email' => 'hugens@gmail.com', 'password' => 'abd4', 'phone' => '3536398262', 'age' => 42); $users[]=array('id' => 6, 'name' => 'Eben-za', 'email' => 'ebenza@gmail.com', 'password' => 'Yxe1', 'phone' => '92725272209', 'age' => 17); $order=array(); $order[]=array('id' => 1, 'id_user' => 1, 'id_product' => 2, 'price' => '120$'); $order[]=array('id' => 2, 'id_user' => 1, 'id_product' => 4, 'price' => '120$'); $order[]=array('id' => 3, 'id_user' => 2, 'id_product' => 1, 'price' => '120$'); $order[]=array('id' => 4, 'id_user' => 3, 'id_product' => 2, 'price' => '120$'); $order[]=array('id' => 5, 'id_user' => 1, 'id_product' => 5, 'price' => '120$'); $order[]=array('id' => 6, 'id_user' => 4, 'id_product' => 3, 'price' => '120$'); $order[]=array('id' => 7, 'id_user' => 6, 'id_product' => 2, 'price' => '120$'); $order[]=array('id' => 8, 'id_user' => 2, 'id_product' => 3, 'price' => '120$'); ~/code~

10 - Introduction aux bases de données

Bienvenue à la dixième séance de formation sur PHP et MySQL. Aujourd'hui, nous allons plonger dans le fascinant monde des bases de données. Les bases de données jouent un rôle central dans le développement web moderne. Elles sont essentielles pour stocker, gérer et récupérer efficacement les données nécessaires à nos applications. Qu'il s'agisse de gérer des informations utilisateur, des produits, des messages ou toute autre forme de données, les bases de données sont la clé pour organiser ces informations de manière structurée et accessible. b~1- Définition~b Une base de données (BD) est un ensemble organisé de données structurées qui permet de stocker, gérer, et récupérer des informations de manière efficace. Les bases de données sont utilisées pour stocker divers types d'informations, allant des données personnelles aux données professionnelles, en passant par les données scientifiques et bien d'autres. Pour mieux comprendre ce qu'est une base de données, voici quelques exemples concrets : b~Base de données d'une bibliothèque :~b Une bibliothèque utilise une base de données pour gérer ses livres. Chaque livre est enregistré dans la base de données avec des informations telles que le titre, l'auteur, le numéro ISBN, la date de publication, etc. Les bibliothécaires peuvent ainsi rechercher rapidement un livre, vérifier s'il est disponible, et connaître son emplacement dans la bibliothèque. b~Base de données d'un site de commerce électronique :~b Un site de commerce électronique stocke des informations sur ses produits dans une base de données. Chaque produit est enregistré avec son nom, sa description, son prix, son stock disponible, etc. Les clients peuvent naviguer dans le catalogue en ligne, ajouter des produits à leur panier, et passer des commandes, tout en permettant au site de gérer efficacement les stocks. b~Base de données d'un système de réservation d'hôtels :~b Un système de réservation d'hôtels utilise une base de données pour gérer les chambres disponibles, les tarifs, les réservations des clients, et les informations sur les clients. Les clients peuvent rechercher des chambres disponibles pour des dates spécifiques, réserver une chambre, et recevoir une confirmation de leur réservation. b~Base de données d'un réseau social :~b Les réseaux sociaux stockent les profils des utilisateurs, leurs publications, leurs relations avec d'autres utilisateurs, etc., dans une base de données. Les utilisateurs peuvent se connecter, publier des messages, ajouter des amis, et interagir avec d'autres utilisateurs, tout en permettant au réseau social de gérer les données de manière sécurisée et efficace. b~Base de données d'un hôpital :~b Un hôpital utilise une base de données pour stocker les dossiers médicaux des patients, les informations sur les rendez-vous, les prescriptions, les résultats d'analyses, etc. Les médecins et le personnel médical peuvent accéder rapidement aux informations nécessaires pour fournir des soins de santé de qualité. b~2- Gestion des Bases de Données~b Pour gérer une base de données efficacement, vous avez besoin des éléments suivants : b~Système de Gestion de Base de Données (SGBD) :~b Un SGBD est un logiciel spécialisé conçu pour créer, gérer et interagir avec des bases de données. Il existe de nombreux SGBD disponibles, chacun avec ses caractéristiques et ses avantages. Certains des SGBD les plus courants sont MySQL, PostgreSQL, Oracle, Microsoft SQL Server et MongoDB. Vous devez choisir le SGBD qui correspond le mieux à vos besoins en fonction de la nature de vos données et de vos exigences. b~Serveur de Base de Données :~b Un serveur de base de données est un ordinateur ou un système qui exécute le SGBD et stocke les données. Le serveur de base de données gère les requêtes, les connexions, la sécurité et d'autres aspects essentiels de la gestion des données. Vous pouvez installer le SGBD sur un serveur dédié ou l'exécuter localement sur votre propre ordinateur, en fonction de vos besoins. b~Base de Données :~b Vous devez créer la base de données elle-même, qui sert de conteneur pour stocker vos données. La base de données est composée de tables, qui sont des structures qui définissent comment les données sont organisées. Vous pouvez avoir une ou plusieurs bases de données en fonction de vos besoins. b~Connaissances en SQL (Structured Query Language) :~b SQL est un langage de programmation spécifique aux bases de données que vous utilisez pour interagir avec la base de données. Vous devez avoir des compétences en SQL pour créer des tables, insérer, mettre à jour, supprimer et interroger des données. SQL est la principale langue utilisée pour travailler avec des bases de données relationnelles. b~Outils de Gestion de Base de Données :~b Vous aurez besoin d'outils pour interagir avec votre base de données. Ces outils peuvent être des interfaces en ligne de commande, des outils graphiques tels que phpMyAdmin pour MySQL. b~Conception de la Base de Données :~b Avant de créer une base de données, vous devez concevoir son schéma. Cela implique de déterminer quelles données vous allez stocker, comment elles seront organisées en tables, quelles relations existent entre les tables, etc. La conception de la base de données est une étape cruciale pour garantir une gestion efficace des données. b~Gestion des Accès et de la Sécurité :~b Vous devez mettre en place des mécanismes de sécurité pour protéger vos données. Cela inclut la gestion des droits d'accès, des mots de passe et des sauvegardes régulières pour éviter la perte de données. b~3- phpMyAdmin~b phpMyAdmin est une application web open-source conçue pour faciliter la gestion de bases de données MySQL. Il offre une interface utilisateur graphique conviviale qui permet aux utilisateurs de gérer leurs bases de données sans avoir à utiliser une interface en ligne de commande ou à écrire des requêtes SQL. Pour accéder à phpMyAdmin dans les environnements Wamp, XAMPP ou MAMP, suivez ces étapes générales : b~WampServer :~b 1) Assurez-vous que WampServer est installé et en cours d'exécution sur votre ordinateur. 2) Ouvrez votre navigateur web. 3) Dans la barre d'adresse du navigateur, entrez l'URL suivante : http://localhost/phpmyadmin/. Appuyez sur Entrée. 4) Vous devriez être redirigé vers la page de connexion de phpMyAdmin. Vous pouvez vous connecter en utilisant le nom d'utilisateur "root" et le mot de passe par défaut (généralement vide ou "root", selon votre configuration). Si vous avez configuré un mot de passe différent lors de l'installation de WampServer, utilisez ce mot de passe. b~XAMPP :~b 1) Assurez-vous que XAMPP est installé et en cours d'exécution sur votre ordinateur. 2) Ouvrez votre navigateur web. 3) Dans la barre d'adresse du navigateur, entrez l'URL suivante : http://localhost/phpmyadmin/. Appuyez sur Entrée. 4) Vous devriez être redirigé vers la page de connexion de phpMyAdmin. Vous pouvez vous connecter en utilisant le nom d'utilisateur "root" et le mot de passe par défaut (généralement vide ou "root", selon votre configuration). Si vous avez configuré un mot de passe différent lors de l'installation de XAMPP, utilisez ce mot de passe. b~MAMP :~b 1) Assurez-vous que MAMP est installé et en cours d'exécution sur votre ordinateur. 2) Ouvrez l'application MAMP. 3) Dans la fenêtre MAMP, cliquez sur l'onglet "WebStart" ou "Start" pour démarrer les serveurs Apache et MySQL. 4) Ouvrez votre navigateur web. 5) Dans la barre d'adresse du navigateur, entrez l'URL suivante : http://localhost:8888/phpMyAdmin/. Appuyez sur Entrée. 6) Vous devriez être redirigé vers la page de connexion de phpMyAdmin. Vous pouvez vous connecter en utilisant le nom d'utilisateur "root" et le mot de passe par défaut (généralement "root" ou vide), sauf si vous avez modifié ces informations dans la configuration de MAMP. Une fois que vous êtes connecté à phpMyAdmin, vous pouvez commencer à gérer vos bases de données MySQL à l'aide de l'interface web. b~4- Ouvrez une connexion à la base de données :~b Pour connecter une page PHP à une base de données MySQL, vous devrez ouvrir une connexion à la base de données en utilisant les informations de connexion appropriées (nom d'hôte, nom d'utilisateur, mot de passe, nom de la base de données). Nous utiliserons PDO(PHP Data Objects). PDO est actuellement la méthode la plus sécurisée et la plus flexible pour travailler avec des bases de données MySQL en PHP. Dans votre script PHP, vous devez créer une instance PDO en spécifiant les détails de connexion à votre base de données. Voici comment vous pouvez le faire : ~code~ <?php $host = "localhost"; // Le nom du serveur MySQL (peut être "localhost" si vous utilisez un serveur local) $dbname = "nom_de_votre_base_de_donnees"; // Le nom de votre base de données MySQL $username = "votre_nom_utilisateur"; // Votre nom d'utilisateur MySQL $password = "votre_mot_de_passe"; // Votre mot de passe MySQL try { $conn = new PDO("mysql:host=".$host.";dbname=".$dbname, $username, $password); //Définissez le jeu de caractères de la connexion à la base de données MySQL sur "utf8". $conn->exec('SET NAMES utf8'); // Active le mode d'erreur PDO pour afficher les erreurs en cas de problème $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connexion à la base de données réussie."; } catch (PDOException $e) { echo "Échec de la connexion à la base de données : ".$e->getMessage(); } ?> ~/code~

11 - Utilisation de la Commande SELECT pour Extraire des Données d'une Base de Donnée

Bienvenue dans cette séance sur PHP et MySQL ! Aujourd'hui, nous allons apprendre à créer ensemble nos requêtes SQL pour sélectionner des données dans une base de données à l'aide de la commande "SELECT". Cette commande est utilisée pour récupérer des informations à partir de tables spécifiques. Voici quelques exemples de ce que vous pouvez faire avec SELECT : 1. Récupérer les catégories depuis la table "category" : ~code~ <?php $queryselectcategory=$dbConnect->prepare("SELECT * FROM category"); $queryselectcategory->execute(); while($cat=$queryselectcategory->fetch()) { echo "<li><a href='category.php?id=".$cat['id']."'>".$cat['titre']."</a></li>"; } ?> ~/code~ 2. Récupérer tous les produits depuis la table "product" : ~code~ <?php $queryselectproduct=$dbConnect->prepare("SELECT * FROM product"); $queryselectproduct->execute(); while($data=$queryselectproduct->fetch()) { echo "<div class='col-md-2'>"; echo "<div class='product-item'>"; echo "<a href='produit.php?id=".$data['id']."'>"; echo "<img src='images/".$data['image']."' />"; echo "<h1>".$data['name']."</h1>"; echo "<h2>".$data['price']."<h2>"; echo "</a>"; echo "</div>"; echo "</div>"; } ?> ~/code~ 3. Récupérer les produits selon la catégorie depuis la table "product" : ~code~ <?php if(isset($_GET['id'])) { $Id=intval($_GET['id']); $queryselectproduct=$dbConnect->prepare("SELECT * FROM product WHERE category=?"); $queryselectproduct->execute(array($Id)); while($data=$queryselectproduct->fetch()) { echo "<div class='col-md-2'>"; echo "<div class='product-item'>"; echo "<a href='produit.php?id=".$data['id']."'>"; echo "<img src='images/".$data['image']."' />"; echo "<h1>".$data['name']."</h1>"; echo "<h2>".$data['price']."<h2>"; echo "</a>"; echo "</div>"; echo "</div>"; } } ?> ~/code~ 4. Récupérer un produit spécifique en fonction de son ID depuis la table "product" : ~code~ <?php $Id=intval($_GET['id']); $queryselectproduct=$dbConnect->prepare("SELECT * FROM product WHERE id=?"); $queryselectproduct->execute(array($Id)); $nbrResult=$queryselectproduct->rowCount(); if($nbrResult > 0) { $data=$queryselectproduct->fetch(); $productName=$data['name']; $productCategory=$data['category']; $productImage=$data['image']; $productPrice=$data['price']; $productDescription=$data['description']; } else { header("Location: index.php"); } ?> ~/code~ 5. Récupérer les commandes depuis la table "commande" : ~code~ <?php $querySelectOrder=$dbConnect->prepare("SELECT name, commande.price FROM commande JOIN product ON commande.id_product=product.id WHERE id_user=?"); $querySelectOrder->execute(array($_SESSION['user'])); while($productData=$querySelectOrder->fetch()) { $productName=$productData['name']; echo "<tr><td>".$productName."</td><td>".$productData['price']."</td></tr>"; } echo "</table>"; } ?> ~/code~ 6. Récupérer les informations d'un utilisateur en fonction de son ID depuis la table "user" : ~code~ <?php $querySelectUser=$dbConnect->prepare("SELECT * FROM user WHERE id=?"); $querySelectUser->execute(array($_SESSION['user'])); $user=$querySelectUser->fetch(); echo "<h1>Profil</h1>"; echo "<p>Nom : ".$user['name']."</p>"; echo "<p>Email : ".$user['email']."</p>"; echo "<p>Téléphone : ".$user['phone']."</p>"; echo "<p>Age : ".$user['age']."</p>"; ?> ~/code~ Exercice : Écrivez le code de connexion qui permettra aux utilisateurs de se connecter en utilisant les informations de la table "user" dans la base de données. Assurez-vous de suivre les bonnes pratiques de sécurité. N'hésitez pas à poser des questions si vous avez besoin d'aide pour résoudre cet exercice.

12 - Authentification : pages d'inscription et de connexion

Bienvenue dans la 12ème séance de cette formation. Aujourd'hui, nous allons créer ensemble les pages de connexion et d'inscription. Pour la page de connexion, nous avions déjà un formulaire et un code de traitement qui extrayait les informations d'un tableau. Maintenant, nous allons récupérer les informations de l'utilisateur directement depuis la base de données, à partir de la table "user". ~code~ <?php if(isset($_POST['login'])) { if(!empty($_POST['email']) AND !empty($_POST['password'])) { $email=trim(htmlspecialchars($_POST['email'])); $password=trim(htmlspecialchars($_POST['password'])); $querySelectUser=$dbConnect->prepare("SELECT * FROM user WHERE email=? limit 0,1"); $querySelectUser->execute(array($email)); $nbrUser=$querySelectUser->rowCount(); if($nbrUser > 0) { $userData=$querySelectUser->fetch(); if(password_verify($password, $userData['password'])) { $_SESSION['user']=$userData['id']; header("Location: dashboard.php"); } else { $error="Email ou mot de passe incorrect!"; } } else { $error="Email ou mot de passe incorrect!"; } } else { $error="Remplir correctement les champs du formulaire"; } } ?> ~/code~ Afin d'ajouter dynamiquement les utilisateurs, nous allons créer une page d'inscription avec un formulaire : ~code~ <form method='post' action=''> <?php if(isset($error)) { echo "<div class='alert alert-danger'>".$error."</div>"; } ?> <input type='text' class='form-control' name='fullname' placeholder="Votre nom" value="<?php if(isset($_POST['fullname'])) { echo $_POST['fullname']; } ?>" required /> <input type='email' class='form-control' name='email' placeholder="Votre Email" value="<?php if(isset($_POST['email'])) { echo $_POST['email']; } ?>" required /> <input type='text' class='form-control' name='phone' placeholder="Votre numéro de téléphone" value="<?php if(isset($_POST['phone'])) { echo $_POST['phone']; } ?>" required /> <label>Date de naissance</label> <input type='date' class='form-control' name='naissance' placeholder="Votre date de naissance" value="<?php if(isset($_POST['naissance'])) { echo $_POST['naissance']; } ?>" required /> <input type='password' class='form-control' name='password' placeholder="Mot de passe" value="<?php if(isset($_POST['password'])) { echo $_POST['password']; } ?>" required /> <input type='password' class='form-control' name='passwordconfirm' placeholder="Mot de passe de confirmation" value="<?php if(isset($_POST['passwordconfirm'])) { echo $_POST['passwordconfirm']; } ?>" required /> <button type='submit' name="register" class='btn btn-primary btn-block'>Créer un compte</button> </form> ~/code~ Pour le traitement du formulaire d'inscription : ~code~ <?php if(isset($_POST['register'])) { if(!empty($_POST['email']) AND !empty($_POST['fullname']) AND !empty($_POST['phone']) AND !empty($_POST['naissance']) AND !empty($_POST['password']) AND !empty($_POST['passwordconfirm'])) { $fullname=trim(htmlspecialchars($_POST['fullname'])); $email=trim(htmlspecialchars($_POST['email'])); $phone=trim(htmlspecialchars($_POST['phone'])); $naissance=trim(htmlspecialchars($_POST['naissance'])); $password=trim(htmlspecialchars($_POST['password'])); $passwordconfirm=trim(htmlspecialchars($_POST['passwordconfirm'])); if($password == $passwordconfirm) { $passwordHash=password_hash($password, PASSWORD_DEFAULT); $querySelectUser=$dbConnect->prepare("SELECT * FROM user WHERE email=?"); $querySelectUser->execute(array($email)); $nbrUser=$querySelectUser->rowCount(); if($nbrUser == 0) { $queryInsertUser=$dbConnect->prepare("INSERT INTO `user`(`name`, `email`, `password`, `phone`, `naissance`) VALUES (:name, :email, :password, :phone, :naissance)"); $queryInsertUser->execute(array('name' => $fullname, 'email' => $email, 'password' => $passwordHash, 'phone' => $phone, 'naissance' => $naissance)); $querySelectUser=$dbConnect->prepare("SELECT * FROM user WHERE email=? limit 0,1"); $querySelectUser->execute(array($email)); $nbrUser=$querySelectUser->rowCount(); if($nbrUser > 0) { $userData=$querySelectUser->fetch(); if(password_verify($password, $userData['password'])) { $_SESSION['user']=$userData['id']; header("Location: dashboard.php"); } else { $error="Email ou mot de passe incorrect!"; } } else { $error="Email ou mot de passe incorrect!"; } } else { $error="Adresse email déjà utilisé!"; } } else { $error="Vos mots de passe ne correspondent pas!"; } } else { $error="Remplir correctement les champs du formulaire"; } } ?> ~/code~ Pour afficher l'âge de l'utilisateur par rapport à sa date de naissance : ~code~ <?php $currentYear=date('Y'); $userNaissance=date_create($user['naissance']); $birthYear=date_format($userNaissance, 'Y'); $age=$currentYear - $birthYear; ?> ~/code~

13 - Faire une page d'administration pour gérer votre site

Bienvenue à cette séance de formation sur la création d'une page d'administration pour rendre votre site Internet dynamique. Jusqu'à présent, votre site est sur la bonne voie pour devenir dynamique, mais il lui manque un élément crucial : la page d'administration. Actuellement, pour effectuer des actions telles qu'ajouter, modifier ou supprimer des catégories, des produits ou consulter les commandes des clients, vous devez accéder à PHPMyAdmin, ce qui peut être fastidieux, surtout pour un client peu familier avec l'informatique. Cela rend votre site statique et peu convivial. Dans la création d'un site Internet, vous avez deux grandes responsabilités : 1. L'interface utilisateur : ce que vos clients voient et avec quoi ils interagissent, c'est ce que nous avons développé ensemble jusqu'à présent. 2. L'administration et les autres traitements : ce que seuls les administrateurs peuvent voir et gérer en coulisses. L'objectif de cette séance est de vous guider dans la création d'un espace d'administration convivial, rendant la gestion de votre site facile et accessible aux administrateurs. Dans notre cas, cela signifie donner la possibilité aux administrateurs d'ajouter, de modifier et de supprimer des catégories, des produits, de consulter les commandes et de les gérer efficacement. L'espace d'administration doit être adapté aux besoins spécifiques de votre site. Par exemple, pour un site de magazine ou un blog, l'administrateur devrait pouvoir gérer les rubriques, les articles, les auteurs et voir les articles les plus lus. Pour un site de formation en ligne, l'administrateur devrait pouvoir gérer les cours, suivre la progression des étudiants, etc. L'espace d'administration est un élément essentiel pour rendre votre site dynamique et facile à gérer. Nous allons commencer par ajouter un nouveau champ "type" dans la table "user" pour différencier les utilisateurs normaux des utilisateurs ayant des droits administratifs. Ensuite, nous allons créer ensemble la page d'administration en utilisant la méthode GET pour les différentes parties du site. Mais avant cela, ajoutez un champ "type" dans la table "user" et attribuez une valeur, par exemple 12378, aux administrateurs. Maintenant, vous devez tenir compte de ce champ pour vérifier si un utilisateur est un administrateur ou non, afin de le rediriger vers la page "dashboard.php" ou "admin.php". ~code~ <?php if($userData['type'] == 12378) { $_SESSION['useradmin']=$userData['id']; header("Location: admin.php"); } else { header("Location: dashboard.php"); } ?> ~/code~ Après avoir créé la page "admin.php" avec les différentes sections (Catégories, Produits, Commandes et Déconnexion), dans la section des catégories pour afficher les catégories, utilisez le code suivant : ~code~ <div class='admin-section'> <table class='table table-striped'> <tr><th>Categorie</th><th>Option</th></tr> <?php $querySelectCategory=$dbConnect->prepare("SELECT * FROM category ORDER BY titre ASC"); $querySelectCategory->execute(); while($row=$querySelectCategory->fetch()) { echo "<tr>"; echo "<td>".$row['titre']."</td>"; echo "<td>"; echo "<a href='#' class='btn btn-primary'>Modifier</a>"; echo "<a href='#' class='btn btn-danger'>Supprimer</a>"; echo "</td>"; echo "</tr>"; } ?> </table> </div> ~/code~ Ajoutez un bouton "Ajouter" : ~code~ <a href='admin.php?page=1&&add=1' class='btn btn-primary'>Ajouter</a> ~/code~ Créez une section modale pour les formulaires avec le code suivant : ~code~ <div class='modal-container'> <div class='modal-form'> <a href='admin.php?page=1' class='close-modal'>x</a> <!--Form--> </div> </div> ~/code~ CSS ~code~ .modal-container { width:100%; height: 100vh; position: absolute; z-index: 1000; background: rgba(0,0,0,0.1); top:0px; left: 0px; display: flex; } .modal-form { width: 40%; margin: auto; min-height: 100px; background: white; border:1px solid rgba(0,0,0,0.1); border-radius: 10px; padding: 30px; position: relative; } .close-modal { position: absolute; right: 20px; top: 0px; font-size: 20px; color: red; text-decoration: none; } ~/code~ Ensuite, créez le formulaire pour ajouter les catégories : ~code~ <?php if(isset($_GET['page']) AND $_GET['page'] == 1) { if(isset($_GET['add']) AND $_GET['add'] == 1) { ?> <div class='modal-container'> <div class='modal-form'> <a href='admin.php?page=1' class='close-modal'>x</a> <form method='post' action=''> <?php if(isset($error)) { echo "<div class='alert alert-danger'>".$error."</div>"; } ?> <input type='text' name='categorie' placeholder="Categorie" class='form-control' required /> <button name='ajoutercategory' type='submit' class='btn btn-primary'>Ajouter</button> </form> </div> </div> <?php } ?> ~/code~ Enfin, traitez le formulaire d'ajout de catégorie comme suit : ~code~ <?php //Ajouter Categorie if(isset($_POST['ajoutercategory'])) { if(!empty($_POST['categorie'])) { $categorie=trim(htmlspecialchars($_POST['categorie'])); if($categorie != '') { $queryInsertCategory=$dbConnect->prepare("INSERT INTO `category`(`titre`) VALUES (:titre)"); $queryInsertCategory->execute(array('titre' => $categorie)); header("Location: admin.php?page=1"); } else { $error="Remplir correctement les champs du formulaire"; } } else { $error="Remplir correctement les champs du formulaire"; } } ?> ~/code~

14 - Page d'administration (partie 2)

Continuons avec notre page d'administration. Nous allons permettre aux administrateurs de modifier ou supprimer les catégories. Avant d'aller plus loin, modifions le bouton de retour en utilisant JavaScript : ~code~ <span onclick="goBack();" class='close-modal'>x</span> ~/code~ Créons la fonction JavaScript : ~code~ <script> function goBack() { window.history.back(); } </script> ~/code~ Modifions le lien de modification dans les catégories : ~code~ <?php echo "<a href='admin.php?page=1&edit=1&id=".$row['id']."' class='btn btn-primary'>Modifier</a>"; ?> ~/code~ Formulaire pour la modification : ~code~ <?php // Edit if(isset($_GET['edit']) && $_GET['edit'] == 1) { $idCategory = intval($_GET['id']); $querySelectCategoryById = $dbConnect->prepare("SELECT * FROM category WHERE id=?"); $querySelectCategoryById->execute(array($idCategory)); $cat = $querySelectCategoryById->fetch(); ?> <div class='modal-container'> <div class='modal-form'> <span onclick="goBack();" class='close-modal'>x</span> <form method='post' action=''> <?php if(isset($error)) { echo "<div class='alert alert-danger'>".$error."</div>"; } ?> <input type='text' name='categorie' placeholder="Catégorie" class='form-control' value="<?php echo $cat['titre']; ?>" required /> <button name='modifiercategory' type='submit' class='btn btn-primary'>Modifier</button> </form> </div> </div> <?php } ?> ~/code~ Traitement de la modification des catégories : ~code~ <?php // Modifier Catégorie if(isset($_POST['modifiercategory'])) { if(!empty($_POST['categorie'])) { $categorie = trim(htmlspecialchars($_POST['categorie'])); if($categorie != '') { $idCategory = intval($_GET['id']); $queryUpdateCategory = $dbConnect->prepare("UPDATE category SET titre=:titre WHERE id=:id"); $queryUpdateCategory->execute(array('titre' => $categorie, 'id' => $idCategory)); header("Location: admin.php?page=1"); } else { $error = "Veuillez remplir correctement les champs du formulaire"; } } else { $error = "Veuillez remplir correctement les champs du formulaire"; } } ?> ~/code~ Maintenant modifions le lien de suppression avec une confirmation : ~code~ <?php echo "<a href='admin.php?page=1&&delete=18393638393&&id=".$row['id']."' class='btn btn-danger'>Supprimer</a>"; ?> ~/code~ Attention, afin d'éviter de supprimer des catégories par erreur, vous devez demander une confirmation. Voici le lien avec le code javascript pour demander confirmation : ~code~ <?php echo "<a onclick='return confirm(\"Êtes vous sur de vouloir supprimer!\");' href='admin.php?page=1&&delete=18393638393&&id=".$row['id']."' class='btn btn-danger'>Supprimer</a>"; ?> ~/code~ Traitement de la suppression des catégories : ~code~ <?php // Supprimer Catégorie if(isset($_GET['delete']) && $_GET['delete'] == 18393638393) { $idCategory = intval($_GET['id']); $queryDeleteCategory = $dbConnect->prepare("DELETE FROM category WHERE id=?"); $queryDeleteCategory->execute(array($idCategory)); header("Location: admin.php?page=1"); } ?> ~/code~ Maintenant passons aux produits. Copions le code de la section des catégories pour le modifier par la suite. NB: Dans le formulaire pour ajouter un produit, vous devez ajouter `enctype="multipart/form-data"` pour que le formulaire accepte les fichiers. C'est très important de ne pas l'oublier. De plus, n'oubliez pas de changer les valeurs `page=1` à `page=2` dans la section des produits. Code complet : ~code~ <?php else if(isset($_GET['page']) && $_GET['page'] == 2) { // Produit if(isset($_GET['add']) && $_GET['add'] == 1) { ?> <div class='modal-container'> <div class='modal-form'> <span onclick="goBack();" class='close-modal'>x</span> <form method='post' action='' enctype="multipart/form-data"> <?php if(isset($error)) { echo "<div class='alert alert-danger'>".$error."</div>"; } ?> <select name='category' class='form-control' required> <option value=''>Catégories</option> <?php $querySelectCategory = $dbConnect->prepare("SELECT * FROM category ORDER BY titre ASC"); $querySelectCategory->execute(); while($row = $querySelectCategory->fetch()) { echo "<option value='".$row['id']."' >".$row['titre']."</option>"; } ?> </select> <input type='file' name="image" required class='form-control' /> <input type='text' name='nom' placeholder="Nom" class='form-control' required value="<?php if(isset($_POST['nom'])) { echo $_POST['nom']; } ?>" /> <input type='number' step="any" name='prix' placeholder="Prix" class='form-control' required value="<?php if(isset($_POST['prix'])) { echo $_POST['prix']; } ?>" /> <textarea name='description' class='form-control' required placeholder="Description"><?php if(isset($_POST['description'])) { echo $_POST['description']; } ?></textarea> <button name='ajouterproduit' type='submit' class='btn btn-primary'>Ajouter</button> </form> </div> </div> <?php } // Edit if(isset($_GET['edit']) && $_GET['edit'] == 1) { $idCategory = intval($_GET['id']); $querySelectCategoryById = $dbConnect->prepare("SELECT * FROM category WHERE id=?"); $querySelectCategoryById->execute(array($idCategory)); $cat = $querySelectCategoryById->fetch(); ?> <div class='modal-container'> <div class='modal-form'> <span onclick="goBack();" class='close-modal'>x</span> <form method='post' action=''> <?php if(isset($error)) { echo "<div class='alert alert-danger'>".$error."</div>"; } ?> <input type='text' name='categorie' placeholder="Catégorie" class='form-control' value="<?php echo $cat['titre']; ?>" required /> <button name='modifiercategory' type='submit' class='btn btn-primary'>Modifier</button> </form> </div> </div> <?php } ?> <div class='admin-section'> <a href='admin.php?page=2&add=1' class='btn btn-primary'>Ajouter </a> <table class='table table-striped'> <tr><th>Image</th><th>Nom</th><th>Prix</th><th>Option</th></tr> <?php $querySelectProduct = $dbConnect->prepare("SELECT * FROM product ORDER BY id DESC"); $querySelectProduct->execute(); while($row = $querySelectProduct->fetch()) { echo "<tr>"; echo "<td><div class='admin-img'><img src='images/".$row['image']."' /></div></td>"; echo "<td>".$row['name']."</td>"; echo "<td>".$row['price']."</td>"; echo "<td>"; echo "<a href='admin.php?page=2&edit=1&id=".$row['id']."' class='btn btn-primary'>Modifier</a>"; echo "<a onclick='return confirm(\"Êtes-vous sûr de vouloir supprimer !\");' href='admin.php?page=2&delete=74946748463&id=".$row['id']."' class='btn btn-danger'>Supprimer</a>"; echo "</td>"; echo "</tr>"; } ?> </table> </div> <?php } ?> ~/code~ Traitement : ~code~ <?php // Ajouter Produit if(isset($_POST['ajouterproduit'])) { if(!empty($_POST['category']) && !empty($_POST['nom']) && !empty($_POST['prix']) && !empty($_POST['description'])) { $category = trim(htmlspecialchars($_POST['category'])); $nom = trim(htmlspecialchars($_POST['nom'])); $prix = trim(htmlspecialchars($_POST['prix'])); $description = trim(htmlspecialchars($_POST['description'])); if($category != '' && $nom != '' && $prix != '' && $description != '') { $imageFieldName = "image"; $imageName = $_FILES[$imageFieldName]['name']; $imageTmpName = $_FILES[$imageFieldName]['tmp_name']; if(!empty($imageName)) { $imageNameExploded = explode(".", $imageName); $imageType = $_FILES[$imageFieldName]['type']; $image_ext = strtolower(end($imageNameExploded)); if(in_array($image_ext, array('jpg','jpeg','png','gif','webp','jpg2000'))) { $newName = time().".".$image_ext; $destination = "images/".$newName; move_uploaded_file($imageTmpName, $destination); $queryInsertProduit = $dbConnect->prepare("INSERT INTO `product`(`category`, `image`, `name`, `price`, `description`) VALUES (:category,:image,:name,:price,:description)"); $queryInsertProduit->execute(array('category' => $category, 'image' => $newName, 'name' => $nom, 'price' => $prix, 'description' => $description)); header("Location: admin.php?page=2"); } else { $error = "Seules les extensions jpg, jpeg, png, gif, webp sont autorisées !"; } } else { $error = "Veuillez choisir une image"; } } else { $error = "Veuillez remplir correctement les champs du formulaire"; } } else { $error = "Veuillez remplir correctement les champs du formulaire"; } } ?> ~/code~ Rendez-vous à la prochaine session, modification et suppression de produits

15 - Page d'administration (partie 3)

Continuons avec notre page d'administration. Nous allons donner aux administrateurs la possibilité de modifier et supprimer les produits. Cependant, avant d'aller plus loin, nous avons un problème : le code commence à devenir volumineux. Nous devrons le diviser en sections distinctes pour une meilleure organisation. Pour ce faire, créons un dossier "module" dans le dossier "include" et à l'intérieur, créons les dossiers "category," "product," "order," et "user." Assurez-vous de bien extraire chaque section de code et de les placer dans leurs fichiers respectifs. Ensuite, incluez les différents fichiers dans la page admin. Pour les sections visibles : ~code~ <?php include("include/module/category/categorysection.php"); include("include/module/product/productsection.php"); include("include/module/order/ordersection.php"); include("include/module/user/usersection.php"); ?> ~/code~ Pour les traitements : ~code~ <?php include("include/module/category/categoryprocess.php"); include("include/module/product/productprocess.php"); include("include/module/order/orderprocess.php"); include("include/module/user/userprocess.php") ?> ~/code~ Fichier "categorysection.php" : ~code~ <?php if(isset($_GET['page']) AND $_GET['page'] == 1) { //Category if(isset($_GET['add']) AND $_GET['add'] == 1) { ?> <div class='modal-container'> <div class='modal-form'> <span onclick="goBack();" class='close-modal'>x</span> <form method='post' action=''> <?php if(isset($error)) { echo "<div class='alert alert-danger'>".$error."</div>"; } ?> <input type='text' name='categorie' placeholder="Categorie" class='form-control' required /> <button name='ajoutercategory' type='submit' class='btn btn-primary'>Ajouter</button> </form> </div> </div> <?php } //Edit if(isset($_GET['edit']) AND $_GET['edit'] == 1) { $idCategory=intval($_GET['id']); $querySelectCategoryById=$dbConnect->prepare("SELECT * FROM category WHERE id=?"); $querySelectCategoryById->execute(array($idCategory)); $cat=$querySelectCategoryById->fetch(); ?> <div class='modal-container'> <div class='modal-form'> <span onclick="goBack();" class='close-modal'>x</span> <form method='post' action=''> <?php if(isset($error)) { echo "<div class='alert alert-danger'>".$error."</div>"; } ?> <input type='text' name='categorie' placeholder="Categorie" class='form-control' value="<?php echo $cat['titre']; ?>" required /> <button name='modifiercategory' type='submit' class='btn btn-primary'>Modifier</button> </form> </div> </div> <?php } ?> <div class='admin-section'> <a href='admin.php?page=1&&add=1' class='btn btn-primary'>Ajouter</a> <table class='table table-striped'> <tr><th>Categorie</th><th>Option</th></tr> <?php $querySelectCategory=$dbConnect->prepare("SELECT * FROM category ORDER BY titre ASC"); $querySelectCategory->execute(); while($row=$querySelectCategory->fetch()) { echo "<tr>"; echo "<td>".$row['titre']."</td>"; echo "<td>"; echo "<a href='admin.php?page=1&&edit=1&&id=".$row['id']."' class='btn btn-primary'>Modifier</a>"; echo "<a onclick='return confirm(\"Etes vous sur de vouloir supprimer!\");' href='admin.php?page=1&&delete=18393638393&&id=".$row['id']."' class='btn btn-danger'>Supprimer</a>"; echo "</td>"; echo "</tr>"; } ?> </table> </div> <?php } ?> ~/code~ Fichier "categoryprocess.php" : ~code~ <?php //Ajouter Categorie if(isset($_POST['ajoutercategory'])) { if(!empty($_POST['categorie'])) { $categorie=trim(htmlspecialchars($_POST['categorie'])); if($categorie != '') { $queryInsertCategory=$dbConnect->prepare("INSERT INTO `category`(`titre`) VALUES (:titre)"); $queryInsertCategory->execute(array('titre' => $categorie)); header("Location: admin.php?page=1"); } else { $error="Remplir correctement les champs du formulaire"; } } else { $error="Remplir correctement les champs du formulaire"; } } //Modifier Categorie if(isset($_POST['modifiercategory'])) { if(!empty($_POST['categorie'])) { $categorie=trim(htmlspecialchars($_POST['categorie'])); if($categorie != '') { $idCategory=intval($_GET['id']); $queryUpdateCategory=$dbConnect->prepare("UPDATE category SET titre=:titre WHERE id=:id"); $queryUpdateCategory->execute(array('titre' => $categorie, 'id' => $idCategory)); header("Location: admin.php?page=1"); } else { $error="Remplir correctement les champs du formulaire"; } } else { $error="Remplir correctement les champs du formulaire"; } } //Delete Category if(isset($_GET['delete']) AND $_GET['delete'] == 18393638393) { $idCategory=intval($_GET['id']); $queryDeleteCategory=$dbConnect->prepare("DELETE FROM category WHERE id=?"); $queryDeleteCategory->execute(array($idCategory)); header("Location: admin.php?page=1"); } ?> ~/code~ Fichier "productsection.php" : ~code~ <?php if(isset($_GET['page']) AND $_GET['page'] == 2) { //Produit if(isset($_GET['add']) AND $_GET['add'] == 1) { ?> <div class='modal-container'> <div class='modal-form'> <span onclick="goBack();" class='close-modal'>x</span> <form method='post' action='' enctype="multipart/form-data"> <?php if(isset($error)) { echo "<div class='alert alert-danger'>".$error."</div>"; } ?> <select name='category' class='form-control' required> <option value=''>Catégories</option> <?php $querySelectCategory=$dbConnect->prepare("SELECT * FROM category ORDER BY titre ASC"); $querySelectCategory->execute(); while($row=$querySelectCategory->fetch()) { echo "<option value='".$row['id']."' >".$row['titre']."</option>"; } ?> </select> <input type='file' name="image" required class='form-control' /> <input type='text' name='nom' placeholder="Nom" class='form-control' required value="<?php if(isset($_POST['nom'])) { echo $_POST['nom']; } ?>" /> <input type='number' step="any" name='prix' placeholder="Prix" class='form-control' required value="<?php if(isset($_POST['prix'])) { echo $_POST['prix']; } ?>" /> <textarea name='description' class='form-control' required placeholder="Description"><?php if(isset($_POST['description'])) { echo $_POST['description']; } ?></textarea> <button name='ajouterproduit' type='submit' class='btn btn-primary'>Ajouter</button> </form> </div> </div> <?php } //Edit if(isset($_GET['edit']) AND $_GET['edit'] == 1) { $idProduct=intval($_GET['id']); $querySelectProductById=$dbConnect->prepare("SELECT * FROM product WHERE id=?"); $querySelectProductById->execute(array($idProduct)); $product=$querySelectProductById->fetch(); ?> <div class='modal-container'> <div class='modal-form'> <span onclick="goBack();" class='close-modal'>x</span> <form method='post' action='' enctype="multipart/form-data"> <?php if(isset($error)) { echo "<div class='alert alert-danger'>".$error."</div>"; } ?> <select name='category' class='form-control' required> <option value=''>Catégories</option> <?php $querySelectCategory=$dbConnect->prepare("SELECT * FROM category ORDER BY titre ASC"); $querySelectCategory->execute(); while($row=$querySelectCategory->fetch()) { if($product['category'] == $row['id']) { $selectOption="selected"; } else { $selectOption=""; } echo "<option value='".$row['id']."' ".$selectOption.">".$row['titre']."</option>"; } ?> </select> <input type='file' name="image" class='form-control' /> <input type='text' name='nom' placeholder="Nom" class='form-control' required value="<?php if(isset($product['name'])) { echo $product['name']; } ?>" /> <input type='number' step="any" name='prix' placeholder="Prix" class='form-control' required value="<?php if(isset($product['price'])) { echo $product['price']; } ?>" /> <textarea name='description' class='form-control' required placeholder="Description"><?php if(isset($product['description'])) { echo $product['description']; } ?></textarea> <button name='modifierproduit' type='submit' class='btn btn-primary'>Modifier</button> </form> </div> </div> <?php } ?> <div class='admin-section'> <a href='admin.php?page=2&&add=1' class='btn btn-primary'>Ajouter</a> <table class='table table-striped'> <tr><th>Image</th><th>Nom</th><th>Prix</th><th>Option</th></tr> <?php $querySelectProduct=$dbConnect->prepare("SELECT * FROM product ORDER BY id DESC"); $querySelectProduct->execute(); while($row=$querySelectProduct->fetch()) { echo "<tr>"; echo "<td><div class='admin-img'><img src='images/".$row['image']."' /></div></td>"; echo "<td>".$row['name']."</td>"; echo "<td>".$row['price']."</td>"; echo "<td>"; echo "<a href='admin.php?page=2&&edit=1&&id=".$row['id']."' class='btn btn-primary'>Modifier</a>"; echo "<a onclick='return confirm(\"Êtes vous sur de vouloir supprimer!\");' href='admin.php?page=2&&delete=74946748463&&id=".$row['id']."' class='btn btn-danger'>Supprimer</a>"; echo "</td>"; echo "</tr>"; } ?> </table> </div> <?php } ?> ~/code~ Fichier "productprocess.php" : ~code~ <?php //Ajouter Produit if(isset($_POST['ajouterproduit'])) { if(!empty($_POST['category']) AND !empty($_POST['nom']) AND !empty($_POST['prix']) AND !empty($_POST['description'])) { $category=trim(htmlspecialchars($_POST['category'])); $nom=trim(htmlspecialchars($_POST['nom'])); $prix=trim(htmlspecialchars($_POST['prix'])); $description=trim(htmlspecialchars($_POST['description'])); if($category != '' AND $nom != '' AND $prix != '' AND $description != '') { $imageFieldName="image"; $imageName=$_FILES[$imageFieldName]['name']; $imageTmpName=$_FILES[$imageFieldName]['tmp_name']; if(!empty($imageName)) { $imageNameExploded=explode(".", $imageName); $imageType=$_FILES[$imageFieldName]['type']; $image_ext=strtolower(end($imageNameExploded)); if(in_array($image_ext, array('jpg','jpeg','png','gif','webp','jpg2000'))) { $newName=time().".".$image_ext; $destination="images/".$newName; move_uploaded_file($imageTmpName, $destination); $queryInsertProduit=$dbConnect->prepare("INSERT INTO `product`(`category`, `image`, `name`, `price`, `description`) VALUES (:category,:image,:name,:price,:description)"); $queryInsertProduit->execute(array('category' => $category, 'image' => $newName, 'name' => $nom, 'price' => $prix, 'description' => $description)); header("Location: admin.php?page=2"); } else { $error="seulement les extensions jpg, jpeg, png, gif, webp sont autorisée!"; } } else { $error="Veuillez choisir une image"; } } else { $error="Remplir correctement les champs du formulaire"; } } else { $error="Remplir correctement les champs du formulaire"; } } //Modifier Produit if(isset($_POST['modifierproduit'])) { if(!empty($_POST['category']) AND !empty($_POST['nom']) AND !empty($_POST['prix']) AND !empty($_POST['description'])) { $category=trim(htmlspecialchars($_POST['category'])); $nom=trim(htmlspecialchars($_POST['nom'])); $prix=trim(htmlspecialchars($_POST['prix'])); $description=trim(htmlspecialchars($_POST['description'])); if($category != '' AND $nom != '' AND $prix != '' AND $description != '') { $imageFieldName="image"; $imageName=$_FILES[$imageFieldName]['name']; $imageTmpName=$_FILES[$imageFieldName]['tmp_name']; if(!empty($imageName)) { $imageNameExploded=explode(".", $imageName); $imageType=$_FILES[$imageFieldName]['type']; $image_ext=strtolower(end($imageNameExploded)); if(in_array($image_ext, array('jpg','jpeg','png','gif','webp','jpg2000'))) { $newName=time().".".$image_ext; $destination="images/".$newName; move_uploaded_file($imageTmpName, $destination); } else { $error="seulement les extensions jpg, jpeg, png, gif, webp sont autorisée!"; } } else { $newName=""; } $IdProduct=intval($_GET['id']); if($newName != "") { $queryUpdateProduct=$dbConnect->prepare("UPDATE `product` SET `category`=:category,`image`=:image,`name`=:name,`price`=:price,`description`=:description WHERE id=:id"); $queryUpdateProduct->execute(array('category' => $category, 'image' => $newName, 'name' => $nom, 'price' => $prix, 'description' => $description, 'id' => $IdProduct)); } else { $queryUpdateProduct=$dbConnect->prepare("UPDATE `product` SET `category`=:category,`name`=:name,`price`=:price,`description`=:description WHERE id=:id"); $queryUpdateProduct->execute(array('category' => $category, 'name' => $nom, 'price' => $prix, 'description' => $description, 'id' => $IdProduct)); } header("Location: admin.php?page=2"); } else { $error="Remplir correctement les champs du formulaire"; } } else { $error="Remplir correctement les champs du formulaire"; } } //Delete Product if(isset($_GET['delete']) AND $_GET['delete'] == 74946748463) { $idProduct=intval($_GET['id']); $queryDeleteProduct=$dbConnect->prepare("DELETE FROM product WHERE id=?"); $queryDeleteProduct->execute(array($idProduct)); header("Location: admin.php?page=2"); } ?> ~/code~ Fichier "ordersection.php" : ~code~ <?php if(isset($_GET['page']) AND $_GET['page'] == 3) { //Commande ?> <div class='admin-section'> <table class='table table-striped'> <tr><th>Utilisateur</th><th>Produit</th><th>Total</th></tr> <?php $querySelectOrder=$dbConnect->prepare("SELECT * FROM commande ORDER BY id DESC"); $querySelectOrder->execute(); while($row=$querySelectOrder->fetch()) { echo "<tr>"; echo "<td>".querySelectData('name','user','id', $row['id_user'])."</td>"; echo "<td>".querySelectData('name','product','id', $row['id_product'])."</td>"; echo "<td>".number_format($row['price'],2)." $</td>"; echo "</tr>"; } ?> </table> </div> <?php } ?> ~/code~ Fichier "usersection.php" : ~code~ <?php if(isset($_GET['page']) AND $_GET['page'] == 4) { //Commande ?> <div class='admin-section'> <table class='table table-striped'> <tr><th>Nom</th><th>Email</th><th>Téléphone</th><th>Date de naissance</th></tr> <?php $querySelectUser=$dbConnect->prepare("SELECT * FROM user ORDER BY id DESC"); $querySelectUser->execute(); while($row=$querySelectUser->fetch()) { echo "<tr>"; echo "<td>".$row['name']."</td>"; echo "<td>".$row['email']."</td>"; echo "<td>".$row['phone']."</td>"; $currentYear=date('Y'); $userNaissance=date_create($row['naissance']); $birthYear=date_format($userNaissance, 'Y'); $age=$currentYear - $birthYear; echo "<td>".$age."</td>"; echo "</tr>"; } ?> </table> </div> <?php } ?> ~/code~ N'oubliez pas de créer le fichier "function.php" pour regrouper toutes vos fonctions, par exemple la fonction "querySelectData" qui permet de récupérer des informations de la base de données de manière dynamique. ~code~ <?php function querySelectData($fiedl, $table, $close, $value) { GLOBAL $dbConnect; $querySelectdataById=$dbConnect->prepare("SELECT ".$fiedl." FROM ".$table." WHERE ".$close."=? "); $querySelectdataById->execute(array($value)); $nbrData=$querySelectdataById->rowCount(); if($nbrData > 0) { $dataRow=$querySelectdataById->fetch(); $result=$dataRow[$fiedl]; } else { $result=""; } return $result; } ?> ~/code~

16 - Ajouter au panier

Bienvenue dans cette séance où nous allons ajouter un bouton "Ajouter au panier" sur votre page de produit. Avant de créer le formulaire, je vous conseille d'ajouter le champ "stock" dans votre table de produits pour afficher le formulaire ou non en fonction de la disponibilité du produit. ~code~ <?php if($data['stock'] == 0) { echo "<div class='alert alert-warning'>Ce produit n'est pas disponible</div>"; } else { ?> <form class='add-to-cart-form' method='post' action=''> <?php if(isset($error)) { echo "<div class='alert alert-danger'>".$error."</div>"; } ?> <input type='number' name='quantity' class='form-control' id='quantity' placeholder='Quantity' min='1' max='<?php echo $data['stock']; ?>' value='1' required /> <button class='btn-add-to-cart' name='addtocart' type='submit'>Ajouter au panier</button> </form> <?php } ?> ~/code~ Stylisons maintenant les éléments de votre formulaire. Vous pouvez ajouter du CSS pour personnaliser l'apparence de ces éléments. ~code~ .add-to-cart-form { width: 100%; display: inline-block; } .add-to-cart-form #quantity { width: 100px; display: inline-block; background: rgb(242,242,246); border-radius: 15px; } .add-to-cart-form .btn-add-to-cart { border-radius: 15px; background:rgb(255,83,0); border:2px solid rgb(255,83,0); font-weight: bold; color: white; padding: 5px 20px; } ~/code~ Ensuite, passons à la gestion de l'ajout au panier : ~code~ <?php //Ajouter au panier if(isset($_POST['addtocart'])) { if(!empty($_POST['quantity'])) { $quantity=intval($_POST['quantity']); if($quantity > 0) { if($quantity <= $data['stock']) { if(!isset($_SESSION['cart'])) { $_SESSION['cart']=array(); } $_SESSION['cart'][$Id]=array(); $_SESSION['cart'][$Id]['id']=$Id; $_SESSION['cart'][$Id]['title']=$productName; $_SESSION['cart'][$Id]['text']=$productDescription; $_SESSION['cart'][$Id]['qut']=$quantity; $_SESSION['cart'][$Id]['amount']=$productPrice; $_SESSION['cart'][$Id]['img']=$productImage; header("Location: panier.php"); } else { $error="La quantité que vous avez choisie dépassse le stock !"; } } else { $error="Veuillez remplir le champ quantité!"; } } else { $error="Veuillez remplir le champ quantité!"; } } ?> ~/code~ Dans la page du panier, je vous recommande de mettre les données du panier dans un module pour une utilisation ultérieure : ~code~ <div id='cart-summary-container'> <?php include("include/module/panier/panier.php"); ?> </div> ~/code~ Pour le traitement du panier, vous pouvez utiliser le code suivant : ~code~ <div class='shopping-cart-container'> <?php $cartSubTotal=0; $cartFee=0; $discountFee=0; if(isset($_SESSION['cart']) AND $_SESSION['cart'] != '') { foreach($_SESSION['cart'] as $row) { $totalAmountItem=$row['amount'] * $row['qut']; $cartSubTotal = $cartSubTotal + $totalAmountItem; echo "<div class='shopping-cart-content-item'>"; echo "<div class='shopping-cart-content-img' style='background-image:url(\"images/".$row['img']."\")'></div>"; echo "<div class='shopping-cart-content-text'>"; echo "<h3>$ ".number_format($row['amount'],2)." <span>x ".$row['qut']."</span> <b>$".number_format($totalAmountItem,2)."</b></h3>"; echo "<h2 class='line-clamp'>".$row['title']."</h2>"; echo "<p class='line-clamp'>".$row['text']."</p>"; echo "</div>"; echo "</div>"; } } ?> </div> ~/code~ Assurez-vous d'entourer votre code de panier d'une balise `<div>` avec l'ID "cart-summary-container". Code CSS ~code~ .shopping-cart-container { display: inline-block; width: 100%; position: relative; padding: 30px; margin-top: 100px; } .shopping-cart-content-item { display: inline-block; width: 100%; position: relative; margin-bottom: 10px; padding-bottom: 10px; border-bottom:1px solid rgba(0,0,0,0.1); } .shopping-cart-content-img { display: inline-block; width: 100px; height: 100px; border-radius: 10px; border:1px solid rgba(0,0,0,0.1); background-position: center; background-repeat: no-repeat; background-size: cover; position: relative; } .shopping-cart-content-text { display: inline-block; width: calc(100% - 100px); padding-left: 30px; } .line-clamp { overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1; } .shopping-cart-content-text h3 { display: inline-block; width: 100%; font-size: 18px; font-weight: bold; margin: 0px; padding: 0px; margin-bottom: 10px; position: relative; } .shopping-cart-content-text h3 span { font-size: 14px; font-weight: bold; } .shopping-cart-content-text h3 b { float: right; } ~/code~

17 - Ajouter au panier (partie 2) | Introduction à Ajax

Pour continuer avec notre panier d'achats, nous allons permettre à l'utilisateur de retirer un produit du panier en utilisant JavaScript, AJAX et PHP. Tout d'abord, nous devons ajouter un bouton de suppression stylisé dans notre interface. Vous pouvez utiliser le code suivant à l'intérieur de la boucle qui génère les éléments du panier : ~code~ <!--Ajoutez ce code entre les divs de l'image--> <span class='remove-item-btn' onclick='removecartitem(".$row['id'].");' >x</span> <!--Code complet--> <?php echo "<div class='shopping-cart-content-img' style='background-image:url(\"images/".$row['img']."\")'><span class='remove-item-btn' onclick='removecartitem(".$row['id'].");'>x</span></div>"; ?> ~/code~ Assurez-vous d'inclure la classe CSS pour styliser le bouton. Le code CSS suivant rendra le bouton attrayant : ~code~ .remove-item-btn { position: absolute; top:-10px; left: -10px; cursor: pointer; width: 25px; height: 25px; line-height: 20px; vertical-align: middle; text-align: center; background: red; color: white; font-weight: bold; border-radius: 50px; } ~/code~ Maintenant, créons la fonction JavaScript "removecartitem" qui enverra une requête AJAX pour retirer l'article du panier sans actualiser la page entière : ~code~ <script> function removecartitem(id) { $.ajax({ method:'POST', url:'include/module/panier/panierprocess.php', data:'id='+id, success:function(html){ $('#cart-summary-container').html(html); } }) } </script> ~/code~ Assurez-vous d'inclure la bibliothèque jQuery pour utiliser AJAX. Ensuite, créez un fichier nommé "panierprocess.php" dans le dossier "include/module/panier/" avec le contenu suivant. Ce fichier supprime l'article du panier en fonction de l'ID fourni via POST : ~code~ <?php include("../../dbconnect.php"); if(isset($_POST['id'])) { $itemid=intval($_POST['id']); if($itemid > 0) { unset($_SESSION['cart'][$itemid]); } else { unset($_SESSION['cart']); } include("panier.php"); } ?> ~/code~ Dans le fichier panier qui se trouve dans le dossier du module ajoutez les liens pour vider le panier, afficher le total du panier, puis passer à la page suivante. ~code~ <? echo "<span class='shopping-cart-content-empty-cart' onclick='removecartitem(0);' >Vider le panier</span>"; //Fee //Discount //Shipping $cartTotal = $cartSubTotal + $cartFee - $discountFee; echo "<h5 class='shopping-cart-content-total'>Total : <sapn>$".number_format($cartTotal,2)."</span></h5>"; echo "<a href='payment.php' class='shopping-cart-content-next'>Procéder au paiement</a>"; ?> ~/code~ Pour rendre la transition vers le paiement plus attrayante, stylisons le bouton "Suivant" de la page panier : ~code~ .shopping-cart-content-next { display: inline-block; background: rgb(255,83,0); border: 2px solid rgb(255,83,0); color: white; padding: 10px 30px; border-radius: 30px; text-decoration: none; font-weight: bold; margin-top: 30px; } ~/code~ Il vous reste à créer la page de paiement pour compléter votre processus de commande. Avec ces fonctionnalités, vos utilisateurs pourront gérer leur panier de manière conviviale avant de passer à la phase de paiement.

18 - Page de paiement sécurisée avec MonCash et Stripe (cartes de débit/crédit)

Bienvenue dans cette séance où nous allons créer la page de paiement. Pour commencer, nous allons créer un nouveau fichier que nous nommerons "paymentpage.php". b~Stripe~b b~Intégration de la méthode de paiement Stripe~b Accédez à : https://github.com/Appogithub/Stripe-payment-with-PHP Cliquez sur "Code" puis "Download ZIP" pour télécharger le code que j'ai préparé pour vous. Pour intégrer la méthode de paiement de Stripe dans votre application, suivez les étapes ci-dessous : 1. Créez un compte Stripe si vous n'en avez pas déjà un. Vous pouvez le faire en vous rendant sur le site web de Stripe et en suivant le processus d'inscription. 2. Une fois votre compte Stripe créé, suivez les instructions fournies pour lier votre compte Stripe à votre compte en banque. Cela vous permettra de recevoir les paiements des clients sur votre compte bancaire. 3. Avant de passer en mode production, il est essentiel de réaliser des tests pour vous assurer que tout fonctionne correctement. Pour ce faire, suivez les étapes suivantes : - Accédez au fichier "credentials.php" qui se trouve dans le dossier "stripe" de votre application. - Modifiez la variable "$productionMode" en la mettant à 0 pour activer le mode de test. Une fois les tests terminés et que tout fonctionne comme prévu, vous pourrez la passer à 1 pour activer le mode de production. 4. Utilisez les clés d'API de test de Stripe pour effectuer vos tests. Voici les clés d'API de test que vous pouvez utiliser : ``` $secretKeyTest = "sk_test_VePHdqKTYQjKNInc7u56JBrQ"; $publicKeyTest = "pk_test_oKhSR5nslBRnBZpjO6KuzZeX"; ``` 5. Pour effectuer des tests de paiement, n'utilisez pas de numéros de carte de crédit réels. Utilisez plutôt les numéros de carte de test fournis dans la documentation de Stripe. Voici quelques exemples de numéros de carte de test que vous pouvez utiliser : - VISA : 4242 4242 4242 4242 - MasterCard : 5555 5555 5555 4444 - American Express : 3782 8224 6310 005 - Discover : 6011 1111 1111 1117 6. Si vous souhaitez tester des cas de paiement en échec, voici quelques exemples de numéros de carte de test pour ces scénarios : - Carte refusée : 4000 0000 0000 0002 - Solde insuffisant : 4000 0000 0000 9995 7. Une fois que vous avez terminé de tester et que vous avez accès à votre compte Stripe, n'oubliez pas de mettre la variable "$productionMode" à 1 pour activer le mode de production, et de remplacer les clés d'API de test par les clés d'API de production dans les variables "$secretKeyLive" et "$publicKeyLive" dans votre fichier "credentials.php". Pour plus d'informations, consultez la documentation de Stripe à l'adresse suivante : https://stripe.com/docs/testing . En effectuant ces étapes, vous devriez être en mesure d'intégrer avec succès la méthode de paiement de Stripe dans votre application et de passer en mode production une fois que tous les tests ont été réussis. b~MonCash~b b~Pour effectuer un paiement avec Moncash, suivez ces étapes :~b Étape 1 : Accédez à : https://github.com/Appogithub/Moncash_SDK_PHP Cliquez sur "Code" puis "Download ZIP" pour télécharger le code que j'ai préparé pour vous. Étape 2 : Demande de compte marchand La première chose à faire est de vous rendre à la Digicel pour demander la création d'un compte marchand, qui vous permettra d'utiliser l'API de Moncash. Assurez-vous de remplir les conditions requises pour obtenir ce compte. Une fois que vous avez rempli les conditions et que votre compte marchand est approuvé, ils vous enverront un lien pour tester à partir de l'environnement Sandbox. Notez que lors de cette étape, vous devrez fournir deux informations techniques essentielles : 1. Alert Url : C'est la page vers laquelle l'utilisateur sera redirigé après avoir réussi le paiement et cliqué sur le bouton "Ok". 2. Return Url : C'est la page où les opérations de traitement seront effectuées, notamment la mise à jour de votre base de données après la réussite du paiement. Assurez-vous d'avoir ces deux pages prêtes sur votre site, par exemple : "alerturl.php" et "returnurl.php". Étape 3 : Création d'un compte Sandbox Après avoir obtenu votre compte marchand, vous devez vous rendre sur l'environnement Sandbox pour créer un compte de test. Vous pouvez accéder à la page de création de compte Sandbox en suivant ce lien : https://sandbox.moncashbutton.digicelgroup.com/Moncash-business/New Suivez les instructions pour créer votre compte Sandbox. Ensuite, connectez-vous à votre compte de test en suivant ce lien : https://sandbox.moncashbutton.digicelgroup.com/Moncash-business/Login?environment=test Étape 4 : Obtention des informations de test Pour effectuer des tests, vous aurez besoin de deux informations spécifiques. Pour les obtenir, suivez ces étapes : - Cliquez sur "New" pour créer une entreprise et effectuer les tests. - Suivez les instructions fournies. - Dans l'entreprise de test que vous avez créée, cliquez sur "View," puis sur "Create ClientRestAPI." Vous y trouverez les informations suivantes : - Client Id - Client Secret Sauvegardez ces informations en lieu sûr. Étape 5 : Configuration du fichier credentials Accédez au fichier "credentials" situé dans le dossier moncash. Modifiez la variable "$productionMode" en fonction de votre environnement : - Mettez "$productionMode" à 0 si vous effectuez des tests à partir de l'environnement Sandbox. - Mettez "$productionMode" à 1 si vous êtes en mode production. Ajoutez les informations suivantes au fichier : $moncashclient = "votre_Client_Id"; // Remplacez par votre Client Id $moncashsecret = "votre_Client_Secret"; // Remplacez par votre Client Secret Vous pouvez désormais effectuer vos tests. Étape 6 : Passer en mode production Une fois que vous avez l'autorisation pour votre compte marchand Digicel, n'oubliez pas de modifier "$productionMode" en le mettant à 1, et de remplacer les valeurs de "$moncashclient" et "$moncashsecret" par les véritables informations de votre compte marchand.

19 - Bonus | Mettre votre site en ligne

Je suis heureux de vous annoncer que nous touchons à la fin de cette formation sur PHP et MySQL. Ensemble, nous avons appris à créer des pages totalement dynamiques, à créer une base de données et à connecter votre site à la base de données, puis à créer un espace d'administration pour gérer dynamiquement votre site. Maintenant, il ne vous reste qu'à mettre votre site en ligne. Nous allons ensemble voir comment faire. N.B. : Ceci n'est que le début. Vous avez encore beaucoup à apprendre. PHP est un langage vaste, avec de nouvelles versions qui apparaissent. Il se peut que le jour où vous suivez cette formation, d'autres versions soient déjà disponibles. À vous de vous assurer d'être toujours à jour et d'apprendre d'autres ressources selon vos besoins. b~Envoyer votre code sur le net~b Pour mettre votre site en ligne, vous aurez besoin d'un nom de domaine, par exemple "codingclubkafou.com". C'est un peu comme l'adresse de votre maison. Ensuite, vous aurez également besoin d'un hébergement, qui est un serveur en ligne où votre site internet sera stocké, afin que tout le monde puisse y accéder en tout temps. Pour l'hébergement et le domaine, je vous conseille Hostinger (https://www.hostinger.com/). C'est une plateforme que j'utilise depuis des années, je suis très satisfait. Les prix sont abordables, et ils offrent de nombreuses fonctionnalités gratuites, telles que SSL, email professionnel, sauvegarde quotidienne, etc. Pour y accéder, allez sur https://www.hostinger.com/ et sélectionnez "Hosting," puis "Web Hosting" pour choisir votre plan. Personnellement, j'ai l'habitude d'utiliser le plan "Business," à noter qu'il vous offre un domaine gratuit pour un an. Assurez-vous que le domaine est disponible. Aller sur "Domains." Dans la barre de recherche, tapez le nom de domaine souhaité, par exemple "abcdboutik.com." Vous n'avez pas besoin de l'ajouter au panier, car il vous offre un gratuit pour un an si vous prenez un hébergement. Ensuite, vous pouvez retourner dans "Hosting" pour choisir le plan d'hébergement. Cliquez sur "Add to cart" pour sélectionner le plan que vous souhaitez. Choisissez la durée de l'abonnement. Dans la section "Create your account," entrez votre email pour que votre compte soit créé. Enfin, passez au paiement et suivez les instructions. C'était un plaisir pour moi de vous accompagner durant cette formation. Si vous avez des questions, n'hésitez pas à me contacter.

Voir aussi