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

Début de la boite de navigation du travail pratique
Les boucles et opérateurs
Image logo représentative de la faculté
T.P. no 10
Leçon : SPARQL Protocol and RDF Query Language

TP de niveau 15.

Précédent :PHP les formulaires
Suivant :PHP les fonctions
En raison de limitations techniques, la typographie souhaitable du titre, « Travail pratique : Les boucles et opérateurs
SPARQL Protocol and RDF Query Language/Travail pratique/PHP les boucles et opérateurs
 », n'a pu être restituée correctement ci-dessus.


Introduction

modifier

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

modifier

Les tableaux

modifier

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

modifier

Voici la syntaxe d'un tableau tout simple pour construire le tableau des jours de la semaine

<?php
	$semaine=array('lundi','mardi','mercredi','jeudi','vendredi','samedi','dimanche');
?>

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).


Convoquer une valeur

modifier

Syntaxe: $semaine[index]

Exemple : $semaine[2] : sera mercredi. Et ainsi de suite...

Pour vérifier, testez-le :

<?php
echo $semaine[2];
?>

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...

<?php
$dates=array(1789,1830,1848,1851,1871,1914,1918,1936,1939,1945,1958,1968);
echo $dates[3];
?>

Exercice : echo $dates[3] affichera donc ?

Les tableaux associatifs

modifier

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 :

<?php
//On signale que notre variable $adresse sera un tableau
$adresse = array();
//on le remplit
$adresse['nom']='DUPONT';
$adresse['prenom']='Mickaël';
$adresse['numéro'] = 12;
$adresse['rue'] = 'rue des églantines';
$adresse['cp'] = 93000;
$adresse['ville'] = 'SAINT-DENIS';
?>

'numéro' est ici un index du tableau adresse. 12 est la valeur stockée à l'index 'numéro'.

<?php
//Pour convoquer 12
echo $adresse['numéro'];
?>

Les tableaux à plusieurs dimensions

modifier

On va maintenant faire un tableau d'adresses, c’est-à-dire construire un tableau de tableaux :

<?php
//construction de mon tableau $agenda
$agenda=array($adresse0, $adresse1, $adresse2, $adresse3 ,$adresse4);
?>

Voici la méthode que nous connaissons :

<?php
//récupérer l'adresse totale de Mickaël
$adresse4= $agenda[4];
/*
En effet, l'adresse de Mickaël se trouve dans notre agenda à l'index 4 (l'index numérique construit automatiquement)...
*/
//Récupérer enfin le nom de famille de Mickaël
echo $adresse4['nom'];
?>

Mais voici la méthode la plus simple et la plus rapide :

<?php
echo $agenda[4]['nom'];
?>

Les boucles

modifier

La boucle for

modifier

Une boucle for, c’est une boucle qui dit "pour chaque valeur de tant à tant, recommence".

La syntaxe de cette boucle est la suivante :

<?php
//Copiez-moi 50 fois 
//pour i égal zéro, i inférieur à 50, i plus plus
for($i=0;$i<50;$i++){
	echo 'Copie '.$i+1.'<br />';
}
?>

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

modifier

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 ?

<?php
//construction du tableau semaine
$semaine=array('lundi','mardi','mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche');
//parcours du tableau
foreach($semaine as $jour){
	echo '- '.$jour.'<br />';
}
/*
Pour chaque valeur du tableau $semaine, compose la variable $jour et affiche le jour puis va à la ligne...
*/
?>

On considère le tableau suivant :

<html>
	<head><title>Mon agenda</title></head>
	<body>
		<?php
		$adresse0 = array();
		//on le remplit
		$adresse0 ['nom']='ZERO';
		$adresse0 ['prenom']='Toto';
		$adresse0 ['num'] = 10;
		$adresse0 ['rue'] = 'rue des rosiers';
		$adresse0 ['cp'] = 94000;
		$adresse0 ['ville'] = 'IVRY-SUR-SEINE';
		$adresse1 = array();
		$adresse1 ['nom']='UN';
		$adresse1 ['prenom']='Anne';
		$adresse1 ['num'] = 11;
		$adresse1 ['rue'] = 'rue des moineaux';
		$adresse1 ['cp'] = 57000;
		$adresse1 ['ville'] = 'METZ';
		$adresse2 = array();
		$adresse2 ['nom']='DEUX';
		$adresse2 ['prenom']='Al';
		$adresse2 ['num'] = 2;
		$adresse2 ['rue'] = 'rue des arbres';
		$adresse2 ['cp'] = 88000;
		$adresse2 ['ville'] = 'EPINAL';
		$adresse3 = array();
		//on déclare et remplit l'agenda avec toutes les adresses précédentes :
		$agenda=array($adresse0,$adresse1,$adresse2);
		?>
	</body>
</html>

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
<?php
//pour chaque élément de $agenda, il affecte la variable $adresse
foreach($agenda as $adresse){
	//pour chaque élément de $adresse, il affecte la variable $element
	foreach($adresse as $element){
		//il écrit l' $element sur la même ligne avec un tiret et des espaces
		echo '- '.$element.' ';
	}
	//A chaque nouvelle $adresse, sautes une ligne
	echo'<br />';
}
?>

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

modifier

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 :

<?php
/*pour chaque élément du tableau $_POST,
récupère et affecte la valeur de l'index,
puis récupère et affecte la valeur associée à cet index*/
foreach($_POST as $index=>$valeur){
	echo '- '.$valeur.'<br />';
}
?>

Les opérateurs

modifier

Les opérateurs arithmétiques

modifier

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

modifier

É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

modifier

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 :

<?php
//Notez les parenthèses imbriquées pour chaque sous-condition
if (($age>=15)&& ($age<=25))
?>

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.

<?php
//Notez les parenthèses imbriquées pour chaque sous-condition
if(($truc=='papa')||($truc=='maman')){
	echo 'Mes parents !';
}
?>

Exercices

modifier

Exercice 1

modifier

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 :

<?php
echo'Vos données entrées : '.'<br />';
if(isset($POST['Valider'])){
     for($POST as $index->$valeur){
	echo '- '.$index.' : '.$valeur.'<br />';
     }
}
?>

Débugger ce code sans regarder la correction.


Exercice 2

modifier

On ne veut plus voir 'ok' dans la liste qui s'affiche. Ajouter une condition dans la boucle pour ne plus afficher 'ok'.