IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

PHP : Le tutoriel pour grands débutants pressés

Image non disponible

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 :
Un switch pour des conditions qui s'excluent l'une l'autre

                <?php
                switch($info){
                	case 'women':
                		$sql='SELECT * from abonnes WHERE Civ="Mme" || Civ="Mlle"';
                	break;
                	case 'men':
                		$sql='SELECT * from abonnes WHERE Civ="M."';
                	break;
                	case 'jeunes':
                		$sql='SELECT * from abonnes WHERE Age<30';
                	break;
                	case 'vieux':
                		$sql='SELECT * from abonnes WHERE Age>=30';
                }
                ?>
                

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

                <?php
                $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
                		while ($data = mysql_fetch_array($req)) { 
                			echo $data['Civ'].' <strong>'.$data['Nom'].'</strong> '.$data['Prenom'].'<br/>';
                		}
                		mysql_free_result ($req);
                ?>
                

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.


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.


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
  1. Recensez toutes les actions que vous solliciterez de la part de l'utilisateur.
  2. Notez toutes les variables que vous aurez besoin d'initialiser ou d'affecter pour avancer.
  3. 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.
  4. Rangez toutes les instructions dans ces blocs..Vérifier que chaque bloc est fonctionnel avant de passer au suivant...
  5. 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

                    <?php
                    /****************************Actions de l'utilisateur***********************/
                    //il a cliqué confirmer
                    
                    if(isset($_POST['confirmer'])){
                    	$bloc='insertionbase';
                    }
                    //il a cliqué form2
                    
                    if(isset($_POST['validForm2'])){
                    	$bloc='traiteform2';
                    }
                    //il a cliqué valider formulaire1
                    
                    if(isset($_POST['validForm1'])){
                    	$bloc='traiteform1';
                    }
                    //il arrive juste
                    else{
                    	$bloc='accueil';
                    }
                    /***************************Blocs d'instruction***************************/
                    //Signalons au passage que si l'ordre était primordial dans notre floppée de if
                    //Il n'a plus aucune importance dans nos blocs d'instructions !
                    //Aussi on peut reprendre l'ordre chronologique et intuitif.
                    switch($bloc){
                    	case 'accueil':
                    		//toutes les instructions de présentation du formulaire1
                    	break;
                    	 case 'traiteform1':
                    		//toutes les instructions de traitement du formulaire1
                    		//appel fonction machin
                    		//présentation du form2
                    	break;
                    	case 'traiteform2':
                    		//toutes les instructions de traitement du formulaire2
                    		//appel fonction truc
                    	break;
                    	case 'insertionbase':
                    		//appel fonction connexion
                    		//toutes les modifications de base de données
                    		
                    }
                    ?>
                    

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.


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)...

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

                <html>
                    <head>
                        <title>Tous les nombres premiers</title>
                    </head>
                    <body>
                        <form method="POST" action="affichepremiers.php">
                            Prêt pour la liste des nombres premiers =>10000 ? <input type="submit" name="ok" value="OK"/>
                        </form>
                        
                        <?php
                        if (isset ($_POST['ok'])){
                            $flag=0;
                            $compteur=0;
                            for($nombre=2;$nombre<=10000;$nombre++){
                                for($i=2;$i<$nombre;$i++){
                                	if($nombre%$i==0){
                                			$flag=1;
                                	}
                                }
                                if ($flag==0){
                                	echo $nombre.'<br/>';
                                	$compteur=$compteur+1;
                                }
                                $flag=0;
                            }
                            echo'<h4>Il y a '.$compteur.' nombres premiers de 0 à 10 000.</h4>';
                        }
                        ?>
                    </body>
                </html>
                

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




 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 VAUTHIER Sylvie. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.