2. Structures de contrôles

2.1. Conditionnelles

2.1.1. if

Les structures conditionnelles permettent de n'exécuter un bloc d'instructions que si une condition est réalisée. Le synopsys de la conditionnelle est le suivant :


if ( condition1 ...1 )
{
   Bloc d'instructions 1..2
}
elseif ( condition2 ... ) 3
   {
      Bloc d'instructions 2..4
   }
   else5
   {
   Bloc d'instructions 3..
   }
6
1

Une expression dont l'évaluation donne VRAI ou FAUX

2

Si la condition 1 est vrai alors tout le bloc 2 est exécuté et le programme va en 6

3

Si la condition 1 est FAUX alors la valeur de la condition 3 est testée

4

Si la condition 2 est VRAI alors le bloc 4 est exécuté et le programme va en 6

5

Si la condition 2 est FAUSSE alors le bloc 5 est exécuté et le programme va en 6

6

Fin de la conditionnelle

Voici un exemple d'enchaînement de conditionnelles :

Exemple 6. Emboitements de condition


if ($country == "Germany" )
{
   $version = "German";
   $message = " Sie sehen unseren Katalog auf Deutsch";
}
elseif ($country == "France" )
  {
     $version = "French";
     $message = " Vous verrez notre catalogue en francais";
   }
   elseif ($country == "Italy" )
      {
         $version = "Italian";
         $message = " Vedrete il nostro catalogo in Italiano";
      }
      else
      {
         $version = "English";
         $message = "You will see our catalog in English";
      }
echo "$message<br>";



2.1.2. Le Switch

Nous avons vu dans l'exemple précédent la nécessité de renoter plusieurs fois le même test d'égalité. Dans le cas de multiples tests de la valeur d'une variable, l'écriture peut devenir vite fastidieuse. C'est là qu'intervient le switch :

switch ( $variable )
{
  case value :
     bloc d'instructions
     break;
  case value :
     bloc d'instructions
     break;
  ...
  default:
     bloc d'instructions
     break;
}

Il faut bien noter ici que l'on ne peut tester que la valeur d'une seule variable !

Un exemple d'utilisation du switch :

Exemple 7. Emboitements de condition



switch ( $dept )
{
  case 974 :
     $dept_nom = "Réunion";
     break;
  case 972 : 
     $dept_nom = "Guyane";
  default:
     $dept_nom = "France métropolitaine";
     break;
}



2.2. Répétitives

Les structure répétitives (itératives) permettent de répeter un certain nombre de fois un bloc d'instructions. Nous en étudierons deux, la boucle for et la boucle while

2.2.1. La boucle for

L'instruction for permet de répeter un bloc d'instructions pour un nombre de fois défini. Elle doit définir la variable qui sera modifiée à chaque itération, sa valeur de départ, la valeur de fin de boucle, et l'opération à effectuer à chaque itération :

Exemple 8. Affichage des nombres inférieurs à 100



<? 
for ($cpt=1;$cpt<100;$cpt++)
{
	echo "$cpt<br />";
}
?>


Exemple 9. Calcul de la somme des nombres pairs inférieurs à 100



<? 
$som=0;
$nb=100;
for ($cpt=1;$cpt<$nb+1;$cpt+=2)
{	
	$som=$som+$nb;
}
echo "La somme des $nb premiers entiers est de $som";
?>


2.2.2. La boucle while

L'instruction while permet de répeter un bloc d'instructions tant qu'une condition n'est pas remplie. Elle suit le synopsys suivant :


while (condition1)
{
    bloc d'instructions ... ;
}
1

tant que cette condition est VRAI, on exécute le bloc et on réévalue la condition.

Bien sûr, il est à la charge du programmeur de bien s'assurer que la condition d'exécution de la boucle est modifiée et passe à un moment à FAUX .. sinon, on est dans le cas d'une boucle infinie.

Exemple 10. Affichage des nombres inférieurs à 100



<? 
$cpt=1;
while ($cpt<100)
{
	echo "$cpt<br />";
	$cpt++;
}
?>


Exemple 11. Une boucle infinie !!



<? 
$cpt=1;
while ($cpt<100)
{
	echo "$cpt<br />";
	//$cpt++; on commente la ligne, la valeur de $pt ne changera plus, 
        //la boucle ne sarrêtera pas
}
?>


2.2.3. Sortie d'une boucle

Même si les boucles devraient être écrites pour s'arrêter d'elles mêmes, il peut être intéressant de forcer la sortie, avec l'instruction break. break permet de sortir complètement de la boucle et de reprendre le cours du programme après le bloc d'instructions.



$cpt = 0;
while ( $cpt < 5 )
{
  $cpt++;
  If ( $cpt == 3 )
  {
      echo "break<br>";
      break;
  }
  echo "Fin de boucle: cpt=$cpt<br>";
}
echo "Sortie de boucle<p>";


2.2.4. La boucle foreach

L'instruction foreach permet de faire des itérations sur les éléments d'un tableau. Elle suit le synopsys suivant :


foreach ($array1 as $value2;)
{
    bloc d'instructions ... ;
}
1

Le tableau qui va être parcouru

2

La variable qui contiendra la valeur de chaque cellule à chaque itération

En reprenant l'exemple du tableau créé dans le premier chapitre, on peut ainsi parcourir le tableau formateur en récupérant la valeur de chaque cellule (exemple 1) mais également la clef de la cellule (exemple 2).

Exemple :
 

$prof = array("Assoune", "Obré", "Lausin");
$prenoms_enseignant = array('Assoune' => "Maximin",
     'Obré' => "Philippe",
     'Lausin' => "Benoit");

foreach ($prof as $nom) {
  echo "Professeur :  $nom <br />";
}

foreach ($prenoms_enseignant as $n => $ $p) {
  echo "Professeur :  $n $p <br />";
}

Une utilisation des tableaux à plusieurs dimensions est également fréquente. Dans ce cas, il peut être intéressant d'imbriquer les parcours de chaque dimensions :


//tableau à deux dimesion : catégorie et produits
$prod['vetements']['T-shirt'] = 20.00;
$prod['vetement'][`pantalon'] = 22.50;
$prod['literie']['taie'] = 25.00;
$prod['literie']['drap'] = 50.00;
$prod['fourniture']['lampe'] = 44.00;
$prod['fourniture']['table'] = 75.00;

//récupération du prix d'un T-Shirt
$prix = $prod['vetements']['T-shirt'];

//affichage du prix d'un pantalon
echo $prod['vetement'][`pantalon'];

//affichage d'un texte 
echo "le prix d'une lampe est \${$prod['fourniture']['lampe']}";

echo "<table border=1>";
foreach( $prod as $categorie )
{
   foreach( $categorie as $produit => $prix )
   {
     $ch_prix = sprintf("%01.2f", $prix);
     echo "<tr><td>$produit:</td><td>\$$ch_prix</td></tr>";
   }
}
echo "</table>";

2.2.5. Un petit mot sur les fonctions

Dans l'exemple précédent, nous avons aperçu la fonction sprintf. Nous détaillerons dans le chapitre 4 ce qu'est une fonction, mais nous pouvons déjà dire qu'il s'agit d'un bloc d'instructions qui peut être appelé depuis un programme. S'il est possible au programmeur de concevoir lui même des fonctions, il existe également nombre de fonctions prédéfinies, c'est-à-dire intégrées nativement dans le langage, ou incluses dans des modules.

Nous aurons bien sûr l'occasion de manipuler des fonctions liées à MySQL par exemple, mais le site php.net vous donne déjà une idée du nombre de fonctions disponibles. La documentation les classe par catégories.

2.3. Exercices d'applications

2.3.1. Boucles et conditionnelles

  1. Ecrivez un code Php qui affiche "hello world" en titre de niveau 1, niveau 2 .. niveau 6.

  2. Créer une balise de titre H1 : « Calcul sur les variables ». Affecter respectivement les valeurs 0.206, 150 et 10 aux variables TVA, prix et Nombre. Calculer le prix HT et le prix TTC pour les 10 articles et les afficher. On affichera également le type de chaque variable.

  3. Affectez respectivement les valeurs 150, 50 et 10 aux variables prix_table, prix_armoire et Nombre. Calculez le prix HT total pour les 10 armoires. Comparez le prix de l'armoire et de la table et affichez quel est le prix le plus élevé.

  4. Affectez une valeur à la variable nbre et afficher la somme des entiers de 1 à nbre. Donnez les versions du programme en utilisant l'instruction FOR puis avec l'instruction WHILE.

2.3.2. Tableaux

  1. Initialisez un tableau de 4 cellules, et faites en la somme en utilisant deux méthodes différentes.

  2. Initialisez un tableau de 4 cellules (contenant des nombres en francs) et en faire la conversion en euros. On affichera la somme totale des cellules du tableau en euros ainsi que chaque cellule du tableau.

2.3.3. Interaction avec HTML

  1. Affichez sur une page HTML un tableau présentant le calendrier du mois en cours. Ajoutez du code PHP permettant de mettre en rouge la cellule correpondant au jour d'aujourd'hui.

  2. Reprenez votre CV avec les variables PHP. Quels changement faudrait-il apporter pour afficher plusiseurs CV dans la même page ?

2.3.4. Carré magique

Un tableau de nombres entiers est dit magique quand la somme des cases de chaque colonne est égale à la somme des cases de chaque ligne, et à la somme des cases de chaque diagonale.

Vous devez écrire une page PHP qui affiche le tableau suivant, et qui prouve que le carré est magique. Vérfiez en changeant une des valeurs. Toutes les valeurs du carré doivent être stockées dans une seule variable.

Tableau 4. Carré magique

17241815
23571416
46132022
101219213
11182529


Skins :
Transparence
Simple
Page Accueil
Formation