PHP : Le tutoriel pour grands débutants pressés
PHP : Le tutoriel pour grands débutants pressés
Date de publication : 17 janvier 2009
VIII. PHP ETAPE 8 : CONCLUSION
VIII-1. La commande switch
VIII-2. En guise de conclusion
VIII-2-a. PHP, un langage qui ne peut pas tout
VIII-2-b. Conceptualisation d'un projet PHP
VIII-3. Quelques réflexes pour progresser en PHP
VIII-4. TP8
VIII-5. Correction du TP8
VIII-6. Mes liens favoris pour l'apprentissage du développement web
VIII-6-a. Les tutos et cours Developpez.com
VIII-6-b. D'autres tutos et cours qui m'ont beaucoup appris
VIII. PHP ETAPE 8 : CONCLUSION
VIII-1. La commande switch
Voici une commande qui est une condition, en tout cas, qui gère très simplement, le principe des conditions multiples un peu lourd à gérer avec des if, elseif, else, if imbriqués, ordre des if, cas particulier qui vient faire planter tout notre échaffaudage laborieux de conditions etc.
Nous verrons plus tard pourquoi cette commande switch est quasiment vitale en PHP.
Pour l'instant, contentons-nous d'en comprendre la structure.
Switch, c'est un interrupteur.
Reprenons en partie, un de nos problèmes du dernier TP, avec un $info qui peut prendre six noms différents...
Nous n'allons en conserver que 4 (ceux où seule la requête sql changeait, mais pas l'affichage), pour plus de simplicité et voir comment condenser notre code.
Dans ce cas, le switch s'écrirait ainsi :
Nous verrons plus tard pourquoi cette commande switch est quasiment vitale en PHP.
Pour l'instant, contentons-nous d'en comprendre la structure.
Switch, c'est un interrupteur.
Reprenons en partie, un de nos problèmes du dernier TP, avec un $info qui peut prendre six noms différents...
Nous n'allons en conserver que 4 (ceux où seule la requête sql changeait, mais pas l'affichage), pour plus de simplicité et voir comment condenser notre code.
Dans ce cas, le switch s'écrirait ainsi :
Un switch pour des conditions qui s'excluent l'une l'autre |
|
Et voici l'explication :
Dans le cas (case) où la variable $info est égale à 'women' : affecte telle 'formule' à la variable sql, dans le case 'men' affecte telle autre valeur à $sql etc. etc.
On sait que ces conditions s'excluent l'une l'autre grâce à l'instruction break; qui signifie : 'quand tu as finis, sors de ce switch'.
D'où la raison pour laquelle le dernier case 'vieux' (les grabataires de plus de 30 ans voudront bien m'excuser) ne nécessite pas de break, il pourrait en prendre un, mais disons que ça ne sert à rien, on est en fin de switch (accolade finale)...
Bien sûr, après ce switch, il faudrait placer la suite des instructions, suite commune quelle que soit la valeur de $sql...
instruction après le switch, qui a initialisé $sql |
|
Le switch a ceci de très agréable que quand vous développerez des sites ou des applications un peu plus costaudes en PHP, il rendra votre code beaucoup plus lisible :
Vous pourrez caser des lignes et des lignes d'instructions à l'intérieur d'un case, au nom parlant, qui fait que l'on ne sera pas perdu en relisant votre code...
Mais ceci nous amène à la conclusion...
VIII-2. En guise de conclusion
Programmer en PHP, c'est garder à l'esprit constamment les généralités qu'il y avait dans cette introduction :
à savoir ce que peut PHP, et ce qu'il ne peut pas, ou pas bien, en relation avec la façon dont il fonctionne.
Je vais répéter cela de façon très carrée.
Avant de développer quoi que ce soit d'un peu ambitieux en PHP, comme un projet même petit, il faut inscrire ceci :
A quelles actions de l'utilisateur je vise quelles réactions dans mon code ?
En sachant que les actions que peut recevoir PHP, c'est essentiellement un submit, qui envoie des informations fournies par l'utilisateur, et c'est au rafraîchissement de la page occasionné par le submit qu'on peut programmer des instructions nouvelles en fonction des informations reçues.
C'est déjà pas mal.
à savoir ce que peut PHP, et ce qu'il ne peut pas, ou pas bien, en relation avec la façon dont il fonctionne.
Je vais répéter cela de façon très carrée.
Avant de développer quoi que ce soit d'un peu ambitieux en PHP, comme un projet même petit, il faut inscrire ceci :
A quelles actions de l'utilisateur je vise quelles réactions dans mon code ?
En sachant que les actions que peut recevoir PHP, c'est essentiellement un submit, qui envoie des informations fournies par l'utilisateur, et c'est au rafraîchissement de la page occasionné par le submit qu'on peut programmer des instructions nouvelles en fonction des informations reçues.
C'est déjà pas mal.
VIII-2-a. PHP, un langage qui ne peut pas tout
Mais cela signifie que le concepteur du projet doit avoir en tête à l'avance toutes les actions de l'utilisateur avec lesquelles il veut interagir.
Tout se passe du côté du serveur, et doit être programmé d'avance.
Il y a d'autres langages qui se passent du côté client, du côté de l'utilisateur et sont susceptibles de réagir au moindre de ses battements de cil. Ce n'est pas le cas de PHP !
Pour parler d'un problème très concret et qui revient toujours en PHP : les contrôles de saisie.
Nous avons vu dans ce tutoriel comment remplir et traiter des formulaires avec PHP.
J'ai fait le choix de ne pas aborder, et pour cause, tout l'aspect contrôle de saisie.
A peine l'ai-je effleuré en vous disant une fois 'N'oubliez pas maxlength="10"' dans les attributs d'une zone de texte qui propose la saisie d'un téléphone.
Et encore n'était-ce pas du PHP, mais du HTML !
Le contrôle de saisie, c'est ce genre de choses.
Limiter et prévenir les erreurs, doublons, coquilles, maladresses, plaisanteries qui sinon se retrouvent directement dans votre base de données et la rendent pratiquement inutilisable à court terme.
Ainsi aurait-on dû également forcer la saisie de nombres pour le code postal à 5 etc...
Autre chose, vous avez sans doute en travaillant ce tuto cliqué parfois plusieurs fois sur un formulaire et vous êtes aperçu ensuite que la même valeur était du coup entrée plusieurs fois, autant de fois que vous avez cliqué.
C'est normal, rien dans votre code n'interdisait la saisie de doublons, qui se retrouvaient donc inéluctablement dans la base de données !
Pour gérer tout ceci, très utile donc, on préfèrera traditionnellement le sous-traiter soit à un langage comme javascript (non, on ne le dira jamais assez, ça n'a rigoureusement rien à voir avec java, qui est un autre langage)...
Javascript est un langage côté client qui réagit très souplement aux événements de l'utilisateur.
Ceci dit, javascript limitera grandement le taux d'erreurs des gens de bonne foi, mais pas des plaisantins qui ont désactivé le javascript sur leur navigateur !
Donc pour plus de sûreté, on combinera un formatage serré dans notre HTML et on programmera des regex (regular expressions) dans notre code PHP.
Je n'entrerai pas dans les arcanes des regex ici, mais sachez juste que c'est un type de code qui permet un formatage très rigoureux que l'on peut personnaliser à souhait et qui, côté serveur, permet de tester les données entrées avant de les insérer dans une base.
Vous y viendrez si vous voulez programmer des contrôles de saisie efficaces en PHP.
Dans tous les cas, l'idée est la suivante, PHP doit recueillir des infos "propres" et homogènes dès qu'on lui fait manipuler des bases de données.
Tout se passe du côté du serveur, et doit être programmé d'avance.
Il y a d'autres langages qui se passent du côté client, du côté de l'utilisateur et sont susceptibles de réagir au moindre de ses battements de cil. Ce n'est pas le cas de PHP !
Pour parler d'un problème très concret et qui revient toujours en PHP : les contrôles de saisie.
Nous avons vu dans ce tutoriel comment remplir et traiter des formulaires avec PHP.
J'ai fait le choix de ne pas aborder, et pour cause, tout l'aspect contrôle de saisie.
A peine l'ai-je effleuré en vous disant une fois 'N'oubliez pas maxlength="10"' dans les attributs d'une zone de texte qui propose la saisie d'un téléphone.
Et encore n'était-ce pas du PHP, mais du HTML !
Le contrôle de saisie, c'est ce genre de choses.
Limiter et prévenir les erreurs, doublons, coquilles, maladresses, plaisanteries qui sinon se retrouvent directement dans votre base de données et la rendent pratiquement inutilisable à court terme.
Ainsi aurait-on dû également forcer la saisie de nombres pour le code postal à 5 etc...
Autre chose, vous avez sans doute en travaillant ce tuto cliqué parfois plusieurs fois sur un formulaire et vous êtes aperçu ensuite que la même valeur était du coup entrée plusieurs fois, autant de fois que vous avez cliqué.
C'est normal, rien dans votre code n'interdisait la saisie de doublons, qui se retrouvaient donc inéluctablement dans la base de données !
Pour gérer tout ceci, très utile donc, on préfèrera traditionnellement le sous-traiter soit à un langage comme javascript (non, on ne le dira jamais assez, ça n'a rigoureusement rien à voir avec java, qui est un autre langage)...
Javascript est un langage côté client qui réagit très souplement aux événements de l'utilisateur.
Ceci dit, javascript limitera grandement le taux d'erreurs des gens de bonne foi, mais pas des plaisantins qui ont désactivé le javascript sur leur navigateur !
Donc pour plus de sûreté, on combinera un formatage serré dans notre HTML et on programmera des regex (regular expressions) dans notre code PHP.
Je n'entrerai pas dans les arcanes des regex ici, mais sachez juste que c'est un type de code qui permet un formatage très rigoureux que l'on peut personnaliser à souhait et qui, côté serveur, permet de tester les données entrées avant de les insérer dans une base.
Vous y viendrez si vous voulez programmer des contrôles de saisie efficaces en PHP.
Dans tous les cas, l'idée est la suivante, PHP doit recueillir des infos "propres" et homogènes dès qu'on lui fait manipuler des bases de données.
VIII-2-b. Conceptualisation d'un projet PHP
Ayez le réflexe de raisonner en bloc, de façon modulaire...
Une méthode de travail rigoureuse
- Recensez toutes les actions que vous solliciterez de la part de l'utilisateur.
- Notez toutes les variables que vous aurez besoin d'initialiser ou d'affecter pour avancer.
- En vue du switch qui organisera la structure générale de votre programme, nommez ces blocs par exemple case 'debut', case 'inscription', case 'confirmation', case'erreur' etc.
- Rangez toutes les instructions dans ces blocs..Vérifier que chaque bloc est fonctionnel avant de passer au suivant...
- Enfin, vérifiez bien le déclencheur qui vous fait entrer dans chaque bloc d'instructions. Il a cliqué sur tel bouton que je lui présente dans tel bloc, il n'a rien cliqué etc...
Ainsi, quand vous avez tout cela clair en tête : vous pouvez vous lancer dans la structure de votre page, qui peut se présenter ainsi, en partant de la condition des écrans les plus avancés et en remontant jusqu'à l'écran d'arrivée...
Le mot clé sera MODULARISER.
une structure type |
|
Ainsi la structure de votre programme, même si le programme est touffu, est claire comme de l'eau de roche.
VIII-3. Quelques réflexes pour progresser en PHP
PHP est un excellent langage pour démarrer la programmation.
Il est assez intuitif et peu contraignant. Il est très gratifiant et vous donne vite des ailes.
Si déjà vous sortez de ce tutoriel avec les réflexes suivants, vous en aurez vite un usage très fluide.
Il est assez intuitif et peu contraignant. Il est très gratifiant et vous donne vite des ailes.
Si déjà vous sortez de ce tutoriel avec les réflexes suivants, vous en aurez vite un usage très fluide.
Une dernière liste de conseils de Mamie Dendrite
- Bien indenter votre code.
- Bien repérer les actions très répétitives et les "ranger" dans des fonctions bien conçues.
- Bien faire des commentaires pédagogiques pour vous même dans votre code de débutant pour toujours savoir qui fait quoi à quel moment.
- Quand vous ne comprenez pas pourquoi un code ne marche pas, ne continuez pas de changer des choses au hasard. Arrêtez-vous. Vérifiez étape par étape que chaque module fonctionne.
- Quand le module fatidique est cerné, le forum est là pour vous désembourber en un quart de tour avec des développeurs chevronnés !
- Entreprenez un vrai projet personnel, comme le développement d'un site qui vous tient à coeur. Rien de tel pour vous lancer dans le grand bain !
Bon vent !
Et allez, quittons-nous sur un TP un peu plus costaud que les précédents, qui ne sera pas le plus bavard pour autant !
VIII-4. TP8
Dans la correction du TP5, nous nous attelions au problème des nombres premiers.
Vous pouvez vous en inspirer, et même copier/coller la correction du TP5 pour résoudre le problème suivant.
Vous rédigerez un programme (affichepremiers.php) qui affiche dès que l'on clique sur un bouton OK la liste des nombres premiers...
Disons au moins jusqu'à 10 000. Il faut bien poser une limite à l'utilisateur.
Après les avoir tous répertoriés (une ligne par nombre), il affiche leur nombre (x nombres premiers entre 0 et 10 000)...
Disons au moins jusqu'à 10 000. Il faut bien poser une limite à l'utilisateur.
Après les avoir tous répertoriés (une ligne par nombre), il affiche leur nombre (x nombres premiers entre 0 et 10 000)...
Bon courage.
PS : rien ne vous empêche ensuite de copier coller tout ça dans un fichier texte et de continuer... 10 000 par 10 000... Quand on pense que de grands mathématiciens y passaient des nuits quand l'informatique n'existait pas !
VIII-5. Correction du TP8
Veuillez cliquer sur le symbole à droite pour découvrir la solution quand vous aurez fini.
Listing des nombres premiers jusqu'à 10 000 |
|
VIII-6. Mes liens favoris pour l'apprentissage du développement web
VIII-6-a. Les tutos et cours Developpez.com
VIII-6-b. D'autres tutos et cours qui m'ont beaucoup appris
Un excellent tutoriel pour découvrir (avec des exercices corrigés) l'algorithmique en grand débutant