29 janvier 2007

Mémo php

vu sur : www.kachouri.com

1 - Les conditions (if et switch)

Si vous avez déjà regarder du code, même dans n'importe quel autre language, vous avez sûrement deja remarqué des instructions du genre if ... else if ... else ... then qui reviennent souvent.
On appelle cela les conditions car on pose une conditions après le if, si (= IF) cette condition est vérifiée alors on exécute certaine(s) instruction(s), sinon si (= ELSE IF) une autre condition est vérifiée alors on exécute d'autres instructions, sinon (= ELSE) dans tous les autres cas on exécute une autre instruction encore différente des deux premières.

Voilà ce que ça donne en français, mais ce sera plus parlant sur un exemple PHP avec un if else :

<?php
// dans cet exemple simple, on suppose qu'on a recuperer l'âge de l'utilisateur dans une variable $votreage.
// l'instruction echo sert à écrire un message sur la page.

 if ($votreage < 18)
{
   echo "Vous êtes mineur";
}
else {
   echo "Vous êtes majeur";
}

?>

Maintenant un petit exemple avec un else if en supplément, pour que vous en compreniez l'utilité :

<?php

// si votre age est inferieur a 18 alors vous etes mineur ...
 if ($votreage < 18)
{
   echo "Vous êtes mineur";
}
// sinon si votre age est superieur ou egal a 18 alors vous etes majeur
else if ($votreage >= 18)
{
   echo "Vous êtes majeur";
}
// sinon vous n'avez pas du rentré votre age car la variable ne contient pas de nombre
else {
   echo "Erreur : vous n'avez pas rentré votre âge";
}

?>

 

Attention, regardez bien le manuel php si vous ne connaissez pas les opérateurs, par exemple pour vérifier si une valeur est égale à une autre, il faut doubler le signe (if $votreage == 18)...

Vous pourriez à présent vous demander comment on fait lorsqu'on a trop de conditions à vérifier. Dans ce cas là, le "if" pourrait vite devenir très fastidieux car il y aurait un tas de "else if" qui viendrait à la suite. Dans ce cas là, il existe une autre solution qui est le "switch ... case". Puisqu'un bon exemple parle mieux que des mots, nous allons voir comment il fonctionne sur un exemple dans lequel j'ai une variable $num_mois qui contient le numéro d'un mois compris entre 1 et 12, que je veux transformer en nom du mois compris entre janvier et décembre :

<?php
// on suppose que $num_mois contient le numéro du mois et que $nom_mois va recevoir le nom du mois

switch ($num_mois)
{
   case 1 :
      $nom_mois = "Janvier";
      break;
   case 2 :
      $nom_mois = "Février";
      break;
   case 3 :
      $nom_mois = "Mars";
      break;
   case 4 :
      $nom_mois = "Avril";
      break;
// ici je coupe pour ne pas faire les 12 mois car vous avez compris le principe, et enfin si $num_mois n'est egal a aucune de ces valeurs on met :
   default :
      $nom_mois = "Inconnu";
}

?>

Vous l'aurez donc compris, l'instruction case permet de balayer toutes les valeurs que peut prendre la variable $num_mois, et dans le cas où elle contient une valeur qui nous intéresse on exécute une ou des instructions, et on termine par un "break;" qui a pour effet de sortir du "switch" car il est inutile de continuer à vérifier les valeurs suivantes. L'instruction "default" permet pour sa part de mettre une valeur par défaut si $num_mois n'est égal à aucune valeur vérifiée au dessus.
A noter que ce dernier exemple aurait pu être réaliser en beaucoup moins de lignes avec des tableaux (voir cours php numéro 1)

 

2 - Les boucles (for, while, foreach)

Nous allons maintenant voir les boucles en php. Commençons par la boucle "FOR" qui est assez compacte puisqu'elle contient entre parenthèses trois expressions permettant de l'initialiser (ex : i = 0;) de poser une condition à son terme (ex : i < 5 ) et de l'incrémenter ou décrémenter automatiquement (ex : i++). Ce qui va donner quelque chose que cette forme :

<?php
// cet exemple affichera en sortie : 0 - 1 - 2 - 3 - 4 -

 for ($i=0; $i<5; $i++)
{
   echo $i." - ";
}

?>

Maintenant prenons un exemple concret, et supposons que vous vouliez créer une liste de sélection en html, dans laquelle on peut sélectionner son année de naissance dans une page. Le seul petit souci c'est que vous voulez commencer les années à 1900 et terminer à 2000, ce qui parait normal. Pour faire une liste de ce genre en html, ça nécessiterait un code comme cela :

<select name="selannaissance">
<option value="1900">1900</option>
<option value="1901">1901</option>
....
<option value="1999">1999</option>
<option value="2000">2000</option>
</select>

Le problème comme vous le voyez, c'est qu'il faut rentrer chaque année à la main, et cela nous fera une bonne centaine de lignes vu qu'on en 100 à taper. Maintenant voyez comment je peux faire exactement le même résultat en php, et là vous allez comprendre que la boucle "for" peut être très utile :

<?php

echo "<select name=\"selannaissance\">";
 for ($i=1900; $i<2001; $i++)
{
   echo "<option value=\"$i\">$i</option>";
}
echo "</select>";

?>

Et voilà, les 100 lignes ont été réduites à 4 lignes réelles. C'est fortement appréciable pour le temps passé et la taille finale de votre fichier.

 

L'instruction "WHILE" pour sa part permet d'exécuter un bloc de commande tant qu'une condition est vraie. Elle n'est pas très éloignée du "FOR", mais permet de faire d'autres choses quand même. On l'utilise souvent, par exemple, pour balayer les résultats d'une requête sur une base de données mysql. Tant (= while) qu'il y a un résultat, on affiche.
Un exemple de boucle while :

<?php
// on initialise la variable $i à 1
$i = 1;

// tant que $i est inférieur à 11
 while ($i<11)
{
   echo $i; // on affiche la valeur de $i
   $i++; // on incrémente $i (revient à faire "$i = $i + 1;")
}

?>

 

Et enfin l'instruction foreach est utilisée uniquement pour les tableaux. Elle permet de balayer les valeurs d'un tableau et d'exécuter quelque chose en fonction. Exemple sur les mois encore :

<?php

$tab_mois = array(1 => "Janvier", 2 => "Février", 3 => "Mars", 4 => "Avril", 5 => "Mai", 6 => "Juin", 7 => "Juillet", 8 => "Août", 9 => "Septembre", 10 => "Octobre", 11 => "Novembre", 12 => "Décembre");

 foreach ($tab_mois as $num_mois => $nom_mois)
{
   echo "Le numéro de mois " . $num_mois . " réprésente le mois de " . $nom_mois . "<br>" ;
}

?>

Aucun commentaire: