# SPARQL Protocol and RDF Query Language/Travail pratique/PHP les boucles et opérateurs
## Introduction

Dans ce TP, nous allons acquérir quelques bases de programmation PHP pour traiter des données plus facilement par la suite.

## À savoir avant de commencer
### Les tableaux

Un tableau est :
* un moyen de stocker plusieurs variables, selon un plan qui vous paraît logique.
* comparable à un meuble avec ses tiroirs.
** Dans le tiroir 0 (oui, le tableau commence par le tiroir zéro), vous rangez la variable lundi par exemple,
** dans le tiroir 1, vous rangez la variable mardi, etc.
En informatique, on appelle :
* index ou indice le numéro de tiroir (la position de la variable dans le tableau),
* valeur, la valeur de la variable entreposée.

#### Construire un tableau

Voici la syntaxe d'un tableau tout simple pour construire le tableau des jours de la semaine
Par cette simple ligne, vous venez de construire un tableau.
* $semaine est son nom
* $semaine, via la commande array, sait qu’il est un tableau
* Vous lui avez affecté des valeurs,.
* Et ici, par défaut, l'index commence à 0, donc dimanche aura pour index : 6 (et non 7).
Un tableau est une variable puisqu’il commence par $, mais une variable complexe et organisée.

#### Convoquer une valeur

Syntaxe: $semaine[index]
Exemple : $semaine[2] : sera mercredi. Et ainsi de suite...
Pour vérifier, testez-le :
Nous avons construit un tableau $semaine contenant des variables string (les jours de la semaine) et des indices numériques (0, 1, 2, etc.) pour atteindre ses valeurs.
Mais on peut aussi ranger des valeurs numériques dans un tableau.
Exemple avec ce tableau qui stocke quelques années marquantes de l'histoire de France...
Exercice : echo $dates[3] affichera donc ?
La commande echo renverra : 1851
L'index 3 pointe sur la 4éme valeur dans le tableau, car les index commencent à zéro.
* 0 => 1789
* 1 => 1830
* 2 => 1848
* 3 => 1851
* etc.
Au sein de votre code, il est bon d'ajouter quelques commentaires. Ils sont destinés aux programmeurs, qui remettent le nez dans leurs programmes parfois dix ans plus tard, et qui ne savent plus pourquoi ou comment ils ont conçu leur code.
Il est même de coutume de ne plus rédiger de documentation extérieure au code (car très rapidement obsolète), mais de l'écrire dans le code. Des outils, comme PHPDocumentorpermettent ensuite de générer la documentation PDF, HTML, etc.
Il y a 2 syntaxes pour écrire des commentaires en PHP.
* Petit commentaire sur une seule ligne : // en début de ligne
* Commentaire sur plusieurs lignes : /* au début et */ à la fin.
Exemple :

#### Les tableaux associatifs

Ici, la seule différence par rapport à un tableau simple, c’est que l'index n'est plus numérique, mais est lui-même une variable string.
Par exemple, votre tableau veut stocker une adresse, c'est-à-dire :
* un nom
* un prénom
* un numéro
* une rue
* un code postal
* une ville (etc.)
On peut donc construire un tableau associatif pour stocker une adresse :
'numéro' est ici un index du tableau adresse. 12 est la valeur stockée à l'index 'numéro'.

#### Les tableaux à plusieurs dimensions

On va maintenant faire un tableau d'adresses, c’est-à-dire construire un tableau de tableaux :
Voici la méthode que nous connaissons :
Mais voici la méthode la plus simple et la plus rapide :

### Les boucles
#### La boucle for

Une boucle for, c’est une boucle qui dit "pour chaque valeur de tant à tant, recommence".
La syntaxe de cette boucle est la suivante :
Traduction :
* pour $i de 0 à 49, écrire Copie $i+1 (pour ne pas afficher 0 au début). Cela affichera "Copie 1<br />Copie 2<br />Copie 3<br />Copie 4<br />Copie 5<br />Copie 6<br />...Copie 50<br />."
* $i commence à 0 et non à 1, comme pour les index des tableaux.
* $i<50, car il faut penser à mettre strictement inférieur à la valeur de la limite supérieure de la boucle.
* $i++ signifie $i=$i+1 c'est-à-dire augmente notre compteur de 1 à chaque tour de boucle, c’est l'incrémentation.

#### La boucle foreach

L'idéal pour parcourir les valeurs d'un tableau, c’est une boucle.
La boucle foreach (pour chaque élément) présente l'avantage de parcourir la totalité d'un tableau, même si l’on n'a aucune idée du nombre d'éléments qu’il contient.
Reprenons notre tableau des jours de la semaine, comment le parcourir ?
On considère le tableau suivant :
Ce tableau de tableaux va permettre de faire des boucles imbriquées :
* une boucle pour atteindre chaque adresse
* une boucle pour lire chaque champ dans l'adresse obtenue
Et voici notre agenda qui s'affiche de façon lisible.
Cela va nous être bien utile dès que le nombre des variables dans notre formulaire sera important !

#### La boucle foreach avec la variable $_POST

PHP construit automatiquement un tableau associatif dès que l’on soumet un formulaire.
Ce tableau se nomme $_POST. Chaque élément a pour index le nom d'un élément du formulaire (défini avec l'attribut name) et pour valeur la valeur entrée dans chaque champ par l'utilisateur avant de cliquer sur le bouton 'submit'.
On peut donc parcourir notre tableau de variables POST de cette façon :

### Les opérateurs
#### Les opérateurs arithmétiques

Initialisation :
* $valeur=5 ; //la variable reçoit 5 (simple = : opérateur d'affectation)
Plus et moins :
* $nombre=(4+6)-2; // $nombre vaudra 8
Multiplier ou diviser :
* $nombre=(4*6)/2; //$nombre vaudra 12
Priorités si vous ne mettez pas de parenthèses, multiplier ou diviser est prioritaire .
* (4+6)*2 est différent de 4+6*2 : Sans parenthèses, cela revient à 16;
Modulo ou ce qui reste après division entière :
* $nombre=6%2; //$nombre renverra 0(car 6 est divisible par 2 donc reste 0)
* $nombre=27%4; //$nombre renverra 3 (car 6x4=24 reste 3)

#### Les opérateurs de comparaison

Égalité
* if ($nombre==4)
Contraire
* if($nombre!=4)
Différent de
* Inférieur : if($nombre<4)
* Supérieur : if($nombre>4)
* Inférieur ou égal : if($nombre<=4)
* Supérieur ou égal : if($nombre>=4)

#### Les opérateurs logiques

Les deux principaux sont ET et OU.
ET
* && pour le 'et' logique (AND fonctionne aussi en PHP)
Exemple : si l'âge est compris entre 15 et 25 ans :
OU
* || (2 fois la touche AltGr+6) pour le 'ou' logique (OR fonctionne aussi en PHP)
Exemple : si une variable contient le texte papa ou maman alors affiche mes parents.
Bien utile aussi, la négation, avec le caractère !

## Exercices
### Exercice 1

Afficher la valeur des variables que le client vient d'entrer et la valeur (permanente) du bouton valider qui est 'ok'.
Vous pouvez vous aider de ce code qui contient des erreurs et l'insérer dans le fichier monCV.php de votre projet Eclipse :
Débugger ce code sans regarder la correction.
La fonction print_r est très pratique pour afficher tout ce que contient un tableau de manière récursive. Exemple avec les données d'un formulaire :
Voici à quoi doit ressembler votre fichier monCV.php

### Exercice 2

On ne veut plus voir 'ok' dans la liste qui s'affiche. Ajouter une condition dans la boucle pour ne plus afficher 'ok'.
Voici à quoi doit ressembler votre fichier monCV.php :
| PHP les formulaires | PHP les fonctions |