Les structures conditionnelles en PHP
Un problème avec une condition simple Etudier le script suivant et indiquer ce qu'il réalise : <?php $a=$_POST["a"]; $b=$_POST["b"]; If ($a==$b) { echo "Les deux nombres sont égaux"; } ?> Ce script suppose l'existence d'un formulaire <html> permettant de saisir la valeur de a et de b.
Exemple avec 2 alternatives $a=$_POST["a"]; $b=$_POST["b"]; If ($a>=$b){ echo "a est supérieur ou égal à b"; } else{ echo "a est inférieur à b"; Exercice : à partir de cet exemple, construire trois alternatives
Autre exemple avec 3 alternatives : Résoudre une équation du second degré Ecrire le script PHP qui permette de résoudre toute équation du type : ax²+bx+c=0
Un script PHP qui résoud une équation du type ax²+bx+c=0 $delta=pow($b,2)-(4*$a*$c); if($delta<0){ echo "L'équation n'a pas de solution"; } else { if($delta==0){ $x=-$b/(2*$a); echo "L'équation a une solution : x=".$x; $x1=(-$b+sqrt($delta))/(2*$a); $x2=(-$b-sqrt($delta))/(2*$a); echo "L'équation a deux solutions :<br />"; echo "x1=".$x1."<br />"; echo "x2=".$x2; }?>
Exercice 1 1/Réalisez un formulaire <html> permettant d'obtenir l'affichage suivant :
Corrigé : <body> <form action="recup.php" method="post"> Entrez votre prénom : <input type="text" name="prenom" size="20" /> <br /> Cochez cette case pour un bonjour plus familier <input type="checkbox" name="familier"> <p /> <input type="submit" value="Envoyer" /> <input type="reset" value="Annuler" /> </form> </body>
2/ Ecrivez ensuite le script php qui permettra d'afficher : "Salut Pierre" si la case est cochée "Bonjour Pierre" si la case n'est pas cochée Astuce : la fonction isset($variable) permet de savoir si $variable contient ou non une valeur.
corrige <body> <? if (isset($_POST["familier"])) { echo "Salut ".$_POST["prenom"]; } else echo "Bonjour ".$_POST["prenom"]; ?> </body>
La structure Selon Cas en PHP Support exemple : Ecrire un script PHP permettant d'afficher : Bonjour Madame Bonjour Mademoiselle Bonjour Monsieur selon la valeur d'une variable $politesse pouvant prendre les valeurs 1,2 ou 3
Le script PHP… $politesse=$_POST["politesse"]; switch($politesse) { case 1 : echo "Bonjour Madame"; break; case 2 : echo "Bonjour Mademoiselle"; case 3 : echo "Bonjour Monsieur"; }
Exercice sur la structure selon 1/ Donner le code <html> de l'affichage suivant :
1/ corrigé <form action="php05.php" method="post"> <p> Entrez votre prénom : <input type="text" name="prenom" size="20" /> <p /> <select name="politesse" size="1"> <option selected value="1"> Mademoiselle</option> <option value="2"> Madame</option> <option value="3"> Monsieur</option> </select> Cochez cette case pour un bonjour plus familier <input type="checkbox" name="familier" /> <input type="submit" value="Envoyer" /> <input type="reset" value="Annuler" /> </form>
2/ Ecrire le script PHP permettant d'afficher par exemple : Bonjour Madame Durand Dans le cas où "Madame" a été sélectionné dans le menu déroulant et que la case "bonjour plus familier" n'a pas été cochée.
corrigé <body> <? $prenom=$_POST["prenom"]; if (isset($_POST["familier"])) { $message = "Salut "; } else $message = "Bonjour "; switch($_POST["politesse"]) case 1 : echo $message."Mademoiselle ".$prenom; break; case 2 : echo $message."Madame ".$prenom; case 3 : echo $message."Monsieur ".$prenom; ?> </body>
3/ Le script PHP serait-il différent si le formulaire avait été le suivant ? (formulaire avec boutons radio au lieu de menu déroulant)
corrigé Le nouveau code du formulaire serait le suivant : <form action="php05.php" method="post"> Entrez votre prénom : <input type="text" name="prenom" size="20" /> <p /> <input type="radio" name="politesse" value="1" checked />Mademoiselle<br /> <input type="radio" name="politesse" value="2" /> Madame<br /> <input type="radio" name="politesse" value="3" /> Monsieur<br /> Cochez cette case pour un bonjour plus familier <input type="checkbox" name="familier" /> <input type="submit" value="Envoyer" /> <input type="reset" value="Annuler" /> </form> On peut constater que le script PHP n'aura pas à être modifié car les boutons radios utilisent également le nom politesse et envoient les mêmes valeurs, soit 1, 2 ou 3.