In order to fulfill the basic functions of our service, the user hereby agrees to allow Xiaomi to collect, process and use personal information which shall include but not be limited to written threads, pictures, comments, replies in the Mi Community, and relevant data types listed in Xiaomi's Private Policy. By selecting "Agree", you agree to Xiaomi's Private Policy and Content Policy .
Agree

Jeux/Détente

[Détente] [JeudiProg] [Web] Cours 6 : Simplifier la gestion des articles avec PHP

2020-09-25 00:01:30
98 1
Bonjour à tous,

Notre blog a désormais une bonne structure et est adaptative mais il n'est pas vraiment pratique de devoir se replonger dans le code chaque fois que l'on veut écrire un nouvel article.

Si vous attrapez ce cours en vol, n'hésitez pas à d'abord consulter les précédents cours puis revenir ici ensuite :

Cours 1 : Ma première page HTMLConsulter
Cours 2 : Balises et attributs - Tableaux, images et liensConsulter
Cours 3 : Et si l'on démarrait un blog Xiaomi ?Consulter
Cours 3bis : Introduction au CSSConsulter
Cours 4 : Le positionnement en CSSConsulter
Cours 5 : Un peu d’interaction avec JavaScriptConsulter




Attention : Du fait des limitations actuelles la communauté, il n'est pas toujours possible d'afficher un code correct, c'est pourquoi je vous fournis ce fichier ZIP contenant l'ensemble des codes de ce cours.

Cours 6.zip (4.01 KB, Downloads: 0)





Préambule

Tout comme avec JavaScript, ce cours n'aura pas la prétention de vous apprendre les bases du langage PHP, nous allons utiliser des fonctions que je vais vous détailler mais je vous demande de les appliquer comme telle. Nous consacrerons certainement dans le futur un cours complet pour maîtriser PHP.

PHP est lui aussi un langage de script, c'est-à-dire que son code est interprété et non pas compilé, comme dans le cas du C ANSI que nous avions abordé précédemment. Par contre, là où JavaScript était interprété par notre navigateur web après l'affichage de notre page, PHP est interprété par un serveur avant l'affichage de notre page. Ce code est donc exécuté une seule fois, on ne va pas pouvoir faire un bouton de switch thème clair/thème sombre avec PHP. PHP conserve quand même de nombreuses possibilités et nous allons voir uniquement une infime partie d'entre elles.




Installation d'un serveur

Comme je vous le disais, PHP doit être exécuté par un serveur en amont de l'affichage car ce serveur va, à partir du code PHP générer un code HTML qui sera lisible de notre navigateur. On va donc avoir besoin d'un serveur que l'on appelle soit serveur Web ou serveur HTTP, Apache est le plus populaire.

Si votre système est basé sur Unix (distributions Linux, macOS), vous disposez très probablement déjà de ce serveur et il est donc inutile d'en installer un deuxième. Si ce n'est pas le cas vous pourrez également utiliser le logiciel suivant sur votre distribution Linux.

Ce n'est donc pas la même sous Windows où nous allons devoir en installer un. Il existe plusieurs distributions et je vous propose ici d'installer Xampp.

1) Rendez-vous sur https://www.apachefriends.org/download.html. Vous pouvez télécharger la dernière version, dans ce cours nous n'irons pas assez loin dans le langage pour noter une différence entre les différentes versions disponibles.

2) Exécuter l'installateur. Vous pouvez laisser tout coché, même si l'on ne va pas tout utiliser on pourrait l'utiliser lors d'un prochain cours plus complet.



3) Privilégiez un répertoire d'installation sans espace pour éviter tout problème. Par exemple :



4) Démarrez le panneau de contrôle et lancez (Start) les serveurs Apache et MySQL. Il faudra effectuer cette opération à chaque fois que vous débuterez une session programmation sur votre ordinateur.



Et voilà, nous sommes prêts. Vous rencontrez un problème avec l'installation ? Direction les commentaires !




Notre premier code PHP

Afin de se simplifier les choses rendez-vous dans le dossier C:\xampp\htdocs (peut être avez vous mis un chemin d'installation différent, à vous de retrouver le dossier htdocs). Nous n'allons pas l'utiliser immédiatement mais vous pouvez déjà copier dans ce dossier tout votre code HTML, CSS, JavaScript de votre blog.

Nous allons alors créer un nouveau fichier mais il va falloir indiquer à notre serveur que ce fichier contient du code PHP à interpréter. Ne vous inquiétez pas, rien de compliqué. Au lieu de donner une extension .htm ou .html à notre fichier, nous allons donner l'extension .php. Aussi simple que ça ! Appelons le par exemple hello.php

Ouvrez alors ce fichier dans votre éditeur favoris et ajoutons le code suivant :

˂?php echo 'Hello Xiaomi World!'; ?˃

Vous comprenez alors que notre code PHP va se trouver entre deux demi-balises ˂?php et !
La fonction echo signifie simplement qu'il faut afficher le texte suivant.

L'intérêt d'être un code interprété c'est qu'on ne va pas avoir à convertir l'intégralité de notre code HTML en code PHP. Souvenez vous de la partie de code affichant la date :

˂section˃
   ˂h2˃Aujourd'hui˂/h2˃
   ˂p˃Bonjour, nous sommes le ˂?php echo date("d/m/y"); ?˃, il est ˂span id="heure"˃˂/span˃ !˂/p˃
˂/section˃

Pour afficher notre code, il faut bien sûr modifier l'extension de notre fichier blog.htm en blog.php. Et dans notre navigateur on va y accéder avec les adresses : http://localhost/hello.php et http://localhost/blog.php ! Attention si vous n'avez pas démarré le serveur Apache rien ne va s'afficher !

Vous devriez donc avoir la date du jour affichée sans que vous n'ayez à modifier votre site tous les jours.

Si cela en fonctionne pas, on se retrouve en commentaires ;)




Explications des commandes

Pour les scripts qui suivront je vais vous expliquer chaque ligne de code grâce à des commentaires. En PHP, un commentaire de ligne se fait grâce à deux slashs en début de ligne. Ces lignes de commentaires ne sont pas interprétées par le serveur. Par exemple :

˂?php
   // Affiche du texte
   echo 'Hello Xiaomi World!';




Séparer les articles du code principal

Afin de ne pas avoir à toucher sans arrêt le code de notre blog, nous allons écrire nos articles dans des fichiers textes distincts et PHP va nous permettre de les inclure facilement. Dans le ZIP du cours, vous avez peut être déjà du voir un dossier articles où nous stockerons les différents articles simplement numérotés : 1.txt, 2.txt, etc...

Il faut donc que l'on modifie le code de notre blog.php pour pouvoir accéder au contenu de ces fichiers et les inclure. Je ne vous affiche que le code situé entre les balises ˂main˃ et ˂/main˃, nous ne touchons pas au reste du code.

˂main˃
   ˂?php
   // On déclare un indice qui va nous permettre de parcourir les articles
   $i = 1;
   // On renseigne l'adresse du premier article
   $fichier = 'articles/'.$i.'.txt';

   // Tant que le fichier existe
   while(file_exists($fichier))
   {
      // On récupère le contenu du fichier
      $contenu = file_get_contents($fichier);
      // On renseigne l'adresse de l'article suivant
      $fichier = 'articles/'.++$i.'.txt';

      // On affiche notre code HTML avec le contenu du fichier
      echo '˂article˃';
      echo $contenu;
      echo '˂button class="fermeture"˃Supprimer l\'article˂/button˃';
      echo '˂/article˃';
   }
   // Si un fichier n'existe plus, on se retrouve ici et il n'y a plus rien à exécuter.
   ?˃
˂/main˃

Un code que j'espère relativement simple pour vous qui même sans connaître PHP devrait vous paraître assez clair pour pouvoir le reproduire.




Exercice

Pas de médaille à gagner aujourd'hui car nous allons poursuivre encore un peu ce cours la semaine prochaine mais vous avez déjà du travail à faire en séparant les articles de votre blog.

De plus, je vous demande déjà de réfléchir à une solution qui pourra afficher nos articles en sens inverse car actuellement ce code va afficher les articles dans l'ordre de leur création : 1, 2, 3, etc... Mais il est plus logique, et judicieux, d'afficher le dernier article paru sur un blog.

J'anticipe peut être déjà une réponse : si vous me proposez de nommer directement les articles dans le sens inverse, c'est-à-dire 1.txt le plus récent. Je vous répondrais comment allez vous faire quand vous aurez 8866 articles sur votre blog ? Allez vous renommer vos articles 1.txt à 8866.txt de 2.txt à 8867.txt pour pouvoir ensuite créer le 1.txt ? C'est possible mais quelque peu superflue, même avec une automatisation.

Faites vos propositions en commentaires !

2020-09-25 00:01:30
Favorites2 RateRate

Master Bunny

MARDE | from app

#1

thanks
2020-09-25 03:18:32
please sign in to reply.
Sign In Sign Up

GuillaumeMi

Moderator

Check-in 3 jours
Check-in 7 jours
Check-in 21 jours
Check-in 40 jours
Check-in 70 jours
Check-in 100 jours
MiA2
SBM teaser
Mi band 3
25K
X-Men
Photography contest
30K
Tech Talent
MI9T
MIUI Geek
Three's A Party
Happy July
App Maniac
MIUI 9th Birthday
Global Community
Medalla Encuesta Mi Phone
better together slogan
Global Community
2020
Médaille des 50K
100K abo
Mi Community Üçüncü Anket Madalyası
Mi 10th Birthday Medal
Medalla #GradientsInLife
Window View
বাংলা নববর্ষ ১৪২৭
Android One
Answer Mi #3
Ulang Tahun Xiaomi ke-10
3 Tahun Mi Community
Mobile Game
App Star
Redmi 8
Bookworm
23 Nisan Kutlu Olsun!
Sondage gaming
MIUI Fan
Favorite Goalkeeper
Ramadan Kareem
Meetings from Home
Mi2U April
Lefty Star
Favorite Author
redminote8series
Streaming Geek
Favorite Actor
Favourite Football Team
200mila Mi Fans
Osneip
Redmi Note 8
Mail Lover
Radio
Super Thursday
Redmi Note 8 Series
Redmi Note 8 Pro
Coin
Chipset
Corona Awareness
Map
Redmi 8A
MIUI 12
First Smartphone
Phone Finder
2 anni insieme
Eid Mubarak
TV Series Freak
BougLo Challenge I
Mi to You May
MIUI12
Neues Zuhause
MIUI Boot Animation
200 Mil Mi Fans En México
Favorite Singer
Gadget
Favorite YouTube Channel
Art Challenge
Father's Day
Redmi Note 9S
Mother's Day
UK Community 300K Users Medal
Redmi Note 9
Cloud Storage
30 Million Redmi Note 8 Series
Redmi Note 9 Pro Feature
ContributeTogether
10 years
K2K #3
Redmi 9 Colors
200K Registered Users
2nd Anniversary
MFF2020
Nepal "Happy New Year&amp
Emoji Day
Mi To You July
Redmi Note 9S Feature
Navigation System
Médaille 6
First Anniversary
10th mi fan stories
K2K #4
Favorite Bangladeshi Food
Redmi 9A
Redmi Note 9 Pro Camera
Material Expert
Redmi 9A Feature
MIUI 12 Dark Mode
10 years
Battery Survey
Mi to You September
Agosto Cometas
Moderadores
Mi10 espacio
Facebook Reviewer
Tín đồ Poco
Display Expert
Favorite Radio Station
Top photo France

Read moreGet new

Mi Comm APP

Stay updated on Mi Products and MIUI

Copyright©2010-2020 Xiaomi.com, All Rights Reserved
Content Policy
Quick Reply To Top Return to the list