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

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

Image non disponible


précédentsommairesuivant

III. PHP ETAPE 3

Pour l'instant, on a manipulé des variables que l'on entrait "à la main" soi-même.
Il nous faut maintenant voir comment manipuler véritablement des variables, entrées par l'utilisateur.

III-1. Les formulaires

Vous le savez, un formulaire en HTML, c'est la suite de balises suivante :

un formulaire typique sur la page saisie.php
Sélectionnez
<form name="inscription" method="post" action="saisie.php">
        Entrez votre pseudo : <input type="text" name="pseudo"/> <br/>
        Entrez votre ville : <input type="text" name="ville"/><br/>
        <input type="submit" name="valider" value="OK"/>
    </form>


Ici, ce formulaire présente une zone de saisie pour entrer son pseudo, va à la ligne, une zone de saisie pour entrer sa ville, va à la ligne, et enfin un bouton pour valider sur lequel sera écrit 'OK'...

Le but, vous l'aurez compris, c'est de récupérer, via PHP, les infos entrées par n'importe quel usager.

Voici comment les choses vont se découper :

Les attributs dans la balise form précisent le nom du formulaire, puis précisent que les variables contenues dans ce formulaire seront envoyées par la méthode POST (au moment où l'utilisateur cliquera sur le bouton "submit") à la page saisie.php (disons que c'est notre page de départ, oui, celle où il y a le formulaire)...

Quelles variables y aura-t-il, que comporteront-elles et surtout, quels noms porteront ces variables ?

Il y aura la variable $_POST['pseudo'], qui constitue le texte entré dans la zone pseudo par l'utilisateur avant d'avoir cliqué sur submit...
Et on continue ainsi, selon la formule immuable $_POST['name'] pour chaque input, car les variables sont automatiquent nommées ainsi.
Pareil pour $_POST['ville']...
Enfin $_POST['valider'] sera la variable qui dira, si elle existe bien entendu, qu'il y a eu clic sur la validation, et si elle n'existe pas, qu'il n'y a pas eu clic...
Information très importante, nous y reviendrons souvent...
Les choses sont claires ?

Comment allons-nous donc récupérer maintenant cette affaire, sur le fichier qui se nomme donc saisie.php et comporte ceci ?

saisie.php
Sélectionnez
<html>
    <head><title>Ma page d'accueil</title></head>
    <body>
        <h1>Bienvenue sur le site de toto </h1>
        <h2>Commencez-donc par vous inscrire :</h2>
        <form name="inscription" method="post" action="saisie.php">
            Entrez votre pseudo : <input type="text" name="pseudo"/> <br/>
            Entrez votre ville : <input type="text" name="ville"/><br/>
            <input type="submit" name="valider" value="OK"/>
        </form>
    </body>
</html>


En PHP, il faut toujours commencer par classer vos idées ainsi :
Quelle est la condition pour que mon code s'exécute ?
Autrement dit, quelle action de l'utilisateur va déclencher mon code...

Ah, tout ça sera donc dans une condition, voyons donc immédiatement la syntaxe du si :

III-2. La syntaxe de la condition if

Structure d'une condition if basique
Sélectionnez
if(user a cliqué sur valider){
    récupère la variable pseudo;
    récupère la variable ville;
    écris 'Salut (son pseudo) de (sa ville). Bienvenue sur mon site !';
}


Voilà donc la structure d'une condition...

On entoure la condition entre des parenthèses, on encadre toutes les instructions dans des accolades.
Et encore une fois bien sûr, chaque instruction se termine toujours par un point-virgule.

Oubliez un détail de ce genre, et tout plante... Alors la syntaxe d'un truc aussi fréquent, il vaut mieux la répéter jusqu'à la savoir par coeur...

Tout en restant près de notre formulaire, imaginons que nous compliquons un peu notre condition :

Dans le premier si (il a cliqué), nous aimerions dire qu'en plus, si sa ville est Paris, nous lui proposons de le rencontrer...
Ce sera un 'si' imbriqué.

Même principe, mais cette fois, pensez à indenter votre code dès son élaboration, pour ne pas vous prendre les pieds dans le tapis.
Indenter, c'est décaler d'un cran le code pour raisonner par niveau d'imbrication...

Une condition imbriquée
Sélectionnez
if(user a cliqué sur valider){
    récupère la variable pseudo;
    récupère la variable ville;
    écris 'Salut (son pseudo) de (sa ville). Bienvenue sur mon site !';
    if(sa ville)=='Paris'{
        écris 'On est plusieurs de Paris sur le site. Si tu veux qu'on se voie, contacte-nous !';
    }
}


Remarquez une chose essentielle :

if($ville=='Paris') comporte deux signes =
C'est indispensable pour une comparaison.
La variable ne reçoit pas 'Paris' (signe = d'affectation), elle est comparée (==) à Paris.

Vous ferez forcément cette erreur au début, d'autant plus difficile à repérer qu'elle ne provoquera pas de message d'erreur :
Le programme comprendra => Si la variable reçoit Paris, et ce sera toujours vrai.
Autrement dit, votre programme ne fera pas ce que vous voulez, mais le langage ne pourra pas vous préciser votre bug...

Donc bien penser à ça en premier quand une condition ne tourne pas comme on veut.
(Ai-je bien mis un double égal dans la comparaison pour la condition ?)

Une dernière chose pour les si, s'il y a un si, il faut parfois un ou plusieurs sinonsi, puis un sinon pour conclure en tout dernier...

Restons toujours dans notre thématique formulaire :
Mettons que j'ai un formulaire qui m'a renvoyé l'âge entré par l'utilisateur :

 
Sélectionnez
<?php 
$age=$_POST['age']; 
?>


La syntaxe donnera ceci :

Conditions successives qui s'excluent l'une l'autre
Sélectionnez
<?php
if($age<5){
    $verdict='Ouh le bébé !';
}
elseif($age<13){
    $verdict='Vous êtes un enfant !';
}
elseif($age<18){
    $verdict='Vous êtes un(e) ado !';
}
else{
    $verdict='Ah ! enfin un(e) adulte !';
}
echo $verdict;
?>


Ici, pas d'imbrication, puisque ce sont des conditions successives et non imbriquées l'une dans l'autre.
La dernière (le else), c'est bien sûr 'sinon', le truc par défaut...

Ici, que signifie-t-il concrètement ?
Que user a 18 ans ou plus, n'importe quel entier > ou = à 18...

Dans tous les cas, il est affecté une valeur à $verdict au moment où il parvient à l'instruction 'affiche moi le verdict'...
L'instruction n'est pas dans une condition, elle s'exécute à tous les coups.
Mais la variable $verdict elle, n'est pas initialisée de la même façon selon que c'est l'une ou l'autre des 4 conditions de ce système de conditions qui l'a initialisée.

En d'autres termes, dès l'instant où le programme tombe sur une condition qui se réalise, il cesse de tester la suite et passe à l'exécution de l' instruction...

III-3. Les formulaires, suite

Revenons maintenant sur le traitement de notre formulaire de départ, avec une toute petite condition bien classique :

 
Sélectionnez
if(user a cliqué sur valider){
    récupère la variable pseudo;
    récupère la variable ville;
    écris 'Salut (son pseudo) de (sa ville). Bienvenue sur mon site !';
}


Comment allons-nous dire en PHP la condition ou les instructions ? De la façon suivante, que je commenterai ensuite :

la syntaxe pour récupérer une variable POST
Sélectionnez
<?php
if(isset($_POST['valider'])){
    $pseudo=$_POST['pseudo'];
    $ville=$_POST['ville'];
    echo 'Salut '. $pseudo.'de '. $ville.'<br/>Bienvenue sur mon site !';
}
?>

Traduction :

s'il existe une variable POST qui a pour nom 'valider' et que donc user a validé,
$pseudo reçoit la variable POST qui a pour nom 'pseudo'
$ville reçoit la variable POST qui a pour nom 'ville'
affiche... bon la fonction echo n'a plus de secret pour vous...

Remarque :

On peut très bien se passer de ranger la variable de type $_POST['name'] dans une variable au nom simplifié de type $name, et la manipuler directement !
Mais si on doit la manipuler sans arrêt, c'est plus agréable (et plus stable) de la renommer...

Autre remarque :

Puisque c'est l'attribut name dans la balise d'un objet type formulaire qui va déterminer le nom de la variable POST, pensez-bien à ne pas y mettre d'accent, ni d'espace...
Le name ne sert pas à l'affichage, le user ne le verra pas ! C'est pour le programmeur, pour vous...

III-4. Les formulaires, fin

On remet tout ça bout à bout dans le code maintenant !

Fichier saisie.php : un formulaire et son traitement
Sélectionnez
<html>
    <head><title>Ma page d'accueil</title></head>
    <body>
        <h1>Bienvenue sur le site de toto </h1>
        <h2>Commencez-donc par vous inscrire :</h2>
        <form name="inscription" method="post" action="saisie.php">
            Entrez votre pseudo : <input type="text" name="pseudo"/> <br/>
            Entrez votre ville : <input type="text" name="ville"/><br/>
            <input type="submit" name="valider" value="OK"/>
        </form>
        <?php
        if(isset($_POST['valider'])){
            $pseudo=$_POST['pseudo'];
            $ville=$_POST['ville'];
            echo 'Salut '. $pseudo.'de '. $ville.'<br/>Bienvenue sur mon site !';
        }
        ?>
    </body>
</html>


Vous expérimentez tout ça en local bien entendu...
Changez des détails, triturez, appropriez-vous la méthode et la syntaxe...

D'autant que le TP3 est un véritable travail de programmation cette fois.
Prenez bien votre temps...

III-5. TP3

Sans copier, ni copier/coller le cours, concevez une page qui s'appelle imc.php, et propose un formulaire sous la forme suivante :

 
Sélectionnez
Entrez votre prénom :
Entrez votre taille (sous la forme 1.70) :
Entrez votre poids (en kilos) :
OK


Ensuite vous traiterez le formulaire en PHP pour que quand la personne clique, elle voit apparaître :

 
Sélectionnez
Bonjour (son prénom)
Votre IMC (indice de masse corporelle) est exactement : (son imc)
Vous avez (une corpulence normale ou bien Vous êtes en surpoids, ou bien Vous êtes obèse etc...)


Pour la petite opération, l'IMC, c'est le poids divisé par la taille divisé par la taille...

En voici la syntaxe :
$poids/($taille*$taille)

(Nous reviendrons plus tard sur les opérateurs)...

Pour les conditions qui déterminent les tranches de l'IMC, consultez wikipedia par exemple, rubrique : interprétation de l'IMC, classification de l'OMS.
N'omettre aucune tranche bien entendu !

http://fr.wikipedia.org/wiki/Indice_de_masse_corporelle

III-6. Correction du TP3

Veuillez cliquer sur le symbole à droite pour découvrir la solution quand vous aurez fini.

imc.php
Cacher/Afficher le codeSélectionnez

précédentsommairesuivant

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.