191
PHP- Table des matières 1. Introduction 2. Les données 3. Les instructions de contrôle 4. Les chaînes de caractères 5. Les tableaux 6. Les formulaires 7. Les fonctions 8. Les dates 9. Les fichiers 10. Les cookies 11. Les sessions 12. Les e-mails 1 PHP chap 1 introduction

PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

Embed Size (px)

Citation preview

Page 1: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP- Table des matières

1. Introduction2. Les données3. Les instructions de contrôle4. Les chaînes de caractères5. Les tableaux6. Les formulaires7. Les fonctions8. Les dates9. Les fichiers10. Les cookies11. Les sessions12. Les e-mails

1PHP chap 1 introduction

Page 2: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP- INTRODUCTION

1. Qu’est-ce que PHP ?2. Structure d’un fichier HTML3. Rôle de PHP4. Cycle de vie d’une page PHP5. Inclusion de fichiers externes6. Ajout de commentaires7. Séparateur d’instructions – bloc d’instructions8. Minuscules-majuscules

2PHP chap 1 introduction

Page 3: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP- INTRODUCTION

1. Qu’est-ce que PHP ?PHP est :

- un langage de programmation.- destiné à être interprété sur un serveur WEB- offre la possibilité de développer des sites WEB dynamiques

Ce langage permet d’insérer des instructions de programmation puissantes dans des pages de type HTML.

Une page dynamique PHP est un document HTML envoyé par le serveur vers le poste client.

Exemple : nous allons créer un fichier « texte » appelé template contenant des tags HTML classiques et de la programmation PHP. Les tags de début et de fin du « mode php » (<?php et ?>) sont interprétés par le serveur avant que le document soit envoyé au client qui est à l’origine de la requête.

 

3PHP chap 1 introduction

Page 4: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP- INTRODUCTION

2. Structure d’un fichier HTML :<html><head><title> premier programme PHP</title> </head><body><?php echo  "<h1> hello world </h1>" ; echo "<h2> bienvenue sur le site de l’isat </h2>" ;?>  </body></html> 

4PHP chap 1 introduction

Page 5: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP- INTRODUCTION

3. Rôle de PHPLe langage PHP possède les mêmes fonctionnalités que les autres

langages (C, C++, Perl,…) :

- collecte et analyse de données- génération dynamique de pages Web- envoi et réception de cookies- gestion de sessions…

Rôles de PHP :

client

Serveur Web

PHP DB

5PHP chap 1 introduction

Page 6: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP- INTRODUCTION

4. Cycle de vie d’une page PHP :

- envoi d’une requête HTTP par le navigateur client vers le serveurex : http://www.monserveur.com/codephp.php

- interprétation par le serveur du code PHP contenu dans la page

- envoi par le serveur d’un fichier dont le contenu est purement HTML

6PHP chap 1 introduction

Page 7: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP- INTRODUCTION

5. Inclure des fichiers externesCela permet de modulariser le code, de créer une bibliothèque de fonctions

d’utilisation courante.Les fichiers de code php peuvent avoir l’une des extensions suivantes : .php .inc .inc.php

7PHP chap 1 introduction

Page 8: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP- INTRODUCTION

6. Ajout de commentaires // ceci est un commentaire

/* commentaire sur plusieurs lignes */

# commentaire

7. Séparateur d’instructions – bloc d’instructionsSéparateur ; { bloc }

8. minuscules-majusculesPhp fait la distinction entre les caractères min et maj.

8PHP chap 1 introduction

Page 9: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP- INTRODUCTION

<html><head><title> premier programme PHP</title> </head><body><?php $name="Paul"; $Name="Pierre"; echo  " hello $name,<br/> " ; echo  " où est $Name ? " ;?>  </body></html>

 

9PHP chap 1 introduction

Page 10: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP- VARIABLES – CONSTANTES - TYPES

1. Les variables

2. Les constantes

3. Les types de données

4. Les données numériques

5. Les booléens

6. Les chaînes

PHP chap 2 - types de données 10

Page 11: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP- VARIABLES – CONSTANTES - TYPES

7. Les tableaux

8. Les objets

9. Le type ressource

10. Le type NULL

PHP chap 2 - types de données 11

Page 12: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

1. Les variablesLes noms de variables :

- commencent par $ suivi de lettres min-maj, chiffres, _ - sont sensibles à la casse- ne sont pas déclarées

On peut créer des variables n’importe où. La déclaration des variablesn’est pas obligatoire. L’initialisation des variables n’est pas obligatoire.

<?php$a = 1;$b = $a + 5;$c = "hello ";$c = $b = $a = 1;?>

12

Page 13: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP- VARIABLES – CONSTANTES - TYPES

1. Les variables

- on ne déclare pas le type d’une variable, c’est sa valeur qui détermine son type.

- excepté lorsqu’elle est déclarée dans une fonction, la portée d’une variable est GLOBALE (elle concerne tout le script à partir de sa déclaration)

PHP chap 2 - types de données 13

Page 14: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

1. Les variables

- on ne déclare pas le type d’une variable, c’est sa valeur qui détermine son type.

- excepté lorsqu’elle est déclarée dans une fonction, la portée d’une variable est GLOBALE (elle concerne tout le script à partir de sa déclaration)

14

Page 15: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

1. Les variables exemple

<html><head><title> e2_1.PHP</title> </head><body><?php $name="Paul"; $Name="Pierre"; echo  " hello $name,<br/> " ; echo  " où est $Name ? " ;?>  </body></html>

  15

Page 16: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

1. Les variables exemple<html><head><title> e2_2.PHP</title> </head><body><?php $color1 = "#ff0000"; $color2 = "#00ff00"; $color3 = "#0000ff"; echo "<font color=\"$color1\">red</font><br/>"; echo "<font color=\"$color2\">green</font><br/>"; echo "<font color=\"$color3\">blue</font><br/>";?>  </body></html>

  16

Page 17: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

1. Les variables prédéfinies

les variables prédéfinies contiennent des infos sur le serveur et sur les données qui peuvent transiter entre le poste client et le serveur.

Exemple : les valeurs saisies dans un formulaire (ch 6)

$GLOBALS$_COOKIE

$_ENV$_FILES$_GET

$_POST$_REQUEST$_SERVER$_SESSION

17

Page 18: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

18

Page 19: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

2. Les constantes

Constantespersonnalisées

Constantesprédéfinies

Définies au fur et à mesure des

besoins

// définitiondefine (  "PI ", 3.14159,TRUE)//utilisationecho  "la constante PI vaut " ,PI, "</br>« ; 

Sensible à la casseou non

non précédée de $,donc la séparer avec  ,de ce qui précède dans echo

19

Page 20: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

3. Les types de données

Types de base Types composés Types spéciaux

- Entiers (base 10,8,16) (integer)- Flottants (double ou float)chaînes (string)- booléens (boolean)

- Tableaux (array)- Objets (object)

- Type ressource- Type null

20

Page 21: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

3. Les types de données

- déterminer le type : string gettype ($mavar)

- vérifier le type d’une variable : is_integer ($var) …

Retourne une chaîne contenantle type de la variable

$var = 73;if (is_int ($var)){ $var++; }

21

Page 22: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

3. Les types de données

- convertir le type d’une variable : $result = (type-desire) $var

- contrôler l’état d’une variable :

lors de l’envoi de données d’un formulaire vers le serveur, le script qui reçoit les infos doit pouvoir détecter l’existence d’une réponse dans les champs du formulaire.

$var= "3.52 km" ;$var2=(double)$var;echo  "$var2";

22

Page 23: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

3. Les types de données

- contrôler l’état d’une variable : boolean isset ($var) boolean empty ($var)

- FALSE si $var non initialiséesi valeur Null

- TRUE si valeur quelconque

- TRUE si $var non initialiséesi valeur Null ou 0 ou chaîne "0"

- FALSE si valeur quelconque

23

Page 24: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

4.1 Les entiers en 32bits de – 231 à +231 - 1

base 10 base 8 base 16

4.2 Les flottants précision de 14 chiffres

4.3 Les opérateurs affectation numériques

$int = 1245;$int = -18;

$oct = 01245;echo $oct;

$hex = OxFAC7;Echo $hex;

Valeur décimale affichée

$dbl = 1245.8;$dbl = 1.2458E3;

+= -= *= /= %= .=

+ - * / %++ --

24

Page 25: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

4.4 Les fonctions mathématiques

25

Page 26: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

26

Page 27: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

27

Page 28: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

5.1 Les booléens

affiche 1

5.2 règles d évaluation false true

$a = 80;$b= ($a<95);echo $b

$bool = TRUE;$bool = FALSE;

$a=15;If ($a)…

True si $a existe et a une valeur !=0

- Mot clé FALSE- entier = 0 ou Double = 0.0- String = " 0" - var de type NULL- var non initialisée- tableau vide- expr logique fausse

- toutes les autres possibilitésy compris - entier = -1 - chaine " false " - var de type ressource

28

Page 29: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

5.3 Les opérateurs de comparaison logiques

== != ou < > < <= > >==== !==

OR ||XORAND &&!Teste l’identité

- des valeurs- des types

- équivalents-pas même priorité

29

Page 30: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

6.1 Les chaînes

2 types de délimiteurs : apostrophes simples ‘ apostrophes doubles «

 

6.2 La concaténation symbole .

echo " <a href =\ " p2.html\ " >page suivante</a> ";

- Variables remplacées par leur valeur- car \ permet de protéger un car spécial (échappement)

\’ affiche ‘\ " affiche " \ $ affiche $\\ affiche \\ n saut de ligne\r retour chariot\t tabulation horizontale

- Variables non substituées- car \ sans effet

Les " de l’attribut HTML href sont protégés par \ 

30

Page 31: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

<?php

  # Assignation d'une chaîne de caractères   $phrase = "Hello World";   echo "$phrase<br>";   # Ajout d'une nouvelle chaîne de caractères   $phrase = $phrase . " this is a PHP test\n";   echo "$phrase<br>";

# L'expression suivante donnera : <p>Number: 9</p> $num = 9; $str = "<p>Number: $num</p>";   echo "$str<br>";

?> 

31

Page 32: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

<?php

  # L'expression suivante donnera : <p>Number: $num</p> $num = 9; $str = '<p>Number: $num</p>'; echo "$str<p>";

# Récupération du premier caractère d'une chaîne$str = 'This is a test.'; $first = $str[0]; echo "$first<p>";

# Récupération du dernier caractère d'une chaîne $str = 'This is still a test.';$last = $str[strlen($str)-1];echo "$last<p>";

?> 

32

Page 33: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

7.1 Les tableaux

- PHP supporte les tableaux scalaires associatifs

-Tableaux scalaires :Quand les éléments d'un tableau peuvent être sélectionnés via des indices $members[2].

- Tableaux associatifs : Quand les éléments d'un tableau peuvent être sélectionnés via des clés (représentées par des valeurs quelconques) $users["admin"].

-On peut définir des tableaux à une ou plusieurs dimensions

- ici tableaux à 1 dim (suite cfr chap 5)

  33

Page 34: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

7.2 Les tableaux scalaires

$tab[0] = 20; $tab[1] = 12; $tab[10] = 28; $tab[ ] = 15; echo "nombre d’éléments :" , count ($tab); echo " la deuxième valeur est : $tab[1] <br/> ";

7.3 Les tableaux associatifs (e2_3.php)

$utilis [" prenom "] = "stephane";$utilis [" nom "] = "Dumont"  ; $utilis [" privilege "] = "admin" ; echo " le nom est : {$utilis[" nom "] } <br/> ";echo " le nom est " , $utilis [" nom "], "<br/> ";  

$utilis

Stéphane Dumont admin

34

Page 35: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

 

$tab["php"] = "php.net";$tab["mysql"] = "mysql.com";$tab["xhtml"] = "w3.org";echo "<h2> mes liens préférés </h2>";echo "<ul> <li><a href=\"http://www.{$tab["php"]}\" title=\" le site du php.net\">PHP</a> </li>";echo "<li> <a href=\"http://www.{$tab["mysql"]}\" title=\" le site du mysql.com\">MySql</a> </li>";echo "<li> <a href=\"http://www.{$tab["xhtml"]}\" title=\" le site du W3C\">XHTML</a> </li> </ul>";

Exemple d’utilisation de tableaux (e2_4.php)

35

Page 36: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 2 - types de données

PHP- VARIABLES – CONSTANTES - TYPES

8 Les objets (cfr chap 9)

9Le type ressource (cfr chap 15) utilisé pour les connexions aux bases de données

10Le type NULLattribué à une variable qui n’a pas de contenu

qui a été initialisée avec NULL

dès qu’une valeur est donnée à la variable, elle prend le type correspondant.

Règles : 1) une var contenant une chaîne vide ou la valeur "0" a le type string.

2) une var contenant la valeur 0 a le type integer.

36

Page 37: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 3 - instructions de contrôle 37

PHP- INSTRUCTIONS DE CONTROLE

1. Les instructions conditionnelles1.1 if1.2 if else1.3 opérateur ?1.4 switch

2. Les instructions de boucle2.1 for2.2 while2.3 do while2.4 foreach

3. La gestion des erreurs3.1 suppression des messages d’erreur

Page 38: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 3 - instructions de contrôle

38

PHP- VARIABLES – CONSTANTES - TYPES

1.1 if

if (condition) instruction; if (condition){

// bloc}

1.2 if else

if (condition){

// bloc}

else {

// bloc}

Page 39: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 3 - instructions de contrôle

39

PHP- VARIABLES – CONSTANTES - TYPES

<?php // e3_1.php

$prix = 35; if ($prix > 100) { echo " pour un achat de $prix &euro , la remise est de

<b>15%</b><br/>"; $pnet = $prix * 0.85; echo " le prix net est de $pnet"; }elseif ($prix > 50) { echo " pour un achat de $prix &euro , la remise est de

<b>1O%</b><br/>"; $pnet = $prix * 0.90; echo " le prix net est de $pnet"; }

Page 40: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 3 - instructions de contrôle

40

PHP- VARIABLES – CONSTANTES - TYPES

else { echo " pour un achat de $prix &euro , la remise est de

<b>O5%</b><br/>"; $pnet = $prix * 0.95; echo " le prix net est de $pnet"; }?> 

1.3 opérateur ?

<?php //e3_2.php

$ch=" bonjour "; $sexe="M"; $ch .= ($sexe=="F") ? "Madame" : "Monsieur"; echo "<h2>$ch</h2> <br/>";?>

Page 41: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 3 - instructions de contrôle

41

PHP- VARIABLES – CONSTANTES - TYPES

1.4 switch

<?php $dept=75; switch ($dept) { case 75: echo "<h2>Paris</h2> <br/>"; break; case 83: echo "<h2>Var</h2> <br/>"; break; default : echo "departement inconnu"; }?>

Page 42: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 3 - instructions de contrôle

42

PHP- VARIABLES – CONSTANTES - TYPES

2.1 La boucle for

<?php //e3_4.php

for ($i=1;$i<7;$i++) { echo "<h$i>titre de niveau $i</h$i> "; }?>

<?php //e3_5.php

for ($i=1,$j=9;$i<10,$j>0;$i++,$j--) { echo "<span style =\" border-style:double;border-width:3;\"> $i + $j =

10</span> "; }?>

Page 43: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 3 - instructions de contrôle

43

PHP- VARIABLES – CONSTANTES - TYPES

2.2 La boucle while

<?php //e3_6.php

$n=1; while ($n%7!=0) { $n = rand (1,100); echo $n,"&nbsp; "; }?>

Page 44: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 3 - instructions de contrôle

44

PHP- VARIABLES – CONSTANTES - TYPES

2.3 La boucle do while

<?php //e3-7.php

do { $n = rand (1,100); echo $n,"&nbsp; "; } while ($n%7!=0);?>

Page 45: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 3 - instructions de contrôle

45

PHP- VARIABLES – CONSTANTES - TYPES

2.4 La boucle foreachUtilisée pour parcourir l’ensemble des éléments d’un tableau.

Pour lire les valeurs :

foreach ($tableau as $valeur) {

//bloc utilisant l’élément $valeur }

Pour lire les valeurs et les indices :

foreach ($tableau as $indice=>$valeur) {

//bloc utilisant l’élément courant }

- $valeur contient successivement les valeurs du tableau

- $valeur contient successivement les valeurs du tableau-- $indice contient successivement l’indice

Page 46: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 3 - instructions de contrôle

46

PHP- VARIABLES – CONSTANTES - TYPES

<?php //e3_8.php for ($i=0;$i<7;$i++) { $tab [$i] = pow (2,$i); } foreach ($tab as $ind => $val) { echo "2 exposant $ind vaut $val <br/>"; }?>

Rem : 1)$tab [$i][0] permet de récupérer la première lettre de la chaîne de caractères contenue dans tab[$i]. 2)Count($tab) retourne le nombre d’éléments contenus dans $tab

Page 47: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 3 - instructions de contrôle

47

PHP- VARIABLES – CONSTANTES - TYPES

3 La gestion des erreurs

Un bon script ne doit pas générer d’erreurs.

Les actions de l’utilisateur peuvent générer des erreurs :- Saisies erronées provoquant l’arrêt du script (ex : division par 0)- Tentative d’accès à une ressource inexistante

La gestion des erreurs a pour buts :- Éviter l’affichage des messages bruts tels que PHP les envoie au navigateur- Signaler « proprement » les problèmes au visiteur (vu en 2ème)

Page 48: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 3 - instructions de contrôle

48

PHP- VARIABLES – CONSTANTES - TYPES

3.1 La suppression des messages d’erreur

<?php //e3_9.php $a = 10; $b = 0; echo $a/$b;

fopen(" inconnu.txt", "r");?>

Pour éviter les messages :

1) Ajouter @ devant l’appel d’une fonction .

@fopen (" inconnu.txt ", " r ");

Warning : division par zéro in c:\wamp\e3_9.php on line 14Warning: (fopen inconnu.txt) [function open] : failed to open to stream : nosuch file or directory….

Page 49: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 3 - instructions de contrôle

49

PHP- VARIABLES – CONSTANTES - TYPES

3.1 La suppression des messages d’erreur

Pour éviter les messages :

2) Utiliser la fonction error_reporting ( ) qui permet de n’afficher que les erreurs d’un certain niveau.

error_reporting (E_WARNING | E_PARSE)

Page 50: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

50

PHP – CHAINES CARACTERES

1. Affichage des chaînes

2. Affichage formaté

3. Longueur d’une chaîne et code des caractères

4. Mise en forme d’une chaîne

4.1 modification de la casse 4.2 gestion des espaces 4.3 entités HTML et caractères spéciaux

Page 51: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

51

PHP – CHAINES CARACTERES

5. Recherche de sous-chaînes

5.1 une chaîne vue comme un tableau5.2 les fonctions strstr ( ) et stristr ( )5.3 la fonction strrchr ( ) 5.4 les fonctions substr ( ), substr_count ( ), str_replace () 5.5 les fonctions strpos ( ), stripos ( ), strrpos( ), strripos( )5.6 capture de sous-chaînes dans des variables

6. Comparaison de chaînes

7. Transformation de chaînes en tableaux

Page 52: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

52

PHP – CHAINES CARACTERES

1. affichage des chaînes

Dans une page WEB, l’essentiel du contenu est constitué de chaînes de caractères. - Quand le contenu de la page est créé dynamiquement à partir

d’un fichier ou d’une DB, ce sont surtout des chaînes de caractères qui sont manipulées.

- toutes les variables issues de l’envoi d’un formulaire sont de type string.

Pour afficher des données : echo

Page 53: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

53

PHP – CHAINES CARACTERES

1. affichage des chaînes

La fonction « echo » est utilisable de plusieurs façons pour afficher plusieurs

chaînes à la suite l’une de l’autre.

<?php // e4_1.php

$nom="isat"; echo "vous êtes à l'école <b>".$nom."</b> aujourd'hui le ".date('d')."<br/>"; echo "vous êtes à l'école <b>", $nom, "</b> aujourd'hui le

",date('d'),"<br/>"; echo "vous êtes à l'école <b> $nom </b> aujourd'hui le date('d')<br/>";?>

Concaténation

avec .

Séparation des

expressions par ,Les fonctions ne peuvent être

incluses dans une chaîne unique

Page 54: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

54

PHP – CHAINES CARACTERES

2. Affichage formatéLes fonctions « printf » et « sprintf » permettent d’obtenir des résultatsuniformes :- Aligner des chaînes sur plusieurs lignes- Superposition correcte de chiffres en colonnes pour des montants

void printf (string " format ", string $ch1, string $ch2, …,$chn);

string sprintf (string " format ", string $ch1, string $ch2, …,$chn);

Affiche directement le contenu des chaînes $ch1,$ch2,…selon le format spécifié dans la chaîne   " format "

Retourne une chaîne unique composée des chaînes $ch1,$ch2,…selon le format spécifié dans la chaîne   " format "

Page 55: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

55

PHP – CHAINES CARACTERES

2. Affichage formaté

void vprintf (string " format ", array $tab);

string vsprintf (string " format ", array $tab);

string str_repeat (string $ch, int N);

rôle équivalent à printf et sprintf mais les chaînes sont passées en argument dans un tableau

Crée une chaîne contenant N fois la chaîne $ch

Page 56: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

56

PHP – CHAINES CARACTERES

Définition de la chaîne de formatage

Elle est composée de

- un texte ordinaire explicatif- directives d’affichage (= caractères spéciaux qui indiquent la manière dont les chaînes passées en paramètres doivent être intégrées dans la chaîne)

% R - N1 . N2 L

caractère remplissage (0 espace ‘autre) pr compléter la chaîne si long fixe

caractère – pour aligner à droite, par défaut alignement à gauche

Nombre de caractères de la chaîne

Nombre de décimales à afficher pour les décimaux

Lettre indiquant le type de la valeur à afficher OBLIGATOIRE

Page 57: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

57

PHP – CHAINES CARACTERES

Caractères de formatage du type de données

Page 58: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

58

PHP – CHAINES CARACTERES

Caractères de formatage du type de données

Page 59: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

59

PHP – CHAINES CARACTERES

<?php //e4_2.php

echo "<h3> votre facture</h3>"; echo sprintf("<b>%'_25s%'_25s<br/> </b>","prix HT","prix TTC"); $ht[0] = 30; $ht[1] = 100; $total=0; for ($i=0;$i<2;$i++) { echo sprintf ("article %d %'_17.2f %'_24.2f<br/>",$i+1,$ht[$i],$ht[$i]*1.25); $total += $ht[$i]; } echo str_repeat ("*",50),"<br/>"; echo sprintf ("TOTAL %'_17.2f%'_24.2f<br/>",$total,$total*1.25); ?>

Page 60: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

60

PHP – CHAINES CARACTERES

3. Longueur d’une chaîne et code des caractères

int strlen (string $ch)

int ord (string $car)

string chr (int $code)

Détermine le nombre de caractères d’une chaîne

Retrouve le code UNICODE d’un caractère

Obtient un caractère à partir de son code UNICODE

Page 61: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

61

PHP – CHAINES CARACTERES

<?php //e4_3.php

//contrôle de login (max 8 car) $login="admin"; if (strlen($login) > 8) echo "login erroné"; else echo "votre login est : $login <br/>"; //génération d'un mot de passe $motpasse = ""; for ($i=1;$i < 6; $i++) { $nb=rand(65,90); $motpasse .= chr($nb); } echo "votre mot de passe est ", $motpasse;?>

Page 62: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

62

PHP – CHAINES CARACTERES

4. Mise en forme d’une chaîne 4.1 modification de la casse

string strtolower (string $ch)

string strtoupper (string $ch)

string ucwords (string $ch)

string ucfirst (string $ch)

Retourne la chaîne en minuscules

Retourne la chaîne en majuscules

Retourne la chaîne avec les initiales des mots qui la composent en majuscules

Retourne la chaîne avec uniquement la première lettre en majuscules

Page 63: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

63

PHP – CHAINES CARACTERES

4. Mise en forme d’une chaîne 4.2 gestion des espaces

string ltrim (string $ch [, string liste])

string rtrim (string $ch [, string liste])

string trim (string $ch [, string liste])

Supprime les espaces en début de chaîne

Supprime les espaces en fin de chaîne

Supprime les espaces en début et en fin de chaîne

Page 64: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

64

PHP – CHAINES CARACTERES

4. Mise en forme d’une chaîne 4.2 gestion des espaces

string wordwrap (string $ch [, int N [, string car [, boolean coupe ] ] ] )

<?php //e4.4php

$ch="cette chaîne anticonstitutionnelle est vraiment beaucoup trop longue pour être affichéee en une ligne"; echo wordwrap ($ch, 10, "<br/>", 1);?>

Affiche un texte long avec une largeur maximale déterminée

N définit la largeurcar contient le caractère à insérer tous les N caractères

coupe (= TRUE) permet d’effectuer une césure des mots dont la longueur dépasse N

Page 65: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

65

PHP – CHAINES CARACTERES

4. Mise en forme d’une chaîne 4.3 entités HTML et caractères spéciaux

Définitions :1. le code Unicode est un système de codage des caractères sur 16 bits mis

au point en 1991. Le système Unicode permet de représenter n'importe quel caractère par un code sur 16 bits, indépendamment de tout système d'exploitation ou langage de programmation. Il regroupe ainsi la quasi-totalité des alphabets existants (arabe, arménien, cyrillique, grec, hébreu, latin, ...) et est compatible avec le code ASCII.

2. Entité HTML : Les entités sont des mots mnémotechniques qui s'emploient entre un & initial et un point-virgule final.

&agrave; ou &#224; représente à &ocirc; représente ô

Entité HTML

Code unicode

Car affiché

Page 66: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

66

PHP – CHAINES CARACTERES

4. Mise en forme d’une chaîne 4.3 entités HTML et caractères spéciaux

Utilité des entités :- Le code source HTML qui sert à produire la page que vous êtes en train de lire

contient, entre autres, le texte proposé à la lecture, en clair ou presque.Or, de nombreuses langues contiennent des signes qui n'existent pas dans la plupart des autres.

Par exemple le français a des caractères accentués "é", "è", "à", "  î  " , "ç", signes qu'on ne retrouve pas du tout en anglais. Ces caractères, dans le code source HTML, doivent être remplacés par les entités HTML afin que les navigateurs paramétrés pour d'autres langues que le français les affichent correctement.

- Certains caractères ont des significations spéciales en HTML, et doivent être remplacés par des entités HTML pour être affichés. (&, ", ’,<,>)

Page 67: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

67

PHP – CHAINES CARACTERES

4. Mise en forme d’une chaîne 4.3 entités HTML et caractères spéciaux

string addslashes (string $ch )

Utile avant d’enregistrer des chaînes dans une base de données

string stripslashes (string $ch )

Rem : la fonction addslashes () est inutile pour les données en provenance d’un formulaire si la directive magic_quotes_runtime est active dans le php.ini

Ajoute le caractère \ devant les caractères spéciaux ‘ "  \ NULL 

enlève les caractères \

Page 68: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

68

PHP – CHAINES CARACTERES

4. Mise en forme d’une chaîne 4.3 entités HTML et caractères spéciaux

Certains caractères ont des significations spéciales en HTML, et doivent être remplacés par des entités HTML pour être affichés. 2 fonctions sont pratiques pour éviter que des données fournies par les utilisateurs contiennent des balises HTML : htmlspecialchars () et htmlentities ()

string htmlspecialchars (string $ch [, string charset]]))

"&" devient "&amp;"""  devient "&quot;" lorsque ENT_NOQUOTES n'est pas utilisée."'" (guillemet simple) devient "&#039;" uniquement lorsque ENT_QUOTES est

utilisée.

"<" (inférieur à) devient "&lt;" ">" (supérieur à) devient "&gt;"

Désigne l’alphabet utilisé, par défaut ISO-8859-1 (Europe occidentale) 

Chaîne à convertir

Page 69: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

69

PHP – CHAINES CARACTERES

4. Mise en forme d’une chaîne 4.3 entités HTML et caractères spéciaux

Très pratique par exemple si vous faites un mini-chat et que vous voulez empêcher vos visiteurs d'utiliser du HTML !

<?php //e4_5.php

$variable_html = '<em>Ceci est une variable qui contient du HTML</em>'; $variable_sans_html = htmlspecialchars($variable_html);

echo 'Avant : ' . $variable_html . '<br />Après : ' . $variable_sans_html; ?>

affichage

Avant : Ceci est une variable qui contient du HTMLAprès : <em>Ceci est une variable qui contient du HTML</em>

Page 70: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

70

PHP – CHAINES CARACTERES

4. Mise en forme d’une chaîne 4.3 entités HTML et caractères spéciaux

Si on veut remplacer tous les caractères spéciaux en HTML (code unicode > 128) par des entités HTML

string htmlentities (string $ch [, string charset])

<?php //e4_6.php

$titre = 'Découvrir PHP , et  "apprendre à programmer"'; echo "<form method = \"post\" action = \"insert.php\">"; echo "Titre : "; echo "<input type = \"text\" name =\"titre\" size = \"60\" value

= \"".htmlentities ($titre)."\">"; echo "</form>";?>

Désigne l’alphabet utilisé, par défaut ISO-8859-1 (Europe occidentale) 

Chaîne à convertir

Page 71: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

71

PHP – CHAINES CARACTERES

5. Recherche de sous-chaînes 5.1 une chaîne vue comme tableau

Une chaîne peut être considérée comme un tableau de caractères (indices de 0 à N) .

on peut récupérer le caractère d’indice cste : $ch [cste]

ou encore si $ind contient un entier : $ch[$ind]

<?php //e4_7.php

$ch = "bonjour Worldtrade"; echo "le 9ème caractère est : $ch[8] ";?>

Page 72: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

72

PHP – CHAINES CARACTERES

5. Recherche de sous-chaînes5.2 les fonctions strstr ( ) et stristr ( )

Elles permettent d’extraire une sous-chaîne d’une chaîne donnée et renvoient tous les caractères allant de la première occurrence de $ch2 jusque la fin de $ch1. (false sinon)

string strstr (string $ch1, string $ch2)

string stristr (string $ch1, string $ch2)

<?php //e4_8.php

$ch= " Perette et le pot au lait "; $ssch = strstr($ch, " pot "); echo $ssch;

?>

Sensible à la casse

insensible à la casse

Page 73: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

73

PHP – CHAINES CARACTERES

5. Recherche de sous-chaînes5.3 la fonction strrchr ( )

Elle permet d’extraire une sous-chaîne d’une chaîne donnée et renvoie tous les caractères allant de la dernière occurrence de $ch2 jusque la fin de $ch1.

string strrchr (string $ch1, string $ch2)

<?php //e4_9.php

$ch= "Perette et le pot au lait, c’est pas de pot !"; $ssch = strrchr($ch, "pot"); echo $ssch;

?>

sensible à la casse

Page 74: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

74

PHP – CHAINES CARACTERES

5. Recherche de sous-chaînes5.4 les fonctions substr ( ), substr_count ( ), str_replace ()

Elles permettent d’extraire des sous-chaînes en fonction des indices de caractères dans la chaîne analysée (le premier étant l’indice 0)

string substr (string $ch, integer ind [, integer N])

<?php //e4_10.php

$url = "http://www.linux.org/"; if (substr ($url, 0,7) != "http://") echo "l ’adresse URL n’est pas complète"; else

echo "enregistrement de l'adresse : $url";

?>

Retourne la chaîne contenant N caractères de $ch extraits à partir de l’indice ind inclus . (Si N est omis, la sous-chaîne extraite va jusque la fin de $ch.

Page 75: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

75

PHP – CHAINES CARACTERES

5. Recherche de sous-chaînes5.4 les fonctions substr ( ), substr_count ( ), str_replace ()

Elles permettent d’extraire des sous-chaînes en fonction des indices de caractères dans la chaîne analysée (le premier étant l’indice 0)

int substr_count (string $ch, string $ssch)

<?php //e4_11.php

$ch= "Perette et le pot au lait, c’est pas de pot !"; $ch2 = "pot"; $nb = substr_count($ch, $ch2); echo "le mot \"$ch2\" est présent $nb fois dans \"$ch\"";?>

Retourne le nombre d’occurrences d’une sous-chaîne $ssch dans une chaîne $ch. (sensible à la casse)

Page 76: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

76

PHP – CHAINES CARACTERES

5. Recherche de sous-chaînes5.4 les fonctions substr ( ), substr_count ( ), str_replace ()

string str_replace (string $ch1, string $ch2, string $ch [, string $var ] )

<?php //e4_12.php

$text = "HTML est un langage de description de contenu"; $newtext = str_replace ("HTML", "XML", $text); echo $newtext;?>

Retourne la chaîne $ch dans laquelle toutes les occurrences de $ch1 sont remplacées par $ch2. $var contient le nombre de remplacements à effectuer

Page 77: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

77

PHP – CHAINES CARACTERES

5. Recherche de sous-chaînes5.5 les fonctions strpos ( ), stripos ( ), strrpos( ), strripos( )

Rem : elles ont une syntaxe identique

int strpos (string $ch, string $ssch, [, int N ] )

Retourne la postion du premier caractère de la première occurrence d’une sous-chaîne $ssch ou FALSE

Retourne la postion du premier caractère de la dernière occurrence d’une sous-chaîne $ssch ou FALSE

Identique à strpos ( ) insensible à la casse

Identique à strrpos ( ) insensible à la casse

N désigne la position à partir de laquelle la recherche s ’effectue dans $ch

Page 78: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

78

PHP – CHAINES CARACTERES

5. Recherche de sous-chaînes5.5 les fonctions strpos ( ), stripos ( ), strrpos( ), strripos( )

<?php //e4_13.php

$text = "HTML est un langage. XML est différent de HTML. "; $n = strpos ($text, "HTML"); if ($n === FALSE) echo "pas d'occurence"; else echo $n;?>

Opérateur d’identité

Page 79: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

79

PHP – CHAINES CARACTERES

5. Recherche de sous-chaînes5.6 capture de sous-chaînes dans des variables

La fonction sscanf ( ) permet de récupérer chacun des éléments d’une chaîne dans des variables séparées.

<?php //e4_14.php

$personne = "1685-1750 Jean-Sébastien Bach"; $format = "%d-%d %s %s"; $nb = sscanf ($personne, $format, $dtnai, $dtmort, $prenom, $nom); echo "$prenom $nom est né en $dtnai et mort en $dtmort <br/>"; echo "nous avons $nb infos";

?>

Page 80: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

80

PHP – CHAINES CARACTERES

6. Comparaison de chaînes6.1 utilisation des opérateurs usuels de comparaison

== === < > <= >=

Exemples :<?php //e4_15.php

$nb = 59;$ch = "59 rue noire";if ($ch==$nb) echo  "TRUE  <br/>« ;if ($ch===$nb) echo  "TRUE  <br/>";

mêmes caractères pour que l’égalité soit vérifiée

même valeur et même type

Selon code ASCII

Égalité , seuls les nombres sont pris en compte car une des 2 chaînes est un nombre

Pas d’égalité , car les types sont différents

Page 81: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

81

PHP – CHAINES CARACTERES

6. Comparaison de chaînes6.2 utilisation des fonctions strcmp() , strcasecmp()

elles permettent de comparer 2 chaînes et retournent :- -1 si $ch1 < $ch2 - 0 en cas d’égalité- 1 si $ch1 > $ch2

int strcmp (string $ch1, string $ch2)

int strcasecmp (string $ch1, string $ch2)

Sensible à la casse

insensible à la casse

Page 82: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

82

PHP – CHAINES CARACTERES

6. Comparaison de chaînes6.2 utilisation des fonctions strncmp(), strncasecmp()

elles sont identiques aux précédentes mais en limitant la comparaison aux n premiers caractères

int strncmp (string $ch1, string $ch2, int N)

int strncasecmp (string $ch1, string $ch2, int N)

Sensible à la casse

insensible à la casse

<?php //e4_16.php$ch1 = " Blanc ";$ch2 = " Bleu";$ch3 = " blanc";echo  strcmp($ch1,$ch2) ;echo  strcasecmp($ch1,$ch3) ;echo  strncmp($ch1,$ch2,2) ;

Page 83: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

83

PHP – CHAINES CARACTERES

6. Comparaison de chaînes6.2 utilisation des fonctions strnatcmp(), strnatcasecmp()

elles sont identiques aux précédentes mais en respectant l’ordre naturel

int strnatcmp (string $ch1, string $ch2)

int strnatcasecmp (string $ch1, string $ch2)

Sensible à la casse

insensible à la casse

<?php //e4_17.php$ch4 = " page2 ";$ch5 = " page12";echo  strcmp($ch4,$ch5) ;echo  strnatcmp($ch4,$ch5) ;

Page 84: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

84

PHP – CHAINES CARACTERES

6. Comparaison de chaînes6.2 utilisation de la fonction similar_text ()

elle recherche le nombre de caractères communs à 2 chaînes (plus éventuellement le pourcentage de similarité)

int similar_text (string $ch1, string $ch2 [, $pourcent])

Sensible à la casse

<?php //e4_18.php$ch4 = " MySQL ";$ch5 = " PgSQL";echo  similar_text($ch4,$ch5,$pourc), "caractères communs" ;echo  "similarité :" , $pourc, "%" ;

Page 85: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

85

PHP – CHAINES CARACTERES

7. Transformation de chaînes en tableaux7.1 utilisation de la fonction explode ()

elle extrait chacun des « mots » d’une chaîne et les place dans un tableau

array explode (string sep, string $ch [, int N ])

$ch : chaîne à analysersep : critère de séparation (souvent espace)N : nombre max d ’éléments du tableau (le dernier contient toute la fin de la chaîne)

Page 86: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 4 - chaînes de caractères

86

PHP – CHAINES CARACTERES

7. Transformation de chaînes en tableaux7.2 utilisation de la fonction implode ()

elle retourne une chaîne composée des éléments d’un tableau séparés par un caractère donné

string implode (string sep, string $tab)

<?php //e4_18.php

$ch4 = "nous étudions PHP et MySQL";$result = explode(" ", $ch4);foreach ($result as $valeur){ echo $valeur."<br/>"; } ?>

Page 87: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 87

PHP – LES TABLEAUXPlan

1. Principes

2. Créer des tableaux 2.1 Définir directement les valeurs du tableau 2.2 Utiliser la fonction array() 2.3 La fonction count($tableau) 2.4 Les tableaux multi dimensions

3. Créer des suites

4. Créer un tableau à partir d’une chaîne

5. Comptage du nombre de valeurs d’un tableau

6. Lecture d’un tableau6.1 boucle FOR6.2 boucle WHILE6.3 La fonction EACH()6.4 La fonction EACH() associée à la fonction LIST()6.5 La fonction FOREACH()

Page 88: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 88

PHP – LES TABLEAUXPlan

7 . Manipuler des tableaux7.1 Extraire une partie d’un tableau7.2 Ajouter et enlever des éléments

8. Opérations sur plusieurs tableaux8.1 Fusionner des tableaux8.2 Intersection et différence de deux tableaux

9. Tri des tableaux9.1 Tri des tableaux indicés9.2 Tri des tableaux associatifs 9.2.1. Tri des valeurs 9.2.2. Tri des clés

10. Opérer une sélection des éléments

11. Appliquer une fonction à un tableau

12. L’objet ArrayObject

Page 89: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 89

PHP – LES TABLEAUX1. PRINCIPES

Les tableaux (arrays) permettent de stocker plusieurs valeurs sous un même nom de variable.

Chaque variable peut être de type différent (entier, chaîne, booléen, date, array, objects, etc...)

Chaque élément peut être identifié par :– un indice numérique (le 1er est ZERO) tableaux indicés

ex. $tab[0] $tab[2] $tab[$i + 1]

– une étiquette (de type string) appelée CLE (Key)

ex. $tab[ "nom "] tableaux associatifs

Page 90: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 90

PHP – LES TABLEAUX2. CRÉER DES TABLEAUX

2.1 Définir directement les valeurs du tableau :$tab[0] = 25;$tab[1] = " php " ;$tab[20] = 10.50; // les éléments 2 à 19 n’existent pas (valeur NULL)

$tab[21] = TRUE;$tab[ ] = " exemple "; // si indice non précisé indice suivant (ici 22)

$ind = 8; $tab[$ind] = 50; // l’indice est une variable integer

$tab2[" nom " ] = " Dupont "; // tableau associatif

$prenom= " Jean ";$tab2[" prenom "] = $prenom;ATTENTION : Les clés des tableaux associatifs sont sensibles à la casse

Page 91: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 91

PHP – LES TABLEAUX2.2 Utiliser la fonction array() :

Tableau indicé :

$tab = array(val0,val1,val2,…..,valN);

Tableau associatif :

$tab = array("cleA " =>valA, " cleB " => valB, … " cleZ " =>valZ);

2.3 La fonction count($tableau)

La fonction count(t) retourne le nombre d’éléments actifs (non nuls) d’un tableau t donné en paramètre.

Page 92: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 92

PHP – LES TABLEAUX2.4 Les tableaux multi dimensions :

En PHP, pas de méthode explicite pour la création d’un tableau à n dimensions car un élément d’un tableau peut être un tableau lui-même.

$tabmulti=array (array(" Li0Col0 " , " Li0Col1 " , " Li0Col2 " ),array(" Li1Col0 " , " Li1Col1 " , " Li1Col2 " ),array(" Li2Col0 " , " Li2Col1 " , " Li2Col2 " ));

Ecriture : $tabmulti[2][1] = 25; // modifie contenu Li2Col1

Lecture : $el = $tabmulti[2][1] ;

NB : En test , utilisez la fonction print_r($tabmulti) ou var_dump ($tabmulti) qui affichera le contenu de toute la table.

Page 93: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 93

PHP – LES TABLEAUX Lecture d’un tableau multi dimensions : boucles imbriquées

for ($i=0;$i < count($tabmulti);$i++){

for ($j=0;$j < count($tabmulti [ $i ] );$j++){

print $tabmulti[$i][$j] . ‘<br>’ ; }}

Page 94: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 94

PHP – LES TABLEAUX 3. CRÉER DES SUITES range(début,fin)

Suite de nombres : $tab = range(1,10) ; // nbres de 1 à 10

Suite de lettres : $tab=range("A " , " M " ); // lettres A à M

4. CRÉER TABLEAU A PARTIR D’UNE CHAÎNE explode(sép, ch)

$chaine= " La cigale et la fourmi" ;

$tabl = explode(" " ,$chaine); // -> $tabl[0] = La , $tabl[4] = fourmi

Page 95: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 95

PHP – LES TABLEAUX 5. COMPTAGE DU NOMBRE DE VALEURS D’UN TABLEAUUne seule dimension : $nbre = count($tableau) ou sizeof($tableau)

N dimensions :$nbre = 0;for ($i=0;$i< count($tm);$i++){

if gettype($tm[$i] == " array "){

$nbre+= count($tm[$i]); }

else{

$nbre++;}

}

Page 96: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 96

PHP – LES TABLEAUX array_count_value(array)Cette fonction compte le nombre de valeurs différentes dans un tableau

$resu = array_count_values($tab);

$resu sera un tableau associatif ayant pour clé les valeurs du tableau $tab et pour valeur associée le nbre d’occurrences de cette valeur dans $tab

Attention : ne s’utilise qu’avec un tableau une dimension

Exemple :<?php$tab = array (" Web ", " Internet ", " PHP ", " Javascript ", " PHP ", " ASP ", "

PHP ", " ASP ");$result=array_count_values($tab);echo   " le tableau \$tab contient ",count($tab) , " éléments <br> ";echo   " le tableau \$tab contient ",count($result) , " valeurs différentes

<br> ";print_r($result);?>

Page 97: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 97

PHP – LES TABLEAUX 6. LECTURE DES TABLEAUX

6.1 Boucle FOR

for ($i=0;$i < count($tab);$i++)

{ echo $tab[$i]; }

6.2 Boucle WHILE

$i=0;While (isset($tab[$i])) // isset() retourne TRUE si l’élément existe

{ echo $tab[$i]; $i++;

}

Page 98: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 98

PHP – LES TABLEAUX6.3 La fonction EACH()

$element = each($tableau)$element est un tableau de 4 éléments :

$element[0] -> indice de l’élément courant

$element[1] -> valeur de l’élément courant

$element[ "key" ] -> clé de l’élément courant

$element[ " value" ] -> valeur de l’élément courant

while($element=each($tableau)){ echo " l’élément indice .$element[0] . Contient . $element[1] " ;echo " l’élément de clé .$element[‘key’] . Contient . $element[‘value’] " ;}Attention la fonction each() déplace le pointeur sur l’élément suivant. Pour

réinitialiser le pointeur, ,utilisez la fonction reset($tableau)

Page 99: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 99

PHP – LES TABLEAUX6.4 La fonction EACH() associée à la fonction LIST()La fonction list(variableList) permet d’affecter à N variables la valeur des n

premiers éléments d’un tableau indicélist($x,$y,$z)=$tab; // $x=$tab[0] $y = $tab[1] etc …

list($x,,$y,,$z)=$tab; // $x=$tab[0] $y=$tab[2] $z=$tab[4]

list($x,$y) = each($tab); $x = indice de l’élément en cours $y = valeur de l’élément en cours

while(list($indice,$valeur) =each($tab){ echo " l’élément indice .$indice . contient . $valeur " ; }

Attention, la fonction list() ne s’applique pas aux tableaux associatifs

Page 100: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 100

PHP – LES TABLEAUX6.5 La fonction FOREACH()Par rapport à la boucle FOR, FOREACH() ne doit pas connaître à l’avance le

nombre d’éléments d’un tableau

Tableaux indicés

foreach($tab as $valeur) {bloc de code utilisant $valeur }

foreach($tab as $indice=>$valeur){bloc de code utilisant $indice $valeur }

Tableaux associatifs

foreach($tab as $cle=>$valeur) { bloc utilisant $cle et $valeur}

Exemple :

foreach($tab as $cle=>$valeur){ echo " l’élément de clé .$cle . contient . $valeur <br>" ; }

Page 101: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 101

PHP – LES TABLEAUXforeach() avec un tableau multidimensionnel

$clients = array("client1"=>array("nom1"=> "Leparc" , "ville1"=> "Paris"),"client2"=>array("nom2"=> "Laforet" , "ville2"=> " Bruxelles"),"client3"=>array("nom3"=> "Lechamp" , "ville3"=> " Madrid"));foreach($clients as $cle=>$tab){ echo " <B> $cle </B>" ;

foreach($tab as $key=>$valeur){

echo " $key - $valeur" ;}

}

Page 102: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 102

PHP – LES TABLEAUX7. MANIPULER LES TABLEAUX

7.1 Extraire une partie d’un tableauLa fonction array_slice() retourne un tableau qui est un sous-ensemble d’un

tableau initialExemple : $soustab=array_slice($tab, $indicedeb, $indicefin);

7.2 Ajouter et enlever des éléments- La fonction $int = array_push($tab, val1,val2, …valn);Ajoute en fin de $tab les éléments passés en paramètres et retourne le nouveau

nombre d’éléments du tableau

- La fonction $int = array_unshift($tab, val1,val2, …valn);Ajoute en début de $tab les éléments passés en paramètres et retourne le

nouveau nombre d’éléments du tableau

Page 103: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 103

PHP – LES TABLEAUX- La fonction $v = array_pop($tab)Supprime le dernier élément du tableau et retourne sa valeur (ou NULL) dans $v

- La fonction $v = array_shift($tab)Supprime le premier élément du tableau et retourne sa valeur (ou NULL) dans $v

- La fonction array_unset($tab[cle ou indice])Supprime l’élément du tableau dont on précise l’indice ou la clé Nb : les autres éléments conservent leurs valeurs

Exemples : array_unset($tab[3]) array_unset([" nom" ])

- La fonction $tab2 = array_unique($tab)Retourne un tableau ne contenant que la dernière occurrence des doublonsNB les doublons éliminés conservent leurs indices et sont vides

Page 104: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 104

PHP – LES TABLEAUX8. OPERATIONS SUR PLUSIEURS TABLEAUX

8.1 Fusionner des tableaux

La fonction $tab = array_merge($tab1, $tab2, …$tabn)

Renvoie en un seul tableau, l’union des différents tableaux passés en paramètres

Attention :Pour les tableaux associatifs, si des clés sont communes, seule l’association clé-valeur du dernier paramètre sera conservée

Pour ne pas perdre de telles valeurs, il faut utiliser la fonction

array_merge_recursive() qui conserve la clé en double et lui associera un tableau avec les différentes valeurs de cette cle

La fonction $tab=array_combine($tabcles,$tabvaleurs)

Crée un tableau associatif. $tabcles et $tabvaleurs étant des tableaux indicés contenant respectivement les clés et les valeurs associées

Page 105: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 105

PHP – LES TABLEAUX8.2 Intersection et différence de deux tableaux

La fonction $tab = array_intersect($tab1, $tab2)

Renvoie en un seul tableau, reprenant les éléments communs aux 2 tableaux

Attention : Les indices conservés correspondent à ceux du premier tableau

La fonction $tab = array_diff($tab1, $tab2)

Renvoie en un tableau, reprenant les éléments présents dans le premier tableaux et pas dans le deuxième.

Remarques : • On peut fournir plus de 2 tableaux comme paramètres.• Ces 2 fonctions peuvent être appliquées à des tableaux associatifs• L’ordre des paramètres fourni est important

Page 106: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 106

PHP – LES TABLEAUX9. TRI DES TABLEAUX9.1 Tri des tableaux indicésLa fonction sort($tabind) trie le tableau $tabind en ordre croissant ASCIILa fonction rsort($tabind) trie le tableau $tabind en ordre décroissant La fonction natsort($tabind) trie le tableau $tabind en ordre croissant

naturelLa fonction natrsort($tabind) trie le tableau $tabind en ordre décroissantLa fonction natcasesort($tabind) trie le tableau $tabind en ordre

croissant naturel sans tenir compte de la casse

NB Il ne sera pas possible de récupérer l’ordre initial, mais on peut si nécessaire duplicier un tableau avant de le trier $tabbis = $tab

La fonction $tab2 = array_reverse(tab) inverse l’ordre des valeurs dans un nouveau tableau

Page 107: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 107

PHP – LES TABLEAUXOn peut, si nécessaire, définir son ordre de tri personnel :usort($tab, "userFunctionName" )Le deuxième paramètre désigne le nom d’une fonction écrite par l’utilisateur qui

recevra 2 paramètres représentant 2 valeurs consécutives de la table à comparer.

Cette fonction retournera :• Un nombre négatif pour trier dans l’ordre défini• Un nombre positif pour trier dans l’ordre inverse• Zéro si les 2 éléments sont équivalents

ExempleExemple : trier dans l’ordre croissant de la longueur des chaînes : trier dans l’ordre croissant de la longueur des chaînesfunction long($mot1,$mot2){If(strlen($mot1)==strlen($mot2)) return 0;elsif(strlen($mot1)>strlen($mot2)) return -1;Else return 1;}

usort($tab, "long“)

Page 108: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 108

PHP – LES TABLEAUXMélanger les valeurs de façon aléatoire

La fonction shuffle($tab) mélangera de façon aléatoire les valeurs contenues dans la table.

NB Il est recommandé d’initialiser le générateur de nombres aléatoires avec srand(time()) avant d’appeler shuffle()

Page 109: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 109

PHP – LES TABLEAUX9.2 Tri des tableaux associatifs9.2.1. Tri des valeursLa fonction asort($tabas) trie le tableau $tabas en ordre croissant ASCIILa fonction arsort($tabas) trie le tableau $tabas en ordre décroissantLa fonction uasort($tabas, "userFunctionName" ) trie le tableau $tabas

suivant une fonction de tri définie par l’utilisateurNB Les fonctions natsort() natasort() et natcasesort() peuvent également

être utilisées avec les tableaux associatifs9.2.2. Tri des clésLa fonction $boolean = ksort($rtabas) trie le tableau associatif sur la

valeur croissante de ses clés et renvoye TRUE si le tri s’est bien passé (sinon FALSE)

$boolean = krsort($rtabas) idem en ordre décroissantuksort(($tabas, "userFunctionName" ) idem avec user defined function

NB Il est possible de transformer la casse des clés avec la fonction :array_change_key_case($tabas,CASE_LOWER / CASE_UPPER)

Page 110: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 110

PHP – LES TABLEAUX10. OPERER UNE SELECTION DES ELEMENTS

La fonction $tab2 = array_filter($tab, "userFunctionName“)

Permet de réaliser une sélection pour ne retenir dans $tab2 que les éléments de $tab répondant aux critères de la UDF. Cette UDF reçoit 1 paramètre, représentant la valeur courante de $tab

Exemple : ne retenir les valeurs commençant par la lettre ‘P’ ou ‘p’

Function init($ville)

{

if($ville[0] == ‘P’ || ($ville[0] == ‘p’)) return $ville ;

}

$tab2= array_filter($tab, “init“)

Page 111: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 111

PHP – LES TABLEAUX11. APPLIQUER UNE FONCTION A UN TABLEAU

On peut appliquer un traitement répétitif à chaque élément d’un tableau avec la fonction array_walk($tab, "userFunctionName“,ParamFacul)

On peut éventuellement ajouter des paramètres personnels derrière les 2 premiers

Cette fonction appelée reçevra 2 paramètres , le premier la valeur de l’élément, le deuxième l’indice ou la clé de l’élément. Si des Param facultatifs ont été donnés, ils seront passés à la suite des 2 premiers.

La fonction $chaine =array_reduce($tab, " UDFname ",ParamFacul)

Permet de retourner un seul résultat (somme, moyenne …) à partir des valeurs d’un tableau . Le ParamFacul représente la valeur par défaut qui sera retournée si $tab est vide.

Page 112: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 112

PHP – LES TABLEAUX12. L’OBJET ArrayObjectPour créer un objet tableau, on utilise $otab = ArrayObject()Le constructeur peut recevoir des valeurs :$otab = ArrayObject(array(3,45,’Nom’, TRUE)) // tabl indicés$otab = ArrayObject(array(‘a’=> "linux ",’b’=> " windows ")) // tabl ass

Pour ajouter un élément au tableau on utilise la méthode : $otab-

>append($valeur)La boucle foreach permet de lire les indices(ou clés) et les valeursLa méthode $otab->count() renvoye le nbre d’éléments du tableauLa méthode $tabass = $otab->getArrayCopy() récupère un tableau

associatif ‘classique’Pour lire un élément on utilise la méthode :

$val = $otab->offsetGet(indice / clé)

Page 113: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 113

PHP – LES TABLEAUXPour ajouter un élément en précisant sa clé ou indice on utilise la

méthode : $otab->offsetSet(cle / indice,valeur)

Pour supprimer un élément on utilise la méthode :

$otab->offsetUnSet(cle / indice)

Page 114: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 5 - les tableaux 114

PHP – LES TABLEAUX-fonctionsarray_change_key_case — Change la casse des clés d'un tableauarray_chunk — Sépare un tableau en tableaux de taille inférieurearray_combine — Crée un tableau à partir de deux autres tableauxarray_count_values — Compte le nombre de valeurs d'un tableauarray_diff_assoc — Calcule la différence de deux tableaux, en prenant en compte les clésarray_diff_key — Calcule la différence de deux tableaux en utilisant les clés pour comparaisonarray_diff_uassoc — Calcule la différence entre deux tableaux associatifs, à l'aide d'une fonction de

rappelarray_diff_ukey — Calcule la différence entre deux tableaux en utilisant une fonction de rappel sur les

clés pour comparaisonarray_diff — Calcule la différence entre deux tableauxarray_fill_keys — Remplit un tableau avec des valeurs, en spécifiant les clésarray_fill — Remplit un tableau avec une même valeurarray_filter — Filtre les éléments d'un tableau grâce à une fonction utilisateurarray_flip — Remplace les clés par les valeurs, et les valeurs par les clésarray_intersect_assoc — Calcule l'intersection de deux tableaux avec des tests sur les indexarray_intersect_key — Calcule l'intersection de deux tableaux en utilisant les clés pour comparaisonarray_intersect_uassoc — Calcule l'intersection de deux tableaux avec des tests sur les index, compare

les index en utilisant une fonction de rappelarray_intersect_ukey — Calcule l'intersection de deux tableaux en utilisant une fonction de rappel sur

les clés pour comparaisonarray_intersect — Calcule l'intersection de tableauxarray_key_exists — Vérifie si une clé existe dans un tableau

Page 115: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 115

PHP- formulaires

1. Qu’est-ce qu’un formulaire ?2. Transmission des variables

A) transmission en modifiant l’adresseB) transmission avec un formulaire

3. les attributs d’un formulaireA) méthode : post ou getB) actionC) input typeD) textarea E) select

4. Exemple de formulaire5. Récupération des données d’un formulaire6. Exemple de traitement des données d’un formulaire7. Gérer les boutons d’envoi multiples

Page 116: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 116

PHP- formulaires1. Qu’est-ce qu’un formulaire ?

 <form method="post" action="cible.php"> <p>

On mettra ici les éléments de notre formulaire.<br /> Notez qu'il n'y a pour l'instant pas de PHP.

</p> </form>

serveur

visiteur

formulaire

formulaire présentable créé en

HTML

Gestion des infos fournies par le

formulaire au script côté serveur en PHP

Page 117: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 117

PHP- formulaires2. Transmission des variables

Un des aspects intéressants de PHP, c'est qu'on peut se transmettre des variables de page en page.

C'est pratique, par exemple pour transmettre le nom du visiteur. En effet, les variables sont détruites une fois que la page PHP est générée. Alors comment récupérer leur valeur dans une autre page ?

A) Transmettre en modifiant l’adresse

<a href="http://www.monsite.com/infos.php?jour=27">Cliquez ici pour accéder aux infos !</a>

 

Balise <a> permet de faire un lien d’une page à l’autre

? nom-var = valeur

Cela va créer une variable particulière : $_GET['jour'] qui

aura pour valeur 27 !

Page 118: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 118

PHP- formulaires2. Transmission des variables

A) Transmettre en modifiant l’adresse

<a href="http://www.monsite.com/infos.php?jour=27&amp;mois=07&amp;annee=2008 ">Cliquez ici pour accéder aux infos !</a>

 

Pour créer d'autres variables, il vous suffit de les séparer par des &. Il ne faut pas écrire directement le symbole & (c'est interdit, même si ça "a l'air" de

marcher). Il faut remplacer les & par le code HTML correspondant, à savoir &amp;

Tous les &amp; seront transformés en symboles & par le navigateur du visiteur.

Page 119: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 119

PHP- formulaires

2. Transmission des variables

A) Transmettre en modifiant l’adresse (exemple complet)<p> Notez que cette page ne contient que du HTML.<br /> Voici 3 liens vers la page cible.php, avec des variables aux valeurs différentes : </p><p> <a href="cible.php?nom=Dupont&amp;prenom=Michel">Lien vers cible.php?

nom=Dupont&amp;prenom=Michel</a><br /> <a href="cible.php?nom=Guichard&amp;prenom=Patrick">Lien vers cible.php?

nom=Guichard&amp;prenom=Patrick</a><br /> <a href="cible.php?nom=Surret&amp;prenom=Coralie">Lien vers cible.php?

nom=Surret&amp;prenom=Coralie</a> </p>

 Bonjour ! Votre nom est <?php echo $_GET['nom']; ?> , et votre prénom est <?php echo $_GET['prenom']; ?>. <p>Faites un autre essai, <a href="appel.php">cliquez ici</a> pour revenir à

appel.php</p>

appel.php

cible.php

$_GET et $_POST sont des tableaux associatifs qui permettent de récupérer les valeurs des variables d’une autre page

Page 120: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 120

PHP- formulaires2. Transmission des variables

B) Transmettre avec un formulaire

<p> Cette page, elle aussi, ne contient que du HTML.<br /> Veuillez taper votre prénom :</p><form action="cible.php" method="post"> <p> <input type="text" name="prenom" /> <input type="submit" value="Valider" /> </p> </form>

 Bonjour ! Je sais comment tu t'appelles, hé hé. Tu t'appelles <?php echo $_POST['prenom']; ?> ! <p>Si tu veux changer de prénom, <a href="appel.php">clique ici</a> pour revenir à

appel.php</p>

appel.php

cible.php

Page 121: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 121

PHP- formulaires3. Les attributs d’un formulaire

A) method="post"|"get" 

La méthode GET (celle qui est utilisée par défaut si rien n'est renseigné) fait circuler les informations du formulaire en clair dans la barre d'adresse en suivant le format ci-après :

Cette adresse signifie que nous allons transmettre à la page scriptphp.php les couples variable / valeur transmis en paramètre. La première variable d'une url est toujours précédée du symbole ? alors que les autres seront précédées du symbole &. Les noms des variables correspondent aux attributs name des éléments du formulaire et les valeurs aux attributs value.

La méthode POST, quant à elle, transmet les informations du formulaire de manière

masquée mais non cryptée.

La méthode POST est préférée lorsqu'il y'a un nombre important de données à transmettre ou bien

lorsqu'il faut envoyer des données sensibles comme des mots de passe. Dans certains cas, seule la

méthode POST est requise : un upload de fichier par exemple.

Inconvénient : données visibles par le visiteur

Méthode la plus utilisée

Page 122: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 122

PHP- formulaires3. Les attributs d’un formulaire

B) action = " cible.php "

C'est le nom de la page qui sera appelée lorsque l'utilisateur aura envoyé sonformulaire. Il est recommandé que ce fichier soit présent dans le même

répertoire quecelui contenant le formulaire.

Lorsque le formulaire est envoyé, le serveur Web qui le reçoit le redirige vers le script PHP référencé dans le champ action du formulaire. PHP va automatiquement créer le tableau $_POST qui contiendra les valeurs saisies dans les champs du formulaire.

Page 123: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 123

PHP- formulaires3. Les attributs d’un formulaire

C) Input type = " "

<input type="text" name="pseudo" value="M@teo21" />

Text passwordcheckbox radiosubmitresetfilehidden

Nom du champ(côté serveur)

Valeur par défaut le texte que le visiteur aura rentré sera disponible dans cible.php sous la forme

d'une variable appelée $_POST['pseudo'].

Page 124: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 124

PHP- formulaires3. Les attributs d’un formulaire

C) Input type = " "

<input type = "checkbox" name= " case"/> ma case

- Si la case est cochée, $_POST [‘case’], alors $_POST['case'] aura pour valeur "on " .

- Si elle n'est pas cochée, alors $_POST['case'] n'existera pas. Vous pouvez faire un test avec isset($_POST['case']).

- Si vous voulez que la case soit cochée par défaut, il faudra lui rajouter l'attribut checked="checked".

<input type="checkbox" name="case" checked="checked" />

Nom de la variable à transmettre Libellé affiché

Page 125: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 125

PHP- formulaires3. Les attributs d’un formulaire

C) Input type = " "

<input type = "checkbox" name= "case" value = " valeur " /> ma case

on peut créer un groupe de cases à cocher. Il est alors possible de cocher plusieurs cases simultanément.

<input type = "checkbox" name= " aliment []"/> Frites<input type = "checkbox" name= " aliment[] "/> Steak<input type = "checkbox" name= " aliment[]"/> Epinards<input type = "checkbox" name= " aliment[]"/> Huitres

Valeur transmise si la case est cochée

On récupère les valeurs dans un tableau

Page 126: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 126

PHP- formulaires3. Les attributs d’un formulaire

C) Input type = " "

Aimez-vous les frites ? <input type="radio" name="frites" value="oui" checked="checked" /> Oui <input type="radio" name="frites" value="non" /> Non

- les deux boutons d'option ont le même nom ("frites"). C'est très important, car les boutons d'options fonctionnent par "groupes" : tous les boutons d'option d'un même groupe ont le même nom. Un groupe contient min 2 boutons.

- A la différence des cases à cocher, un seul choix est autorisé.

- Pour pré-cocher l'un de ces boutons d'option, il faut ajouter un checked.

Page 127: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 127

PHP- formulaires

3. Les attributs d’un formulaire

C) Input type = " "

<input type="hidden" name="pseudo" value="Mateo21" />

- Dans la page cible, une variable $_POST['pseudo'] sera créée (correspondant à name), et elle aura la valeur "Mateo21" (correspondant à value)

<input type= " submit " value= " envoyer" />

- Ce bouton déclenche l’envoi des données de tout le formulaire vers le serveur.

- Le contenu de l’attribut “value” constitue le texte visible du bouton dans le formulaire.

Envoi des données

Un bouton

Page 128: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 128

PHP- formulaires

3. Les attributs d’un formulaire

C) Input type = " "

<input type= " submit “ name = “traitement” value= “ création" /><input type= " submit “ name = “traitement” value= “ modification" /><input type= " submit “ name = “traitement” value= “ suppression” />

- Si l’on a plusieurs boutons, le champ name est obligatoire et identique pour tous les boutons.

- idée : effectuer des tâches spécialisées en fonction de la valeur associée.

Envoi des données plusieurs boutons

Page 129: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 129

PHP- formulaires

3. Les attributs d’un formulaire

C) Input type = " "

<input type=" reset " value=" effacer" />

- Ce bouton réinitialise le formulaire.

- Si les éléments du formulaire ont des attributs value qui définissent des valeurs par défaut, ce sont ces valeurs qui apparaissent au démarrage de la page.

Réinitialisation du formulaire

Page 130: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 130

PHP- formulaires

3. Les attributs d’un formulaire

D) textarea name= " "

<textarea name="message" rows="8" cols="45"> Votre message ici. </textarea>

Message par défaut (optionnel) Définit la taille de la zone de

saisie.

Page 131: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 131

PHP- formulaires3. Les attributs d’un formulaire

E) Select option

<select name="choix"> <option value="choix1"  selected="selected">Choix 1 </option> <option value="choix2">Choix 2</option> <option value="choix3">Choix 3</option> <option value="choix4">Choix 4</option></select>

- Ici, une variable $_POST['choix'] sera créée, et elle contiendra le choix qu'a fait l'utilisateur.

- S'il a choisi "Choix 3", la variable $_POST['choix'] sera égale au value correspondant, c'est-à-dire "choix3".

choix par défaut (optionnel)

choix unique

Page 132: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 132

PHP- formulaires3. Les attributs d’un formulaire

E) Select option

<label > vos couleurs préférées ? </label> <br/> <select name = "couleur[ ]" multiple="multiple" size="2"> <option value ="rouge" >rouge</option> <option value ="vert" >vert </option> <option value ="bleu" >bleu</option> <option value ="jaune">jaune</option> </select>

- dans les listes de sélection à choix multiple, l’utilisateur doit maintenir enfoncée la touche CTRL pour faire plusieurs choix.

choix multiple

Page 133: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 133

PHP- formulaires4. Exemple de formulaire

<body> <!-- //e6_0.php --><form method="post" action="e6_0bis.php" >

<!--//zone de texte --><input type ="text" name ="nom" /> nom <br/>

<!--// password--><input type ="password" name ="motpasse" /> mot passe <br/> <br/>

<!--// case à cocher simple --><input type ="checkbox" name ="content" value="content"/> content ? <br/> <br/>

<!--// cases à cocher multiples --> <input type ="checkbox" name ="lang[ ]" value="frans" /> français <br/> <input type ="checkbox" name ="lang[ ]" value="engels"/> anglais<br/> <input type ="checkbox" name ="lang[ ]" value="nederlands" /> néerlandais<br/> <br/>

Page 134: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 134

PHP- formulaires4. Exemple de formulaire

<!--// bouton radio (bouton d'option)--><label> Homme </label> <input type = "radio" name ="sexe" value="homme"/> <br/> <label> Femme </label> <input type = "radio" name ="sexe" value="femme"/> <br/> <br/>

<!--// liste déroulante à choix unique--> <label> votre signe astro ? </label> <br/> <select name = "signe" > <option value ="poisson" >poisson</option> <option value ="sagittaire" > sagittaire</option> <option value ="taureau" >taureau</option> <option value ="vierge">vierge</option> </select> <br/>

Page 135: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 135

PHP- formulaires4. Exemple de formulaire

<!--// liste déroulante à choix multiple--> <label for="choix"> vos couleurs préférées ? </label> <br/> <select name = "couleur[ ]" multiple="multiple" size="2"> <option value ="rouge" >rouge</option> <option value ="vert" >vert </option> <option value ="bleu" >bleu</option> <option value ="jaune">jaune</option> </select> <br/> <br/> <br/>

<!--// envoi du formulaire--><input type="submit" value ="envoyer"/></form>

</body>

Page 136: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 136

PHP- formulaires5. Récupération des données du formulaire

Que se passe-t-il lorsque l’utilisateur clique sur le bouton d’envoi ?

Une requête http est envoyée au serveur à destination du script désigné dans l’attribut action de <form>.

La requête contient toutes les associations entre les noms des champs et leur valeur.

Le script récepteur est écrit en PHP.2 cas apparaissent : -la transmission de valeurs uniques (texte par ex)

- la transmission de valeurs multiples (cases à cocher par ex)

Rem : dans la suite, on n’envisage que l’utilisation de la méthode « post ».

Dans l’entête HTTP avec la méthode POST

Dans l’URL avec la méthode GET

Page 137: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 137

PHP- formulaires5. Récupération des données du formulaire

ALERTE ROUGE :quand vous affichez les résultats d'un formulaire, prenez l'habitude de TOUJOURS appliquer

un htmlspecialchars( ). Même sur une liste déroulante ou un champ caché, un visiteur peut modifier la source pour aller mettre du html ou du javascript !

A) Récupération des valeurs uniques :

texte, bouton radio, liste de sélection

B) Récupération de valeurs multiples :

groupe de cases à cocher

Page 138: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 138

PHP- formulaires5. Récupération des données du formulaire

A) Récupération des valeurs uniques :

Texte, bouton radio, liste de sélection à choix unique

- Ces valeurs sont contenues sur le serveur dans un tableau associatif $_POST.

- Les clés de ce tableau sont les noms associés aux champs par l’attribut « name ».

B) Récupération de valeurs multiples :

groupe de cases à cocher, liste de sélection à choix multiple

- Ces valeurs sont contenues sur le serveur dans un tableau associatif $_POST multidimensionnel, en l’occurrence à 2 dimensions.

$_POST [" name" ] [ i ]

$_POST [" name" ]

Page 139: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 139

PHP- formulaires6. Exemple de traitement des données du formulaire

<?php //e6_0bis.php // pour les valeurs multiples $lang = $_POST ["lang"]; $couleur= $_POST ["couleur"]; // // trt des valeurs uniques // // zones de texte echo "votre nom est : ".$_POST ["nom"]."</br>"; echo "votre mot passe est : ".$_POST ["motpasse"]."</br>"; // bouton radio ( si pas coché, n'existe pas) if (isset ($_POST ["sexe"] ) ) echo "votre êtes un(e) : ".$_POST["sexe"]."</br>« ;

Page 140: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 140

PHP- formulaires6. Exemple de traitement des données du formulaire

// case à cocher (si pas cochée, n'existe pas) if (isset ($_POST ["content"] ) ) echo "vous êtes : ".$_POST ["content"]."</br>"; //liste déroulante à choix unique echo " votre signe astro est : ".$_POST["signe"]."</br>"; // // trt des valeurs multiples // // trt cases à cocher multiples echo "vous parlez : " ; foreach ($lang as $valeur) { echo "<li> $valeur </li> "; }

Page 141: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 141

PHP- formulaires6. Exemple de traitement des données du formulaire

//liste déroulante à sélection multiple echo " vos couleurs préférées sont :"; foreach ($couleur as $valeur) { echo "<li> $valeur </li> "; } echo "<a href=\"e6_0.php\"> clique ici pour le retour </a>";?>

Page 142: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 142

PHP- formulaires7. Gérer les boutons d’envoi multiples

<body> <!-- //e6_1.php-->

<form method="post" action="e6_1bis.php" >

<label for="n1"> nombre1</label><input type ="texte" name ="n1" id="n1"/> <br/>

<label for="n2"> nombre2</label><input type ="texte" name ="n2" id="n2"/> <br/> <br/>

<input name="calcul" type="submit" value ="add"/><input name="calcul" type="submit" value ="sub"/>

</form>

Page 143: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 6 - les formulaires 143

PHP- formulaires7. Gérer les boutons d’envoi multiples

<?php //e6_1bis.php $n1 = $_POST ["n1"]; $n2 = $_POST ["n2"];

switch ( $_POST ["calcul"]) { case "add": $result=$n1+$n2; break; case "sub": $result=$n1-$n2; break; } echo "le résultat est : ".$result."</br>"; echo "<a href=\"e6_1.php\"> clique ici pour le retour </a>";?>

Page 144: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 7 - les fonctions 144

PHP- fonctions

1. Les fonctions natives de PHP

2. Créer ses propres fonctions

2.1 définition, appel de fonction avec retour d’un résultat2.2 définition, appel de fonction sans retour de valeur2.3 définition, appel de fonction avec retour de plusieurs valeurs2.4 passage des arguments par référence

3. Portée des variables3.1 variables locales globales3.2 variables super globales

Page 145: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 7 - les fonctions 145

PHP- fonctions1. Les fonctions natives de PHP

Il existe des- fonctions natives écrites en langage C - Modules d’extension qu’il est possible d’associer à la distribution standard

Avant d’utiliser un module, il convient de vérifier qu’il est bien installé sur le serveur de votre hébergeur.

// php 7.1

$tabtext = get_loaded_extensions (); foreach ($tabtext as $cle=>$valeur) { echo "$cle &nbsp;&nbsp;&nbsp;$valeur "; }

if (function_exists ('mysql_pconnect') ) echo "la fonction est utilisable";

retourne un tableau contenant tous les modules d’extension installés sur le serveur

Vérifie la disponibilité d’une fonction connue

Renvoie TRUE si la fonction est utilisableFALSE sinon

Page 146: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 7 - les fonctions 146

PHP- fonctions1. Les fonctions natives de PHP

Voici un petit aperçu des fonctions qui existent pour vous mettre l'eau à la bouche :

• une fonction qui permet de rechercher et de remplacer des mots dans une variable

• une fonction qui envoie un fichier sur un serveur• une fonction qui permet de créer des images miniatures (aussi appelées

thumbnails)• une fonction qui envoie un mail avec PHP (très pratique pour faire une

newsletter !)• une fonction qui permet de modifier des images, y écrire du texte, tracer

des lignes, des rectangles etc…• une fonction qui crypte des mots de passe.• une fonction qui renvoie l'heure, la date...

Page 147: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 7 - les fonctions 147

PHP- fonctions2. Créer ses propres fonctions

Ces fonctions personnalisées peuvent être écrites dans le script lui-même ou dans un script séparé qu’il suffira d’inclure dans de nouveaux scripts à l’aide de l’instruction include () ou require ()

2.1 définition, appel de fonction avec retour d’un résultat

Exemple 1 : calcul du volume d’un cylindreLa formule de calcul est : rayon * rayon * 3.14 * hauteur * (1/3)

<?php //e7_2.php//définition de la fonction function VolumeCone($rayon, $hauteur){ $volume = $rayon * $rayon * 3.14 * $hauteur * (1/3); return $volume; }// appel de la fonction$volume = VolumeCone(3, 1);echo "Le volume d'un cône de rayon 3 et de hauteur 1 est de $volume";?>

Page 148: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 7 - les fonctions 148

PHP- fonctions2. Créer ses propres fonctions

2.2 définition, appel de fonction sans retour de valeur

Exemple 2 : fonction de lecture d’un tableau

<?php //e7_3.php//définition de la fonction// tabuni (nom du tableau, largeur de la bordure, libellé col1, libellé col2)function tabuni($tab,$bord,$lib1,$lib2){ echo "<table border=\"$bord\" width=\"75%\"> <tbody><tr><th>$lib1</th> <th>$lib2</th><tr>"; foreach ($tab as $cle=>$valeur) { echo "<tr><td>$cle </td> <td>$valeur </td><tr> "; } echo "<br/></tbody> </table>"; }

Page 149: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 7 - les fonctions 149

PHP- fonctions2. Créer ses propres fonctions

Exemple 2 : fonction de lecture de tableaux (suite)

// définition des tableaux associtaifs $tab1= array ("France"=>"Paris","Allemagne"=>"Berlin","Espagne"=>"Madrid"); $tab2= array ("Poisson"=>"requin","Cétacé"=>"dauphin","Oiseau"=>"Aigle");

// appels de la fonction tabuni($tab1,1,"Pays","Capitale"); tabuni($tab2,6,"Genre","Espèce");?>

Page 150: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 7 - les fonctions 150

PHP- fonctions2. Créer ses propres fonctions

2.3 définition, appel de fonction avec retour de plusieurs valeursVia l’utilisation d’un tableau (array), une fonction est capable de renvoyer

plusieurs valeurs.

Exemple 3 : fonction de calcul (somme et différence)

<?php //e7_4.php//définition de la fonction function calculVal($a,$b) { $som = $a + $b; $dif = $a - $b; return array($som,$dif); } // appel de la fonction $result = calculVal (8, 6); echo "somme des 2 nombres : ".$result[0]."<br/>"; echo "différence des 2 nombres : ".$result[1]."<br/>";?>

Page 151: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 7 - les fonctions 151

PHP- fonctions2. Créer ses propres fonctions2.3 définition, appel de fonction avec valeur par défaut des arguments Il est possible de fixer des valeurs par défaut pour les arguments. Ces valeurs doivent être précisées en tant que constantes. Ces arguments doivent être placés en fin de liste des arguments.

Exemple 4 : fonction de mise en page

<?php //e7_5.php//définition de la fonction function header_page($title,$bgcolor="red") { echo "<html> <head><title>$title</title></head> <body bgcolor=\"$bgcolor\">"; }

// appel de la fonction header_page("cours PHP"); echo "<h1>Utilisation d'un paramètre par défaut</h1>";?>

Page 152: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 7 - les fonctions 152

PHP- fonctions2. Créer ses propres fonctions

2.4 passage des arguments par référence

Jusqu’à présent, les arguments étaient passés par valeur.Il est possible de passer un argument par référence en faisant précéder

l’argument de « & » dans la définition de la fonction.

Exemple 5 : fonction de traitement d’un tableau

Le premier argument est passé par référence , le second par valeur.

Page 153: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 7 - les fonctions 153

PHP- fonctions2. Créer ses propres fonctions

Exemple 5 : fonction de traitement d’un tableau

<?php //e7_6.php//définition de la fonction//multiplication des éléments d'un tableau par un coeff function prodTab(&$tab,$coeff) { foreach ($tab as $cle=>$val) $tab[$cle]*=$coeff; } // définition du tableau $tabnum = range(1,7); echo "tableau avant : ", print_r($tabnum),"<br/>"; // appel de la fonction prodTab($tabnum,3); echo "tableau après : ",print_r($tabnum),"<br/>";?>

Page 154: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 7 - les fonctions 154

PHP- fonctions2. Créer ses propres fonctions

Exemple 6: fonction de calcul

<?php //e7_6bis.php//définition de la fonction//addition de 2 éléments numériques function addition ($n1,$n2,&$somme) { $somme= $n1 + $n2; } // appel de la fonction $a=10; addition($a,50,&$resultat); echo "<br> la somme de $a et 50 vaut : $resultat";

?>

Page 155: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 7 - les fonctions 155

PHP- fonctions3. Portée des variables

3.1 variables locales et globales

- Toutes les variables utilisées dans la déclaration d’une fonction sont « locales » au bloc de définition de la fonction..

- Une variable définie en dehors d’une fonction est « globale » et accessible partout dans le script qui l’a créée.

<?php //e7_7.php//définition d'une variable globale $message = "apprendre le langage PHP"; // fonction utilisant une variable locale function affiche() { echo $message; } // appel de la fonction affiche();?>

- Le script affiche une page blanche.-La variable $message utilisée dans la fonction a une portée locale et n’a pas été initialisée.-- la fonction ne fait pas réf à la var $message déclarée globalement.

Page 156: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 7 - les fonctions 156

PHP- fonctions3. Portée des variables

3.1 variables locales et globales

- Pour pouvoir utiliser une variable globale dans une fonction, il faut la redéclarer explicitement à ce niveau.

- 2 façons de réaliser cela :

1) en déclarant « globale » la variable dans la fonction avec le mot-clé « global »

2) en utilisant le tableau associatif prédéfini « $GLOBALS ».

Page 157: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 7 - les fonctions 157

PHP- fonctions3. Portée des variables

3.1 variables locales et globales

- 1) en déclarant « globale » la variable dans la fonction avec le mot-clé « global »

<?php //e7_8.php//définition de variables globales $message = "apprendre le langage PHP"; $remarque = "c'est amusant<br/>"; // fonction utilisant les variables globales function affiche() { global $message, $remarque; echo $message.",".$remarque; } // appel de la fonction affiche();?>

Page 158: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 7 - les fonctions 158

PHP- fonctions3. Portée des variables

3.1 variables locales et globales

- 2) en utilisant le tableau associatif prédéfini « $GLOBALS ». Les clés de ce dernier sont les noms des variables globales sans le « $ »

<?php //e7_9.php//définition de variables globales $message = "apprendre le langage PHP"; $remarque = "c'est amusant<br/>"; // fonction utilisant des variables globales (version 2) function affiche() { echo $GLOBALS ["message"].",".$GLOBALS ["remarque"];

} // appel de la fonction affiche();?>

Page 159: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 7 - les fonctions 159

PHP- fonctions3. Portée des variables

3.2 variables super globales

PHP fournit un ensemble de tableaux prédéfinis qui contiennent les variables serveur ($_SERVER), les variables d’environnement et d’entrée ($_POST, $_GET, $_GLOBALS…).

Ces éléments sont super globaux ce qui signifie que ces variables existent sur toutes les pages et sont accessibles partout : au milieu de votre code, au début, dans les fonctions etc...

$_SERVER['REMOTE_ADDR'] : sans aucun doute l'information la plus intéressante de $_SERVER. Elle nous donne l'adresse IP du client qui a demandé à voir la page.

Page 160: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 8 - les dates 160

PHP- dates

1. La fonction date()

2. Le timestamp 2.1 la fonction time()2.2 la fonction date() et le timestamp2.3 la fonction mktime() et le timestamp2.4 limites

3. La fonction checkdate()

4. La date en français

Page 161: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 8 - les dates 161

PHP- dates1. La fonction date()

La fonction date permet d’afficher, le jour, la date et l’heure sur les pages WEB, qu’elles soient statiques ou créées dynamiquement.

<?php $jour = date('d'); echo 'Aujourd\'hui, nous sommes le : ' . $jour; ?>

Format 1 : date(‘lettre‘)

Remarques :1) Le plus embêtant avec date c'est que la fonction est faite pour... des anglais.

Il n'y a pas moyen qu'elle affiche les jours de la semaine en français.2) C'est l'heure du serveur qui est renvoyée, et non pas celle du client.

Affiche le numéro du jour dans le mois

Cfr tableau slide suivant

Page 162: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 8 - les dates 162

PHP- dates

Caractères de définition du format d’affichage.

La colonne Exemple contient les valeurs telles qu'elles sont apparues le lundi 29 Août 2005 à 0h26

Page 163: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 8 - les dates 163

PHP- dates

1. La fonction date()

<?php echo 'Aujourd\'hui, nous sommes le : ' . date('d/m/Y'); ?>

En fait, vous pouvez mettre ce que vous voulez dans date, dès que la fonction rencontre une lettre qu'elle connaît elle la remplace par la valeur correspondante.Cela veut dire que vous pouvez mettre des espaces, des tirets, ou des slashs comme j'ai fait pour séparer les éléments de date.

date a créé une chaîne de caractères qui contient jour/mois/année.

Page 164: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 8 - les dates 164

PHP- dates

2. Le timestamp 2.1la fonction time()

Vieux des premiers âges babyloniens, le système sexagésimal consiste à diviser le jour en 2’ heures de 60 minutes de soixante secondes.

Les informaticiens ne peuvent se contenter d’un système dans lequel l’ajout d’une seconde peut amener à changer d’heure, de jour,….et même de millénaire.

Pour pallier ces difficultés, une date arbitraire a été définie , correspondant au 1er janvier 1970 00h 00m 00s. A partir de cette date, le temps est compté en secondes.

Ce nombre de secondes est nommé timestamp ou instant UNIX.En fait, ça représente le début de l'époque où le système d'exploitation Unix a

été créé.

<?php echo 'Le timestamp actuel est : ' . time(); ?>

Cette valeur n’est pas affichée au visiteur du site.Elle sert d’intermédiaire à d’autres fonctions pour calculer des durées, des dates passées ou futures.

Page 165: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 8 - les dates 165

PHP- dates

2. Le timestamp

2.2 la fonction date() et le timestampIl est possible de fournir un second paramètre à date (après les lettres) : le

timestamp sur lequel vous voulez obtenir des informations.

<?php // e8_1.php$timestamp = 1080513608;echo "<p>Voici plein d'infos sur mon timestamp :</p>";echo "<ul>";echo "<li>toto a écrit ces lignes le ". date('d/m/Y', $timestamp)."</li>";echo "<li>Ce jour-là était un ". date('l', $timestamp)."</li>";echo "<li>Il était exactement : ". date('H\h i\m\i\n s\s', $timestamp)."</li>";echo "<li>Il y avait ". date('t', $timestamp)."jours ce mois-là.</li>";echo "<li>C'était le ".date('z', $timestamp). "ème jour de l'année </li>";echo "</ul>";?>

Par exemple, lorsque vous écrirez une news, il vous suffira d'enregistrer juste le timestamp, et vous serez capables grâce à ce nombre de ressortir toutes les infos possibles et imaginables dessus : le jour où la news a été postée, l'heure qu'il était etc...

Page 166: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 8 - les dates 166

PHP- dates

2. Le timestamp

2.3 la fonction mktime() et le timestamp

<?php //e8_2.php$vieux_timestamp = mktime(13, 45, 26, 2, 5, 1998);echo 'Le timestamp du 05/02/1998 à 13h 45min 26s était : ' . $vieux_timestamp;?>

Utilité : calcul de la durée entre 2 dates

<?php //e8_3.php$timespasse = mktime(13, 45, 26, 2, 5, 1998);$timejour=time();$duree=$timejour - timepasse;echo "entre le 05/02/1998 à 13h 45min 26s et maintenant il s'est écoulé : " .$duree."secondes";?>

Je veux le timestamp du 5 Février 1998 à 13h 45min 26s

Page 167: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 8 - les dates 167

PHP- dates

2. Le timestamp

2.4 limites

• L’inconvénient de ce système est de fournir des timestamp négatifs pour des dates antérieures à 1970 !

• le timestamp est celui calculé côté serveur , il n’est pas forcément identique à celui du poste client.

• le timestamp devient de plus en plus gros, et ce nombre sera tellement gros en 2037 que ça ne marchera plus.

Page 168: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 8 - les dates 168

PHP- dates

3. La fonction checkdate()

//e8_4.php<form method="post" action="e8_4bis.php" ><legend>Entrez votre date de naissance JJ/MM/AAAA</legend><input type = "text" name = "date"/><input type ="submit" value = "envoi"/></form>

<?php //e8_4bis.php$date = $_POST["date"];$tabdate = explode("/",$date);if(!checkdate($tabdate [1],$tabdate[0],$tabdate[2])) echo "la date n'est pas valide. recommencez <hr/> ";else echo "<hr/> la date $date est valide! <hr/>";?>

La chaîne de caractères contenue dans $_POST[" date "] est décomposée grâce à la fonction explode(). Chaque élément de la date est récupéré dans un élément de tableau. Ces données sont ensuite transmises à la fonction checkdate() dans l’ordre moi, jour, année.

Page 169: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 8 - les dates 169

PHP- dates

4. La date en français

<?php //e8_5.php// afficher la date en français$semaine= array (" dimanche "," lundi "," mardi ", " mercredi ", " jeudi "," vendredi "," samedi ");$mois= array (1=>" janvier"," février ", " mars ", " avril ", " mai ", " juin ", " juillet ", " aout ", " septembre ", " octobre", " novembre ", " décembre ");echo "aujourd'hui ".$semaine[date ('w')]." ".date('j')." ". $mois[date('n')]." ".date('Y')."<br/>";?>

Il serait préférable de définir une fonction qui réalise ce traitement

- On récupère le no du jour de la semaine avec date(‘j’)- On récupère le no du mois avec date(‘n’)

Page 170: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 11 - les fichiers 170

PHP – FICHIERS.1. Création d’un fichier// teste l’existence d’un fichier

If (!file_exists(‘nomfich’)// crée un fichier vide avec date de dernière utilisation// nb le fichier sera accessible en écriture

{ touch(nomdufich,[timestamp]);} ex. touch(‘monfich.txt,time())2. Ouverture d’un fichier$id_file=fopen($nomfich,$mode,[$Boolpath])$nomfich = ‘monfich.txt’ ou ‘..\chemin\nomfich ou ‘http://site.be/ch/nf’$mode = mode d’ouverture‘r’ lecture ‘r+’ lecture-écriture(dbt fich) ‘w’ écriture dbt fich ‘w+’ lecture-écriture dbt fich ‘a’ ajout créé si inex ‘a+’ ajout-lecture créé si inex$BoolPath : si TRUEla recherche du fichier est étendue à tous les sous

répertoires

Page 171: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 11 - les fichiers 171

PHP – FICHIERS.$id_file = identifiant du fichier

Sera utilisé comme premier paramètre de la plupart des fonctions de manipulation du fichier.

Il est de la forme Resource id#n oµ n est un entier incrémenté de 1

En cas d’échec à l’ouverture $id_file = FALSE

NB Pour créer un fichier temporairefichier temporaire (pendant la durée de la session en cours) on utilisera : $id_file = tmpfile()

3. Fermeture d’un fichier

$Boolresu = fclose($id_file)

Page 172: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 11 - les fichiers 172

PHP – FICHIERS.4. Verrouillage des fichiers

$boolresu = flock($id_file, Kmodeverrou)

Kmodeverrou = Constante représentant le mode de verrou demandé• LOCK_SH bloque l’écriture par les autres scripts• LOCK_EX bloque l’écriture et la lecture par les autres scripts• LOCK_UN Enlève les verrous précédemment mis !!! Ne pas oublier!!! Ne pas oublier

$boolresu retourne FALSE si le verrou demandé n’a pu être obtenu

5. Ecriture dans un fichier

fwrite($id_file, $chaine,[N]) ou fputs($id_file, $chaine,[N])

Si N est précisé, seuls les N premiers caractères de la chaîne seront écrits.

Page 173: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 11 - les fichiers 173

PHP – FICHIERS.6. Formatage des données

On sépare les différents champs par un séparateur et on ajoye un fin d’enregistrement

Exemple : fwrite($id_file,$nom. ";"  .$prenom.  ";“ .$adr . " \n")

7. Lecture des fichiers

Plusieurs fonctions sont disponibles =

fgets() fread() fseek() fgetcvs() readfile() passthru()

7.1 Lecture d’un record à la fois

$chaine = fgets($id_file, Nbytes)

Lecture depuis le début de N bytes. La lecture s’arrête après N bytes ou si \n est rencontré ou fin de fichier rencontrée.

Page 174: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 11 - les fichiers 174

PHP – FICHIERS.Exemple :

while($ligne=fgets($id_file,100)

{

$tab=explode(‘;’,$ligne);

Echo ‘nom: ‘ . $tab[0] . ‘ prénom: ‘ . $tab[1] . ‘adr: ‘ . $tab[2];

}

NB voir aussi fgetcvs() 7.5

7.2 Lecture d’un nombre détermine de caractères

$chaine = fread($id_file, N)

Lit N caractères depuis le début du fichier sauf si \n est rencontré ou la fin de fichier rencontrée.

NB utilisé pour lire des records de longueurs fixes sans fin d’enregistrement

Page 175: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 11 - les fichiers 175

PHP – FICHIERS.7.3 Lecture d’un caractère à la fois

$chaine = fgetc($id_file)

Lit 1 caractère depuis le début du fichier sauf si fin de fichier rencontrée.

7.4 Lecture d’une partie de fichier

On peut faire débuter la lecture à n’importe quel endroit du fichier.

$boolval fseek($id_file, N) // positionne le pointeur sur le Nème byte

N = Nbre d’octects à partir du début du fichier à partir d’où doit commencer la lecture. !!! Ne fait aucune lecture

$boolval = FALSE si erreur

On peut remettre le pointeur au début du fichier avec rewind($id_file)

La fonction filesize($id_file) retourne le Nbre de bytes du fichier

Page 176: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 11 - les fichiers 176

PHP – FICHIERS.7.5 Lecture de données formatées

$array = fgetcvs($id_file,NbreBytes,$separateur)

Retourne directement une table (comme avec la fonction explode()) des différentes valeurs en utilisant le séparateur indiqué

Lit un maximum de N bytes, s’arrête à la fin du fichier ou à la rencontre de /n (fin d’enregistrement)

7.6 Lecture de la totalité d’un fichier

Si on doit lire tout un fichier (par exemple page web statique) sans analyser son contenu on utilisera :

readfile($nomfichier, [Boolpath])

Tout le contenu du fichier est directement envoyé au browser (comme l’aurait fait echo)

Si Boolpath = TRUE le fichier sera recherché dans tous les sous-répertoires

NB Le fichier ne doit pas être ouvert préalablement

Page 177: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 11 - les fichiers 177

PHP – FICHIERS.

On peut également utiliser : $tableau = file($nomdufichier)

Lit tout le fichier et retourne un tableau dont chaque élément est constitué d’une seule ligne du fichier (/n)

Ou encore :

$id_file=fopen($nomfich,$mode) // le fichier doit être ouvert !!!

fpassthru($id_file)

Tout le contenu du fichier est directement envoyé au browser (comme

l’aurait fait echo)NB Il ne faut pas fermer le fichier, il l’est automatiquement à la fin de

fpassthru()

Page 178: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 11 - les fichiers 178

PHP – FICHIERS.8. Modification des fichiers$boolret = copy($fn1,$fn2) //copier le fichier fn1 sur fn2$boolret = rename($fn1,$fn2) //renommer le fichier fn1 en fn2$boolret = unlink($fn1) //supprimer le fichier fn1$boolret = file_exists($fn1,$fn2) //Vérifier la présence de fn1$intret = filesize($fn1) // taille en bytes de fn1$boolret = is_file($fn1) //Vérifier si fn1 est un fichier (pas un répertoire)$boolret = is_readable($fn1) //Vérifier si fn1 est accessible en lecture$boolret = is_uploaded_file($fn1) //Vérifier si fn1 provient d’un upload$string = filetype($fn1) // retourne ‘file’ si fichier, ‘dir’ si répertoire$integer = fileatime($fn1) // retourne dernier accès (timestamp) de fn1$integer = filemtime($fn1) // retourne dern. mod data de fn1$integer = filectime($fn1) // retourne dernier mod des permissions de fn1$string = realpath($fn1) // retourne chemin complet de fn1$string = basename($url) // retourne le nom du fichier de l’URL complet

Page 179: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 12-1 - les cookies 179

PHP – COOKIES.1. Définition

Petits fichiers pouvant être écrits par un script sur l’ordinateur du visiteur d’un site.

Limites : • Un site déterminé ne peut écrire que max 20 cookies sur le même

poste client.• Chaque cookie ne peut dépasseer 4K• Un cookie n’est accessible que par le site qui l’a écrit

• Ecriture des cookies

Attention : aucun contenu HTML ne peut avoir été envoyé avant l’écriture d’un cookie

Page 180: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 12-1 - les cookies 180

PHP – COOKIES.$boolean = setcookie($nomcookie, $valeur, $datefin,$chemin,$domaine,

$securite);

$nomcookie : nom que l’on donne au cookie (chaîne)

$valeur : valeur que l’on donne au cookue (chaîne)

$datefin : entier (timestamp) servant à déterminer la date d’expitation du cookie. Si absent -> valable uniquement pendant la session

exemple : $datefin = time()+86400; // valable 24 heures

$chemin : chemin d’accès des scripts autorisés à accéder au cookie (facultatif)

$domaine : nom complet du domainequi peut accéder au cookie (facultatif) ex : www.isat.be

$securite : TRUE transmis par https, FALSE par http (défaut)

NB setcookie() renvoie FALSE en cas de problème

Exemple : $ok=setcookie( "nom" , " lorent",time()+86400, " /client/fact ");

Page 181: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 12-1 - les cookies 181

PHP – COOKIES.3. Supprimer un cookie

Il suffit d’appeler setcookie($nomcookie) sans donner de valeur

4. Rendre un cookie innaccessible

Il suffit de lui donner une date d’expirantion antérieure à la date actuelle

Exemple : $ok=setcookie( "nom" , " lorent",time()-3600);

5. Plusieurs valeurs sous un même nom de cookie

setcookie("client[nom]" , " lorent",time()+86400, ); // attention : les clé

setcookie("client[prenom]" , " Jean",time()+86400, );// sans guillemets !!!

Ou bien :

foreach($tablassoc as $cle=>$valeur) //. À partir d’un tableau associatif

{setcookie("client[$cle]" , $valeur,time()+86400, );}

Page 182: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 12-1 - les cookies 182

PHP – COOKIES.6. Lire un cookie

Les cookies sont accessibles via la variable superglobale $_COOKIE

Il s’agit d’un tableau associatif ayant comme clé le nom du cookie

Par exemple : $nom = $_COOKIE["nom" ];

Ou bien :

$prenom = $_COOKIE [ "client" ] [“prenom" ];

Ou encore :

foreach($_COOKIE[" client" ] as $cle=>$valeur)

{ $tablassoc[$cle] = $valeur ; }

Page 183: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 12-2 les sessions 183

PHP – SESSIONS.1. DéfinitionMécanisme qui permet de conserver des informations provenant d’une

page web, pour être utilisées dans d’autres pages du site par un même visiteur. Aucun autre visiteur n’a accès à ces informations.

• Mise en œuvre des sessions• En début de chaque page ayant accès aux variables de session, il

faut appeler la fonction $ok=session_start();• Chaque utilisateur reçoit un sessionIDsessionID (SID) qui sera transmis

d’une page à l’autre de deux manières différentes :– Soit dans un cookieSoit dans un cookie– Soit en étant ajouté à l’URL de la pageSoit en étant ajouté à l’URL de la page

• Le script définit les variables de session et y accède en utilisant le tableau associatif superglobal $_SESSION dont les clés sont les noms des variables Exemple : $_SESSION[‘mavar’] = 25;

• Fermeture de la session et destruction des variables de sessionsession_unset(); session_destroy;

Page 184: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 12-2 les sessions 184

PHP – SESSIONS.3. RemarquesLes variables de session sont stockées sur le serveur et non sur le poste

client. Elles sont en général stockées dans un dossier /tmp ou /sessions. Ces fichier on pour nom sess_xxxxxxxx (où xxxxxxx est le sessionID)

4. Session avec cookiesIl s’agit d’une manière simple de transmettre le sessionID (SID)d’une

page à l’autre du site. Pour utiliser cette méthode il faut 3 conditions :

• php.in session.use_cookies on• Le browser doit accepter les cookies• Chaque page du site commence par l’appel de session_start()NB si dans php.ini on a configuré session.auto_start on, le serveur

générera automatiquement un session_start() pour toutes les pages du site

Page 185: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 12-2 les sessions 185

PHP – SESSIONS.3. RemarquesLes variables de session sont stockées sur le serveur et non sur le poste

client. Elles sont en général stockées dans un dossier /tmp ou /sessions. Ces fichier on pour nom sess_xxxxxxxx (où xxxxxxx est le sessionID)

4. Session avec cookiesIl s’agit d’une manière simple de transmettre le sessionIDsessionID d’une page à

l’autre du site. Pour utiliser cette méthode il faut 3 conditions :• php.ini session.use_cookies on• Le browser doit accepter les cookies !!!• Chaque page du site commence par l’appel de session_start()

NB si dans php.ini on a configuré session.auto_start on, le serveur générera automatiquement un session_start() pour toutes les pages du site (pas recommandé !!!)

Page 186: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 12-2 les sessions 186

PHP – SESSIONS.5. Session sans cookiesLe nom de la session par défaut est PHPSESSID et l’identifiant aléatoire

de la session sont contenus dans la constante SID sous la forme PHPSESSID=xxxxxxxxxxxxxxxLa transmission du SID se fera par son ajoute dans l’url de la manière

suivante : <a href=‘page2.php?<?php echo SID ?>’> vers page2</a>

6. Autres fonctions pour les sessions$name = session_name(); // retourne le nom de la sessionsession_name(‘nouveaunom’) ;// définit un nouveau nom pour la session$id = session_id(); // retourne l’identifiant de la sessionsession_id(‘newID’); // définit un nouveau sessionID$path=session_save_path();// retourne le chemin du serveur où sont

stockées les données de la sessionsession_write_close(); // écrit les variables session sur le serveur et

ferme la session

Page 187: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 12-2 les sessions 187

PHP – SESSIONS.7. Afficher toutes les variables de session

<?php// begin the sessionsession_start();

// loop through the session array with foreachforeach($_SESSION as $key=>$value)    {    // and print out the values    echo 'The value of $_SESSION['."'".$key."'".'] is '."'".$value."'".' <br />';    }?>

Page 188: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 12-2 les sessions 188

PHP – SESSIONS.8. Comment sont gérées les variables de session

<?php/*** begin a session ***/session_start();

if(isset($_COOKIE['PHPSESSID']))        {        echo 'The session ID has been store in a cookie';        }if (defined(SID))        {        echo 'The session ID has been stored in the query string';        }?>

Page 189: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 12-3 - les E-mails 189

PHP – E-MAIL.1. Fonction de base d’envoi d’un mail

$ok = mail($dest, $objet, $texte, [$entete])

$dest = adresse mail du destinataire ( si plusieurs viurgules)

$objet = objet du mail

$texte = contenu ou format texte ou HTML

$entete (facultatif) = à utiliser si le format n’est pas texte ni HTML ou si ajoute de copie confirme, etc …

les différentes en-têtes sont séparées par :• \n sous serveur UNIX• \r\n sou serveur Windows

Mail() retrourne FALSE si problème

Page 190: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 12-3 - les E-mails 190

PHP – E-MAIL.2. Options de mail (4ème paramètre) - MAIL

From: adresse mail de l’expéditeur

cc: adresses des destinaires des copies

cci : idem (adresses cachées)

Reply-To: adresse de réponse

X-Mailer: nom du logiciel d’envoi du courrier

Date: date de l’email au format JJ MM AAAA h:m:s +0N00 (N est le décalage horaire)

Exemple :

$entete = ‘From:[email protected]’;

$entete .=‘cc:[email protected],[email protected]’;

$entete .=‘Date:’ . Date("D, j M Y H:i:s +0100 ");

Page 191: PHP- Table des matières 1.Introduction 2.Les données 3.Les instructions de contrôle 4.Les chaînes de caractères 5.Les tableaux 6.Les formulaires 7.Les

PHP chap 12-3 - les E-mails 191

PHP – E-MAIL.2. Options de mail (4ème paramètre) - MIME

Les types MIME (Multipurpose Internet Mail Extension) permettent d’insérer des images, sons etc … dans les mails.

MIME-Version: 1.0 = version MIME utilisée (doit être le 1er)

Content-Type: = type du contenu du mail

ex. Content-Type: text/html;charset=iso-8859-1

Content-Transfer-Encoding: = mode de codage du document

ex. Content-Transfer-Encoding: 8bit