Vous êtes sur la page 1sur 66

Support de cours PHP

Qu'est ce que PHP ?


PHP (acronyme récursif pour PHP: Hypertext Preprocessor, est un langage de scripts libre
principalement utilisé pour produire des pages web dynamiques via un serveur HTTP, mais
pouvant également fonctionner comme n'importe quel langage interprété de façon locale, en
exécutant les programmes en ligne de commande. PHP est un langage impératif disposant depuis
la version 5 de fonctionnalités de modèle objet complètes. En raison de la richesse de sa
bibliothèque, on désigne parfois PHP comme une plate-forme plus qu'un simple langage.

Historique
Inventé par Rasmus Lerdorf , il trouvait le CGI trop long, c'est pour ça qu'il a développé PHP, il a
publié la première version en 1993 et 1995 selon les sites.
Ce Langage est basé sur le principe du client serveur

Principe du client serveur


On peut le résumer en 3 étapes :

1. J'écris du code en PHP dans mon éditeur préféré.


2. A l'affichage dans mon navigateur, ce code est envoyé puis interprété sur un serveur gérant
PHP
3. Enfin mon navigateur me renvoie du code HTML et non PHP (pour des raisons de
sécurité)

Les bases de PHP


De quoi ai-je besoin ?
Pour éditer notre code, l'interpréter et visualiser le résultat, nous aurons besoin :

1. Un éditeur de code PHP (Notepad++, Brackets, Netbeans ...)


2. Un serveur web qui gére PHP et MySQL, ou un serveur d'évaluation ( tel que Wamp,
Xamp ou EasyPHP)
3. Différents navigateurs pour tester le rendu de nos pages (Firefox, Chrome, Internet
explorer, safari ... )

Pour ce qui me concerne, je travaille avec Brackets et Wamp.


Téléchargements des logiciels

1. Notepad ++ ou Brackets ou Netbeans


2. Wamp

Quelques règles à respecter !


Pour chacun de vos projets PHP en local, il faudra créer un dossier à la racine de votre répertoire
"www" contenu dans Wamp.
Sous Windows : C:\wamp\www\
Exemple : C:\wamp\www\formation\
Pour afficher le rendu de ma page dans une navigateur, il faudra consulter cette url : :
http://localhost/formation/index.php
Le nom de votre répertoire ne doit pas contenir d'espaces ni de caractères spéciaux, je ne
reviendrai pas là dessus.

Ecrire du code PHP


Pour que vos fichiers en PHP soient interprétés, il faut leur ajouter l'extension ".php"
Pour notre 1er exemple, nous pouvons le nommer index.php et l'enregistrer dans le dossier formation que nous
avons crée précédemment.

Exemple : "index.php".
Pour indiquer que vous écrivez du code PHP, vous devez ajouter ces 2 balises :
<?php

?>

Afficher les informations sur la configuration de PHP


phpinfo() permet d'afficher les informations sur la configuration de PHP

Voir le résultat
<?php
phpinfo();
?>

Afficher du texte avec echo


L’instruction echo permet d'afficher un élément

Bonjour
<?php
echo "Bonjour";
?>
Les commentaires
Les commentaires permettent de vous repérer dans votre code PHP, vous pouvez l'écrire
différemment selon le cas, regarder l'exemple ci dessous

<?php
// Commentaire sur 1 ligne
# Commentaire écrit à la Unix
/*
Commentaires sur plusieurs lignes
*/
?>

Les caractères d'échappement


Le caractère antislash a de nombreuses utilisations. En premier lieu, s'il est suivi d'un caractère
non alphanumérique, il ne prendra pas la signification spéciale qui y est rattachée. Cette utilisation
de l'antislash comme caractère de protection s'applique à l'intérieur et à l'extérieur des classes de
caractères.

<?php
// Placer le caractére d'échappement devant le caracrtére guillemet
echo " Bonjour, \"<b>Jean</b>\" , nous te souhaitons une bonne journee ";
// Autre exemple
echo "<img src=\"images/photo.jpg\" width=\"100\" height=\"40\" alt=\"Photo\" />";
?>

Exemple

Bonjour, "Jean" , nous te souhaitons une bonne journée

Les séquences d'échappement, quant à elles, font de la mise en page

séquence effet

\t insère une tabulation

\r effectue un retour chariot

\n effectue un retour à la ligne

si vos séquences d'échappement ne fonctionnent pas, encadrez votre code des balises HTML <pre> et </pre>.
Les variables en PHP
Dans ce tutoriel, nous allons aborder les variables en PHP

Définition
C'est une petite information stockée en mémoire temporairement. Ca n'a pas une grande durée de
vie.
En PHP, la variable (l'information) existe tant que la page est en cours de génération.
Dés que la page PHP est générée, toutes les variables sont supprimées de la mémoire car elles ne
servent plus à rien.
Ce n'est donc pas un fichier qui reste stocké sur le disque dur mais une petite information
temporaire.

Déclaration et initialisation d'une variable


En PHP, les variables sont représentées par un signe dollar "$" suivi du nom de la variable. Le
nom est sensible à la casse.
Une variable est toujours constituée de 2 choses :

 Son nom : pour pouvoir la reconnaître, vous devez donner un nom à votre variable précédé
du caractère "$", Exemple $Prenom
 Sa valeur : c'est l'information qu'elle contient, qui peut changer. Par exemple "toto".

L'affectation se fait toujours de la droite vers la gauche.


<?php
$Prenom="toto"; // La variable $Prenom a comme valeur "toto"

$a=$a+$b; // La variable $a a la valeur de la somme de $a + $b


$a-=$b; // La variable $a a la valeur de $b
?>

Mon petit conseil


Donnez un nom évocateur à vos variables, les noms exotiques seront sources de perte de temps si vous êtes
amener à redévelopper ce script ultérieurement.

La syntaxe correcte pour nommer des variables

Erreur Correct Explications

variable $variable Une variable doit commencer par $

$Variable 1 $Variable1 Les espaces sont interdits

$variable-suite $variable_suite Le tiret est interdit


$-variable $_variable Le tiret est interdit

$2variable $variable2 Il ne peut y avoir de chiffre aprés le $

Les types de données


Une variable peut contenir différents types de données

1. Chaînes de caractère
Une chaîne (ou séquence) de caractéres doit être encadrée de guillemets :

 simples (' ') si elle ne contient rien qui nécessite d'être échappé
 doubles (" ") si l'on veut que les séquences d'échappement et les variables qu'elle contient
soient interprétées (on parle de "substitution de variables") :

<?php>
// Type string, permet d'afficher un texte, ne pas oublier les '' ou ""
$Prenom="toto";
$Prenom='toto';
?>
toto

2. Entiers
Un entier (integer, ou int) est un nombre de l'ensemble des entiers naturels {..., -2, -1, 0, 1, 2, ...}.

On peut l'exprimer de trois manières:


<?php
$a = 1234; // nombre entier en base décimale
$a = 02322; // le même en base octale, préfixé 0
$a = 0x4D2; // le même en base hexadécimale, préfixé 0x
?>
<?php
$Valeur=123;
$Valeur1=1000/$Valeur;
$Valeur4=$Valeur+$Valeur1;
<?php
@$b = 10/0; // En cas d'erreur, le @ permet de ne pas afficher de message d'erreur
echo @$b;
?>
2.1 Les opérateurs arithmétiques

signe exemple description

+ (addition) $a + $b additionne $a et $b

- (soustraction) $a - $b soustrait $b de $a

* (multiplication) $a * $b multiplie $a par $b

/ (division) $a / $b divise $a par $b

% (modulo) $a % $b reste de la division de $a par $b

2.2 Faire un calcul avec PHP


<?php
$a=1+4;
echo $a; // Résultat = 5
$b=10-$a;
echo $b; // Résultat = 5
$c=10*3;
echo $c; // Résultat = 30
$d=$b/2;
echo $d; // Résultat = 2.5
$e=100-(10*2);
echo $e; // Résultat = 80
?>
Exemple de calcul
<?php
$quantite=15;
$prixht=12;
$tva=1.196;
$totalht=$quantite*$prixht;
$totalttc=$totalht*$tva;
$montantva=$totalttc-$totalht;
echo "Le montant HT est de $totalht <br />";
echo "Le montant TTC est de $totalttc <br />";
echo "Le montant de TVA est de $montantva";
?>
Exercice sur les calculs en PHP

2.3 Incrémentation décrémentation

++ Ajoute 1 $i ++ (n'est rien d'autre que l'abbréviation de $i=$i+1)

-- Soustrait 1 $i -- (equivalent à $i=$i-1)

<?php
$a = $a+1 ; // identique à la ligne ci dessous
$a ++ ; // Permet d'incrémenter
$a -- ; // Permet de décrémenter
?>

3. Réels
Un nombre réel (float, ou double), appelé aussi "à virgule flottante", peut être exprimé de deux
manières :

<?php
$a = 1.234;
$a = 1.2e3; // Notation scientifique
?>

En PHP, Il faut mettre un point et non une virgule pour les décimales.

4. Booléen
Permet exprimer si quelque chose est vrai (true en anglais), ou si c'est faux (false en anglais)

 Affiche 1 pour true


 N'affiche rien pour false

<?php
$Homme=true; // Boolean, TRUE
$Femme=false; // Boolean, TRUE
echo $Homme; // Affiche 1 "Vrai", la condition est respectée
$a = ($b<100) ; // Le résultat est 1 "Vrai"
echo $a;
>
1

Exercice sur les variables


Déterminer le type de variable
Retourne TRUE (1) si c'est vrai, FALSE (Rien) si c'est faux.

Fonction retourne TRUE si la variable est :

is_array() un tableau

is_bool() de type booléen

is_double() un nombre réel, ou à virgule flottante


alias de is_float()
et de is_real()

is_int() un nombre entier


alias de is_long()

is_null() sans valeur

is_numeric() un nombre, ou une chaîne numérique

is_object() un objet

is_resource() une ressource PHP (pointeur, requête SQL...)

is_scalar() une variable scalaire

is_string() une chaîne de caractére


<?php
$var=10;
echo is_int ($var); // Affiche 1, la variable $var est un entier
?>
1

<?php
$var1="Bonjour";
echo is_string ($var1); // Affiche 1, la variable $var1 est une chaîne de caractére
?>
1

Tester le type de variable avec gettype


gettype permet de tester le type de variable, il ressort (string, int ...)

gettype($var)

<?php
$Prenom="toto"; // Variable string
$Valeur=123; // Variable integer
// Affiche le type de la variable
echo gettype($Prenom);
echo "<br />";
echo gettype($Valeur);
?>

Les constantes en PHP


Définition
Seuls les types de données scalaires peuvent être placés dans une constante : c'est à dire les types
booléen, entier, double et chaîne de caractéres (soit bool, entier, double et string.)

Contrairement à une variable, une constante ne peut pas être redéclarée.


Pour définir des constantes, on utilise la fonction define()
Par convention, un nom de constante s'écrit en majuscule.

Vous pouvez accéder à la valeur d'une constante en spécifiant simplement son nom. Contrairement
aux variables, vous ne devez PAS préfixer le nom de la constante avec $.
Ne pas oublier d'entourer de " " le nom de la constante, sinon elle s'affichera comme du texte.
Initialiser et afficher une constante
<?php
define('CONSTANTE', 'toto');
// Affichage d'une constante, ne pas mettre de $
echo CONSTANTE;
?>

toto

Constantes prédéfinies
Il existe beaucoup de constantes prédéfinies, en voici quelques unes

 __FILE__
 __LINE__
 PHP_VERSION
 PHP_OS

__FILE__

Le chemin complet de la page en cours

<?php echo __FILE__; ?>

/home/conseiw/www/formation/php/03-constantes-php.php

__LINE__

Le numéro de la ligne de la constante

<?php echo "la ligne ", __LINE__, " ne contient aucune erreur ;-)"; ?>

la ligne 97 ne contient aucune erreur

PHP_VERSION

La version de l'analyseur PHP

<?php echo "la version de l'analyseur PHP est la : ", PHP_VERSION; ?>

la version de l'analyseur PHP est la : 5.3.3


PHP_OS

Le système d'exploitation du serveur

<?php echo "le systéme d'exploitation du serveur est ", Linux "?>

le système d'exploitation du serveur est Linux

Exercice sur les constantes

CONSTANTE
toto
Le chemin de la page est /home/conseiw/www/formation/php/03-exercice-
constantes.php
La version de PHP est : 5.3.3
La constante est à la ligne 28

Mise en forme de PHP avec HTML et CSS


Pour mettre en forme votre code PHP, on y insère tout simplement du code HTML ou du code CSS. Nous avons
2 possibilités, soit mettre du HTML et CSS dans le code PHP ou dans le HTML insérer du code PHP

Exemple 1 : du HTML et CSS dans le code PHP


<?php
// Exemple avec HTML
echo "<h1>Bonjour</h1>";
echo "<p><strong>Toto écrit du code PHP</strong></p>";
// Exemple avec CSS
echo "<i class='fa fa-wrench'></i>";
?>

Exemple 2 : du code PHP dans le HTML


<?php
$prenom="Christophe";
?>

<h1>Bonjour <?php echo $prenom;?> <h1>

Par contre, si vous voulez mixer du HTML ou CSS avec des variables en PHP, il va falloir
concaténer les données, nous le verrons dans les exemples ci-dessous..

Concaténation
Définition :
Le terme concaténation (substantif féminin), du latin cum (« avec ») et catena (« chaîne,
liaison »), désigne l'action de mettre bout à bout au moins deux chaînes de caractères.
Source Wikipédia
En PHP, on utilise le. pour concaténer.

Exemple
<?php
$nom = 'Dupont';
$prenom = 'Pierre';
echo $nom.$prenom; //va afficher "DupontPierre"
echo $nom.' '.$prenom; //va afficher "Dupont Pierre"
echo '$nom.$prenom'; //va afficher "$nom.$prenom"
echo '$nom$prenom'; //va afficher $nom$prenom
$nom .= $prenom; //est équivalent à $nom = $nom . $prenom
echo $nom; //affichera "DupontPierre"
$nom = 'Dupont';
$nom .= ' '.$prenom;
echo $nom; //affichera "Dupont Pierre"

$a = 10;
$a.= 30; Le résultat serait 1030
$a=$a.$b; // La variable $a a la valeur de la concaténation de $a et $b
echo $a;
?>

Concaténer des chaines de caractères et des variables


<?php
$tauxeuro=6.5957;
echo "le taux de l'euro est " .$tauxeuro ;
?>

Concaténer des chaines de caractères et des fonctions


<?php
$tauxeuro=6.5957;
echo "le taux de l'euro arrondi est " .round($tauxeuro,2);
?>

Concaténation avec du HTML


<?php
$tauxeuro=6.5957;
echo " <strong>le taux de l'euro arrondi est</strong> " .round($tauxeuro,2);
?>

Concaténation avec du CSS


<?php
$tauxeuro=6.5957;
echo " <p class='alert alert-info'>le taux de l'euro arrondi est ".round($tauxeuro,2) ."</p>";
?>

le taux de l'euro arrondi est 6.6

Exercice sur les concaténations

Concaténation
Bonjour, toto ,je te souhaite une bonne journée
Bonjour, toto, Je te souhaite une bonne journée
le taux de l'euro arrondi est round(6.5957,2)
le taux de l'euro arrondi est 6.6

Concaténation avec du HTML


le taux de l'euro arrondi est 6.6
DupontPierre
Dupont Pierre
$nom.$prenom
$nom$prenom
DupontPierre
Dupont Pierre

Fonctions mathématiques en PHP


Dans cette partie, nous allons utiliser des fonctions mathématiques en PHP

round()
Permet d'arrondir une valeur numérique.

round($var,Nb_decimales)

<?php
$Prix=18.4542215;
echo round($Prix,2); // Arrondi la variable $Prix à 2 décimales
?>
srand()
srand permet d'initialiser le générateur de nombres aléatoires.

rand()
rand permet de générer un nombre aléatoire.

int rand (int $min , int $max)

<?php
srand(); // initialiser le générateur de nombres aléatoires.
$rand1=rand(0,5); // Nombre aléatoire 1, on sort des valeurs aléatoires comprises entre 0
et 5
$rand2=rand(6,9); // Nombre aléatoire 2, on sort des valeurs aléatoires comprises entre 6
et 9
$resultat=$rand1+$rand2; // Calculer la somme

echo "Calculer la somme de ces valeurs " .$rand1 ." + " .$rand2 ." Le total est " .
$resultat;

?>

Exercice rand() et srand()

srand(), rand()
Refaire l'exemple ci-dessous.

Calculer la somme de ces 2 valeurs 5 + 6

Saisir le resultat

Fonctions de date PHP


Dans cette première partie, nous allons utiliser des fonctions en PHP permettant d'agir sur les dates
.
date()
La fonction date permet d'afficher la date et l'heure sous différents formats.

Caractére Signification Exemples de valeurs possibles :

Jour

j Jour du mois sur deux chiffres sans les zéros initiaux 1 à 31

d Jour du mois sur deux chiffres avec un zéro initial en fonction 01 à 31


du jour

l (L Jour de la semaine en anglais Sunday à Saturday


minuscule)

w Jour de la semaine au format numérique 0 (dimanche) à 6 (samedi)

z Jour de l'année 0 à 366

Semaine

W Numéro de semaine dans l'année (les semaines commencent Exemple : 42 (la 42éme semaine de
le lundi) l'année)

Mois

F Mois, textuel, version longue; en anglais, comme January ou January à December


December

m Mois au format numérique, avec zéros initiaux 01 à 12

n Mois sans les zéros initiaux 1 à 12


t Nombre de jours dans le mois 28 à 31

Année

L Est ce que l'année est bissextile 1 si bissextile, 0 sinon.

Y Année sur 4 chiffres Exemples : 1999 et 2003

y Année sur 2 chiffres Exemples : 99 et 03

Heure

a Ante méridien et Post méridien (minuscules) am ou pm

A Ante méridien et Post méridien (majuscules) AM ou PM

g Heure (format 12h) sans les zéros initiaux 1 à 12

G Heure (format 24h) sans les zéros initiaux 0 à 23

h Heure (format 12h) avec les zéros initiaux 01 à 12

H Heure (format 24h) avec les zéros initiaux 00 à 23

s Secondes avec zéros initiaux 00 à 59

i Minutes avec zéros initiaux 00 à 59

I (i l'heure d'été est activée ou pas 1 si oui, 0 sinon.


majuscule)

<?php
echo date("d/m/Y"); // Affiche la date du jour
echo "Il est " . date("H:i:s") ; // Affiche l'heure
?>
Le timestamp PHP
Un timestamp, c'est un nombre.
C'est le nombre de secondes écoulées depuis le 1er Janvier 1970 à Minuit.
Pourquoi depuis le 1er Janvier 1970 à Minuit ? C'est symbolique, il fallait bien prendre un point de
départ.
En fait, ça représente le début de l'époque où le systéme d'exploitation Unix a été créé.
Le 1er Janvier 1970 à Minuit, le timestamp avait pour valeur 0. Aujourd'hui, beaucoup beaucoup
de secondes se sont écoulées
Pour afficher le timestamp de la seconde actuelle, on utilise la fonction
time()
Afficher le timestamp avec time
<?php
echo time(); //Affiche le nombre de secondes écoulées depuis le 1er janvier 1970
?>

Le timestamp avec la fonction date


Il est possible de fournir un second paramétre à date (aprés les lettres) : le timestamp sur lequel
vous voulez obtenir des informations.
Par défaut, date utilise le timestamp actuel : elle renvoie donc l'heure actuelle, le jour actuel etc...
Mais si vous lui donnez un timestamp, elle fera des calculs sur ce moment-là.
Allez, pour faire un test grandeur nature, je vous donne le timestamp qu'il était au moment où j'ai
écrit ces lignes
<?php
$timestamp1=1261774471; // Timestamp affiché quand j'ai écris ce cours
echo date('d/m/Y',$timestamp1);
?>

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...
Récupérer le timestamp à partir d'une date avec mktime
Enfin, une derniére chose qu'il peut être trés utile de savoir faire : vous aimeriez connaître le
timestamp qu'il était le 5 Février 1998 à 13h 45min 26s.
Pour récupérer le timestamp correspondant, on va utiliser la fonction mktime. On va lui donner en
paramétre une date, et elle va nous ressortir le timestamp correspondant.

Cette fonction peut prendre pas mal de paramétres, en voici la liste dans l'ordre :
mktime(heure, minutes, secondes, mois, jour, an, heure d'hiver)

Dans la pratique, vous pouvez oublier le dernier paramétre (heure d'hiver) qui ne vous sera pas
utile en général.
Sachez qu'il faut mettre 1 si l'heure d'hiver est activée, 0 si elle ne l'est pas.
Mais passons. Si on enléve l'heure d'hiver pour éviter de s'embrouiller, il reste 6 paramétres
possibles qu'on retiendra :
Exemple
Je veux toujours le timestamp du 5 Février 1998 à 13h 45min 26s
<?php
$vieux_timestamp = mktime(13, 45, 26, 2, 5, 1998);
echo 'Le timestamp du 05/02/1998 à 13h 45min 26s était : ' . $vieux_timestamp;
?>

getdate()
getdate retourne un tableau associatif contenant les informations de date et d'heure du timestamp
(lorsqu'il est fourni, sinon, le timestamp de la date/heure courante), avec les champs suivants :
array getdate ( int timestamp )

Clé Description Exemple de valeur retournée

"seconds" Représentation numérique des secondes 0 à 59

"minutes" Représentation numérique des minutes 0 à 59

"hours" Représentation numérique des heures 0 à 23

"mday" Représentation numérique du jour du mois courant 1 à 31

"wday" Représentation numérique du jour de la semaine courante 0 (pour Dimanche) à 6 (pour Samedi)

"mon" Représentation numérique du mois 1 à 12

"year" Année, sur 4 chiffres Exemples: 1999 ou 2003

"yday" Représentation numérique du jour de l'année 0 à 365

"weekday" Version texte du jour de la semaine Sunday à Saturday

"month" Version texte du mois, comme January ou March January à December


0 Nombre de secondes depuis l'époque Unix, similaire à la valeur Dépend du systéme, typiquement de -
retournée par la fonction time et utilisée par date . 2147483648 à 2147483647 .

Array ( [seconds] => 9 [minutes] => 2 [hours] => 22 [mday] => 12 [wday] => 0 [mon] => 3 [year] => 2017
[yday] => 70 [weekday] => Sunday [month] => March [0] => 1489352529 )

<?php
$today = getdate();
print_r($today);
?>

print_r affiche des informations à propos d'une variable, de maniére à ce qu'elle soit lisible. Pour
une chaîne, un entier ou un double, la valeur elle même sera affichée.
Pour les tableaux, les valeurs seront présentées dans un format qui montre les clés et les valeurs.
Gardez en tête que print_r place le pointeur de tableau à la fin du tableau. Utilisez reset pour le
ramener au début.

strtotime()
Transforme un texte anglais en timestamp
etourne un timestamp en cas de succès, FALSE sinon.

<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
?>

Exemple
1489352529
968536800

Exercices sur les dates

date()
Exercice 1 : Afficher la date au format français ainsi que l'heure avec les minutes
et les secondes

Nous sommes le 12/03/2017, Il est 22:02:30


Exercice 2 : Afficher le timestamp

Afficher le Timestamp 1489352550

Exercice 3 : Afficher la date avec un timestamp

Afficher la date avec le Timestamp actuel : 12/03/2017

Afficher la date avec un Timestamp différent de l'actuel : 25/12/2009

Exercice 4 : Afficher le timestamp de votre date de naissance

Le Timestamp du 05/10/1975 à 12:00 est : 181738800

Exercice 5 : Afficher un tableau associatif (array) contenant les informations de


date et d'heure du timestamp actuel.

Array ( [seconds] => 30 [minutes] => 2 [hours] => 22 [mday] => 12 [wday] => 0
[mon] => 3 [year] => 2017 [yday] => 70 [weekday] => Sunday [month] => March [0]
=> 1489352550 )

Rappel
Caractére Signification

Jour

j Jour du mois sur deux chiffres sans les zéros initiaux

d Jour du mois sur deux chiffres avec un zéro initial en fonction du jour

l (L minuscule) Jour de la semaine en anglais

w Jour de la semaine au format numérique

z Jour de l'année

Semaine

W Numéro de semaine dans l'année (les semaines commencent le lundi)

Mois

F Mois, textuel, version longue; en anglais, comme January ou December


m Mois au format numérique, avec zéros initiaux

n Mois sans les zéros initiaux

t Nombre de jours dans le mois

Année

L Est ce que l'année est bissextile

Y Année sur 4 chiffres

y Année sur 2 chiffres

Heure

a Ante méridien et Post méridien (minuscules)

A Ante méridien et Post méridien (majuscules)

g Heure (format 12h) sans les zéros initiaux

G Heure (format 24h) sans les zéros initiaux

h Heure (format 12h) avec les zéros initiaux

H Heure (format 24h) avec les zéros initiaux

s Secondes avec zéros initiaux

i Minutes avec zéros initiaux

I (i majuscule) l'heure d'été est activée ou pas 1 si oui, 0 sinon.

Fonctions de texte en PHP


Dans cette partie, nous allons utiliser ces quelques fonctions de texte.
 implode(), Rassemble les éléments d'un tableau en une chaîne
 explode(), Coupe une chaîne en segments.
 str_replace(), Remplace toutes les occurrences dans une chaîne
 strlen(), Calcule la taille d'une chaîne.
 strpos(), Trouve la position d'un caractére dans une chaîne.
 substr(), Retourne la partie extraite de la chaîne dans le segment de string défini
par start et length ou FALSE si une erreur survient

implode()
Rassemble les éléments d'un tableau en une chaîne.

string implode ( string $glue , array $pieces )

glue

Par défaut, une chaîne vide.


pieces

Le tableau de chaînes à rassembler.


Valeurs de retour
Retourne une chaîne contenant la représentation en chaîne de caractères de tous les éléments du
tableau pieces, dans le même ordre, avec la chaîne glue, placée entre deux éléments.
Exemple 1
<?php
$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);

echo $comma_separated; // lastname,email,phone

// Chaîne vide lors de l'emploi d'un tableau vide :


var_dump(implode('hello', array())); // string(0) ""
?>

Exemple 2
<?php
// Permet de récupérer les différentes valeurs du $_POST['id_appreciations_fk'] contenu
dans des checkboxs, que nous séparrons par une virgule
$id_appreciations_fk=implode(',',$_POST['id_appreciations_fk']);
?>

Exercice implode, insérer plusieurs valeurs dans une table

explode()
Coupe une chaîne en segments.
array explode ( string $delimiter , string $string [, int $limit = PHP_INT_MAX] )

delimiter

Le séparateur.
string

La chaîne initiale.
limit

Si limit est défini et positif,le tableau retourné contient, au maximum, limit éléments, et le
dernier élément contiendra le reste de la chaîne.
Si le paramètre limit est négatif, tous les éléments, excepté les -limit derniers éléments sont
retournés.
Si limit vaut zéro, il est traité comme valant 1.
<?php
// Exemple 1
$Texte = "Bonjour tout le momde ";
$pieces = explode(" ", $Texte);
echo $pieces[0] ." "; // Bonjour
echo $pieces[1]; // tout
?>

Bonjour tout

Exemple 2
<?php
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // foo
echo $pass; // *
?>

foo*

Exemple 3 avec une boucle foreach


<?php
$id_q3_fk=explode(',',$row_Enquete['id_q3_fk']);

foreach ($id_q3_fk as $valeur){


$q3 = mysqli_query($bdd, "SELECT * FROM question3 WHERE id_q3=".$valeur."") or
die(mysqli_error($bdd));
$row_q3 = mysql_fetch_assoc($q3);

echo $row_q3['question3']."<br>";
}
?>

Exercice avec explode Exercice avec explode et base de données


str_replace()
Remplace toutes les occurrences dans une chaîne

str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

search

La valeur à chercher, autrement connue comme le masque. Un tableau peut être utilisé
pour désigner plusieurs masques.
replace

La valeur de remplacement à substituer aux valeurs trouvées. Un tableau peut être utilisé
pour désigner plusieurs valeurs de remplacement.
subject

La chaîne de caractéres ou le tableau sur lequel on va effectuer la recherche et le


remplacement, aussi connu sous le nom de haystack.
Si subject est un tableau, alors le remplacement se fera sur chaque élément de celui-ci, et la
valeur retournée sera aussi un tableau.
count

Si fournie, cette variable contiendra le nombre de remplacements effectués.


<?php
$texte="Voici un texte <br> Encore un texte<br> Encore un texte";
echo $texte;
?>

Voici un texte
Encore un texte
Encore un texte

Maintenant on remplace le <br> par un espace avec str_replace :


<?php
$texte="Voici un texte <br> Encore un texte<br> Encore un texte";
// str_replace recherche la chaîne de caractére "<br>" et la remplace par " " rien
echo str_replace("<br>"," ",$texte);
?>

Voici un texte Encore un texte Encore un texte

strlen()
Calcule la taille d'une chaîne.

int strlen( string $string)

<?php
$str = 'abcdef';
echo strlen($str); // 6

$str = ' ab cd ';


echo strlen($str); // 7
?>

strpos()
Trouve la position d'un caractére dans une chaîne.
int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

Retourne la position numérique de la premiére occurrence de needle dans la chaîne de


caractéres haystack.
Liste de paramétres
haystack

La chaîne dans laquelle on doit chercher.


needle

Si needle n'est pas une chaîne, il est converti en entier, et utilisé comme caractére de code
ASCII correspondant.
offset

Le paramétre optionnel offset vous permet de spécifier à partir de quel caractére


dans haystack vous souhaitez commencer la recherche. La position retournée sera toujours
relative au début de la chaîne haystack.
Valeurs de retour
Retourne la position, sous la forme d'un entier. Si needle n'est pas
trouvé, strpos() retournera FALSE.
<?php
$Chaine="Bonjour à tous";
$Affiche=strpos($Chaine,"j");
echo $Affiche;
?>

substr()
Retourne la partie extraite de la chaîne dans le segment de string défini
par start et length ou FALSE si une erreur survient

substr ( string $string , int $start [, int $length ] )

string
La chaîne d'entrée.
start
Si start est positif, la chaîne retournée commencera au caractére numéro start, dans la
chaîne string. Le premier caractére est numéroté zéro. Actuellement, dans la chaîne 'abcdef', le
caractére à la position 0 est 'a', le caractére à la position 2 est 'c', et ainsi de suite.
Si start est négatif, la chaîne retournée commencera au caractére numéro start à compter de la fin
de la chaîne string.
Si string est plus petit ou égal à start caractéres de long, FALSE sera retourné.
length
Si length est fourni et est positif, la chaîne retournée contiendra au plus length caractéres, en
commençant à partir du caractére start (en fonction de la taille de la chaîne string).
Si length est fourni et négatif, alors le même nombre de caractéres sera omis, en partant de la fin
de la chaîne string. Si start représente une position hors de la chaîne, une chaîne vide sera
retournée.
Si le paramétre length est fourni et vaut 0, FALSE ou NULL, une chaîne vide sera retournée.
Si length est omis, la sous chaine commençant à partir de start jusqu'à la fin sera retournée.
Exemple avec start négatif
<?php
$rest = substr("abcdef", -1); // retourne "f"
$rest = substr("abcdef", -2); // retourne "ef"
$rest = substr("abcdef", -3, 1); // retourne "d"
?>

Exemple avec length négatif


<?php
$rest = substr("abcdef", 0, -1); // retourne "abcde"
$rest = substr("abcdef", 2, -1); // retourne "cde"
$rest = substr("abcdef", 4, -4); // retourne ""
$rest = substr("abcdef", -3, -1); // retourne "de"
?>
<?php
echo substr('abcdef', 1); // bcdef
echo substr('abcdef', 1, 3); // bcd
echo substr('abcdef', 0, 4); // abcd
echo substr('abcdef', 0, 8); // abcdef
echo substr('abcdef', -1, 1); // f
// Accéder à un simple caractére dans une chaîne
// peut également être réalisé en utilisant des crochets
$string = 'abcdef';
echo $string[0]; // a
echo $string[3]; // d
echo $string[strlen($string)-1]; // f
?>

Autres fonctions pratiques en PHP


Dans ce tutoriel, nous aborderons divers fonctions très pratiques en php comme :
include, require, require_once et mail

inclure du code PHP


include()

include('fichier.inc.php')

La fonction include() est similaire à require(), à ceci prés qu'avec include() le


traitement ne s'interrompra pas en cas d'erreur, et le reste de la page s'affichera
normalement.

En cas d'erreur avec include() le script continuera de s'éxecuter, il n'émettra


qu'une alerte de type E_WARNING
<?php
include('erreur.inc.php'); // Cette page n'existe pas
?>

require()
La fonction require() appelle et exécute un code contenu dans un fichier externe.
require permet à la différence d'include de couper l'exécution du script PHP si le
fichier à inclure n'a pu être inclus.
En cas d'erreur, le script se coupera complétement
<?php
require('fichier.inc.php'); // Coupe l'exécution du script PHP si le fichier à inclure n'a
pu être inclus
?>

Par convention on met un ".inc" avant le ".php" pour indiquer que le fichier est à
inclure.

require_once()

require_once('fichier.inc.php')

L'instruction require_once() est identique à require() mise à part que PHP


Vérifie si le fichier a déjà été inclus et si c'est le cas, ne l'inclut pas une deuxiéme
fois.

<?php
require_once('fichier.inc.php');
// Vérifie si le fichier a déjà été inclus et si c'est le cas, ne l'inclut pas une
deuxiéme fois
?>

Exercice

mail()
La fonction mail permet comme son nom l'indique : l'envoi d'emails

mail ( $to , $subject , $message [, string $additional_headers [, string


$additional_parameters ]] )

<?php
$destinataire="toto@conseil-webmaster.com";
$sujet="Envoi de mail avec PHP";
$message = "Contenu de mon email";
$entete = "From: webmaster@conseil-webmaster.com";
mail($destinataire, $sujet', $message,$entete);
?>

Fonctions personnalisées en PHP


Dans cette partie, nous allons créer nos propres fonctions en PHP.

PHP permet de créer ses propres fonctions.

function Nomfonction ($parametre, ...)


{
// Les commandes sont placées ici
return $resultat
// Si la fonction retrourne une valeur, indiquez là dans la commande return
}
echo Nomfonction(valeur);

Exemple avec 1 paramétre


<?php
function ConvDollar($prix) {
$Calcul=$prix*1.341; // Taux de change le 30 Décembre 2009 1.341
return $Calcul;
}
echo ConvDollar(10.51); // 10.54 est la valeur a calculé avec la fonction
?>

Exemple avec 2 paramétres


<?php
function ConvDollar($prix,$arrondi) { // 2 paramétres
$Calcul=$prix*1.341;
return round($Calcul,$arrondi);
}
echo ConvDollar(10.51,1); // 10.51 est la valeur a calculer avec la fonction, le deuxième
paramètre "1" correspond au nombre de décimales
?>

14.1
Exemple de formulaire de connexion
<?php
function Connecter($action,$bouton) {
echo '<table class='table table-responsive>';
echo '<form action="".$action."" method="post" name="form1">';
echo '<tr>';
echo '<td>Login</td>';
echo '<td><input type="text" name="login" value="" class="form-control" required
placeholder="login"></td>';
echo '</tr>';
echo '<tr>';
echo '<td>Mot de passe</td>';
echo '<td><input type="password" name="mdp" class="form-control" required"
placeholder="Mot de apsse"></td>';
echo '</tr>';
echo '<tr>';
echo "<td>;
echo '<input type="submit" name="Bouton" class="btn btn-primary" value="".$bouton."">';
echo '</td>';
echo '</tr>';
echo '</form>';
echo '</table>';
}

?>

Exercice sur la création de fonction

Créer une fonction


Poids Homme Femme

>=100 C'est dangereux C'est vraiment dangereux

>=90 C'est lourd Il faut faire attention

>=75 Ca va Ca commence à faire

>=60 Un peu léger C'est correct

>=40 Très maigre Maigre

Créer une fonction qui affiche un message en fonction du poids si c'est un homme
ou une femme.
Trés maigre

Structures conditionnelles en PHP


Les structures conditionnelles sont trés utiles, dans de nombreux cas, vous serez amener à les utiliser.

if else
if else, permet de tester si une condtion est respectée ou non.Dans notre exmple ci dessous, si la
condition est respectée, elle renvoit "instruction1", sinon "instruction2"

<?php
if(condition) {
// instruction1;
}
else{
// instruction2;
}
?>

Exemple basique
<?php
$gender="Homme";
if($gender=="Homme"){
echo "Bonjour Monsieur";
}
else{
echo "Bonjour Madame";
}
?>

Exemple avec un test sur le type de variable


is_string() permet de tester si une variable est une chaîne de caractère (Revoie true ou false)
is_integer() permet de tester si une variable est un entier (Revoie true ou false)
gettype() permet d'afficher le type de variable : string, int ...
<?php
$variable1="toto";
if(is_string($variable1)){
echo "La variable est du texte: " .gettype($variable1);
}
elseif(is_integer($variable1)) {
echo "La variable est un entier: " .gettype(variable1);
}
else{
echo "La variable est une booléenne";
}
?>
Les opérateurs de comparaison

signe exemple retourne TRUE si :

== (égal) $a == $b $a est égal à $b

=== (identique) $a === $b $a est égal et du même type que $b (PHP4 seulement)

!= (différent) $a != $b $a est différent de $b

<> (différent) $a <> $b $a est différent de $b

< (inférieur) $a < $b $a est inférieur à $b

> (supérieur) $a > $b $a est supérieur à $b

<= (inférieur ou égal) $a <= $b $a est inférieur ou égal à $b

>= (supérieur ou égal) $a >= $b $a est supérieur ou égal à $b

Les opérateurs logiques

Mot- Signification Symbole Explication Exemple retourne TRUE si :


clé équivalent

AND Et && Vérifie que toutes les conditions sont $a && $a et $b retournent
réalisées $b TRUE
$a and
$b

OR Ou || Vérifie qu'une des conditions est $a || $b $a ou $b retourne TRUE


réalisée
$a or $b

xor OU exclusif Vérifie qu'une et une seule des $a xor $b $a ou $b


conditions est réalisée (exclusivement)
retourne TRUE
! NON Inverse l'état d'une variable booléenne ! $a $a retourne FALSE
logique (retourne la valeur 1 si la variable vaut
0, 0 si elle vaut 1)

Plusieurs conditions avec ET

Il est possible d'imbriquer plusieurs conditions avec AND.


Dans ce cas, les conditions combinées doivent être respectées pour renvoyer "instruction1", sinon
elle renvoit "instruction2"

<?php
// Plusieurs conditions avec et
if(condition1 AND condition2) {
// instruction1;
}
else {
// instruction2;
}
?>

Exemple avec AND


Si l'âge est >= à 18ans et l'emploi est = à sécurité, l'accès est autorisé sinon l'accès est refusé.
<?php
$age=18;
$emploi="securité";
if($age>=18 AND emploi=="sécurité") {
echo "Accès autorisé";
}
else {
echo "Accès refusé";
}
?>

Plusieurs conditions avec OU

Il est possible d'imbriquer plusieurs conditions avec OR.


Dans ce cas l'une ou l'autre des conditions combinées doivent être respectées pour renvoyer
"instruction1" sinon elle renvoir "instruction2"

<?php
// Plusieurs conditions avec ou
if(condition1 OR condition2) {
instruction1;
}
else {
instruction2;
}
?>

Exemple avec OR
Si l'emploi est = à "sécurité" ou = "gardiennage" l'accès est autorisé sinon l'accès est refusé.
<?php
$emploi="securité";
if(emploi=="gardiennage" OR emploi=="sécurité") {
echo "Accès autorisé";
}
else {
echo "Accès refusé";
}
?>

if elseif else
Nous pouvons combiner un certains nombre de conditions avec if elseif else ....
Si la condition1 est respectée, elle renvoit "instruction1", sinon on teste la condition2
Si la condition2 est respectée, elle renvoit "instruction2"
Sinon elle renvoit enfin le dernier test "instruction3"

<?php
// 3 cas de figure
if(condition1) {
// instruction1;
}
elseif (Condition2){
// instruction2;
}
else {
// instruction3;
}
?>
<?php
if($poids>=100){
echo "C'est Lourd";
}
elseif($poids>=80){
echo "Il faut faire attention";
}
elseif($poids>=60){
echo "C'est parfait";
}
elseif($poids>=40){
echo "C'est léger";
}
else {
echo "C'est maigre";
}
?>

Exercices if elseif else


switch
switch($age){
case "condition1":
// instruction;
break;

case "condition2":
// instruction;
break;

case "condition3":
// instruction;
break;

default:
// instruction;
break;
}

<?php
switch($age){

case 15:
echo "Vous êtes mineur.";
break;
case 20:
echo "C'est le meilleur âge";
break;
case 40:
echo "C'est l'âge de la maturité";
break;
case 60:
echo "C'est bientôt la retraite";
break;
default:
echo "Votre âge n'est pas défini";
break;
}
?>

Exercice switch

Tester si une variable est bien définie avec isset


La fonction isset() verifie si une variable est bien définie,
Ce n'est que dans ce cas qu'elle renvoie la valeur vrai (true), dans le cas inverse, le résultat du test
est false.
isset($variable)

<?php
$var="toto";
if(isset($var) && $var=="toto"){
echo "C'est bien toto<br>";
}
else{
echo "Ce n'est pas toto";
}
?>

Exercices isset()

empty($variable)
La fonction empty() détermine si une variable est vide ou non.
Elle retourne TRUE si la chaîne passée en argument est vide
<?php
$prenom="Paul";
if(empty($prenom)){
echo "La variable est vide";
}
else{
echo "La variable n'est pas vide, elle est de type " .gettype($prenom);
}
?>

La variable n'est pas vide, elle est de type string

Exercice empty()

empty()
Exercice :

Si l'emploi est complété dans la variable, on l'affiche, sinon on affche que l'emploi
n'a pas été complété

Votre emploi est agriculteur

Les boucles en PHP


Dans ce tutoriel, nous allons aborder les boucles en PHP.

Dédinition

Les boucles vont vous permettre d'effectuer un certain nombre de fois les mêmes opérations, par
exemple afficher une suite de nombres que l'on incrémentera à chaque tour de boucle. Vous allez
pouvoir répéter autant d'instructions que vous souhaitez et vous arrêter lorsque vous l'aurez
décidé, selon une condition bien précise par exemple (si vous ne vous rappelez plus de ce qu'est
une condition, je vous engage à relire le chapitre les concernant). Voyons maintenant différents
types de boucles que nous expliquerons au fur et à mesure. Commençons par la boucle la plus
simple, la boucle while.
Source vulgarisation-informatique.com

Boucle for
Cette boucle est trés utile lorsque vous souhaitez incrémenter une variable sur une certaine plage
de valeurs connue à l'avance.

<?php
for ( initialisation; condition de continuité ; expression 3) {
// Bloc d'instructions;
}
?>

Exemple
<?php
for($d=1;$d<11;$d++){
echo $d;
}
?>

Nous partons de la valeur 1, en Incrémentant de 1, jusqu'à ce que nous arrivons à 10 (puisque $d


est strictement < à 11)
12345678910

Rappel :
$i++ Incrémenter
$i-- Décrémenter
Exercice boucle for

Boucle while
Cette boucle qui est une des plus utilisées en PHP va vous permettre d'effectuer une ou plusieurs
actions tant que la condition que vous placerez à l'intérieur des parenthéses sera vérifiée
C'est pour cela que, quel que soit le type de boucle (While ou For), il faut indiquer une condition.
Tant que la condition est remplie, les instructions sont réexécutées. Dés que la condition n'est
plus remplie, on sort de la boucle
Pas sur de faire le bloc d'instruction si la condition est fausse
<?php
while(condition) {
// Bloc d'instruction
}
?>

<?php
$j=1;
while($j<7){
echo $j++ ." ";
}
?>

Tant que $j est < à 7, on incrémente jusque 6 (puisque $i est strictement < à 7)
123456

Il faut TOUJOURS s'assurer que la condition sera au moins remplie une fois.
Si elle ne l'est jamais, alors la boucle s'exécutera à l'infini !
PHP refuse normalement de travailler plus d'une quinzaine de secondes.
Il s'arrêtera tout seul s'il voit que son travail dure trop longtemps et affichera un message d'erreur.
Comment savoir lequel prendre quand je dois choisir entre un While et un For ?
While marche à tous les coups.
For ne marche que quand on a un nombre qui s'incrémente, comme on a fait ici. Donc For est
parfois plus adapté, mais personne ne vous tuera si, comme moi, vous préférez utiliser un While
tout le temps
Exercices boucle while

Boucle do while
Elle a des similitudes avec la boucle while.
Néanmoins, une différence de taille les séparent.
Si l'on reprend l'exemple avec la boucle while :
<?php
$i = 0;
while($i < 7)
{
echo $i.'<br />';

$i++;
}
?>

Vous constatez que si on initialise $i à 8, la boucle ne sera jamais exécutée, car dés l'analyse de la
condition, 8 < 7 renverra FALSE (8 est bien inférieur à 7 ).
La boucle do-while permet d'effectuer au moins une fois une opération, et si une condition est
vraie, reboucler autant de fois que vous le souhaitez.
Avec le do, il sera au minimum exécuté une fois
<?php
do
{
// instruction 1;
// instruction 2;
}
while(condition);
?>

<?php
$i=8;
$j=7;
do
{
echo 'la boucle a bouclé une fois, même si la condition n\'a pas été respectée,<br />
la variable $i < n\'est pas inférieur à $j';
}
while ($i < $j);
?>

la boucle a bouclé une fois, même si la condition n'a pas été respectée,
la variable $i < n'est pas inférieur à $j

Exercices boucle do while

do while
Exercice avec une condition qui n'est pas respectée.
<?php
$i=8;
$j=7;

do
{
echo 'la boucle a bouclé une fois, même si la condition n\'a pas été respectée, la
variable $i < à $j while($i < $j)';
$i++; // Pas possible d'icrémenter
}
while($i < $j);
?>

la boucle a bouclé une fois, même si la condition n'a pas été respectée, la
variable $i < n'est pas inférieur à $j while($i < $j)

Exemple avec une condition respectée

la boucle boucle, la condition est respectée, la variable $i est inférieur à $j


la boucle boucle, la condition est respectée, la variable $i est inférieur à $j
la boucle boucle, la condition est respectée, la variable $i est inférieur à $j
la boucle boucle, la condition est respectée, la variable $i est inférieur à $j
la boucle boucle, la condition est respectée, la variable $i est inférieur à $j
la boucle boucle, la condition est respectée, la variable $i est inférieur à $j
la boucle boucle, la condition est respectée, la variable $i est inférieur à $j

Les tableaux (arrays) en PHP


Dans ce tutoriel, je vous propose de découvrir les tableaux (arrays).

Définition :
Il s'agit de variables qui peuvent contenir plusieurs valeurs.
On peut donc imaginer leur représentation sous forme d'un tableau.
Pour différencier les valeurs, pour savoir comment on va dire à PHP "je veux telle valeur de cette
variable" il faut bien distinguer les valeurs par des indices.
Voilà comment on peut représenter tout ça :

Indice Valeur

0 Maurice

1 Jean

2 Pierre

3 Paul

4 Gérard

Les tableaux à indices numériques


<?php
// Syntaxe 1
$Prenom=array();

$Prenom[0]='Maurice';
$Prenom[1]='Jean';
$Prenom[2]='Pierre';
$Prenom[3]='Paul';
$Prenom[4]='Gérard';
echo $Prenom[4];
?>
<?php
// Syntaxe equivalente
$Prenom=array(0=>'Maurice',
1=>'Jean',
2=>'Pierre',
3=>'Paul',
4=>'Gérard');
echo $Prenom[4];
?>
<?php
/* Dans le cas où vous souhaitez garder le premier indice à zéro (et les suivants
incrémentés de 1 à chaque fois) vous pouvez également utiliser la syntaxe suivante */
$Prenom=array('Maurice','Jean','Pierre','Paul','Gérard');
echo $Prenoms[4];
?>
Gérard

Gérard

Gérard

count()

Compte le nombre d'éléments d'un tableau ou le nombre de propriétés d'un objet

count($variable)

<?php
echo count($Prenoms1) ." prénoms dans le tableau";
?>

Exercice

Les tableaux associatifs


PHP peut également vous permettre de distinguer les différentes valeurs de vos tableaux par des
indices associatifs.
Ils sont constitués de chaînes de caractéres.
Prenons l'exemple d'un article. On va le différencier par plusieurs choses :

 Son numéro unique


 Son nom
 Son prix

Voilà comment on pourrait représenter ça avec un tableau associatif :


<?php
// 1ère syntaxe
$Article=array();
$Article['Numero']=77;
$Article['Nom']="Cable rond";
$Article['Prix']=7;
echo "Ref: ".$Article['Numero'] ." Article: " .$Article['Nom'] ." Prix: " .
$Article['Prix'];
?>

<?php
// Seconde syntaxe
$Articles=array('Numero' =>77,
'Nom' => "Cable rond",
'Prix' => 7);
echo "Ref: ".$Articles['Numero'] ." Article: " .$Articles['Nom'] ." Prix: " .
$Articles['Prix'];
?>

Ref: 77 Article: Cable rond Prix: 7

Ref: 77 Article: Cable rond Prix: 7

Exerice tableau associatif

Tableau multi-dimensionnelle indicé


Nous allons représenter le tableau ci-dessous sous forme d'un tableau milti-dimensionnelle indicé.

Pays Capitale Population en million

France Paris 80

Japon Tokyo 90

UK Londres 70

Voici un exemple de code pour le traduire en PHP, vous pouvez remarquer que nous utilisons un
second indice.
<?php
// 1ère ligne
$tab1=array();
$tab1[0][0]="France";
$tab1[0][1]="Paris";
$tab1[0][2]=80;

// 2ème ligne
$tab1[1][0]="Japon";
$tab1[1][1]="Tokyo";
$tab1[1][2]=90;

// 3ème ligne
$tab1[2][0]="UK";
$tab1[2][1]="Londres";
$tab1[2][2]=70;

echo $tab1[1][2];
?>
Nous souhaitons afficher la population du Japon
La population du Japon est : 90

Exemple : afficher la totalité de la ligne 2 du tableau avec une boucle for.


<?php
$tab2=array();

$tab2[0][0]="France";
$tab2[0][1]="Paris";
$tab2[0][2]=80;

$tab2[1][0]="Japon";
$tab2[1][1]="Tokyo";
$tab2[1][2]=90;

$tab2[2][0]="UK";
$tab2[2][1]="Londres";
$tab2[2][2]=70;

// Notre boucle permettant d'afficher la 2ème ligne du tableau ci-dessus


for ($m=0;$m<count($tab2);$m++){
echo $tab2[1][$m];
}
?>

Japon Tokyo 90

Exercice

Boucle foreach
La boucle foreach se décline en deux versions.

Version 1
avec un tableau indicé

Ainsi, nous parcourons le tableau $array et la valeur de l'élément courant est copié dans $value,
qui est ensuite affiché.

foreach($array as $value)

<?php
$array = array( 1, 2, 3, 5, 8, 12 );
foreach( $array as $value ) // Pas d'accolades
echo $value . '<br >';
?>

1
2
3
5
8
12

avec un tableau associatif


Contrairement au tableau précédant, les indices des éléments ne sont pas des nombres (0, 1, 2, ...)
mais des chaînes de caractéres (on appelle un tel tableau un tableau associatif). Ainsi, si je veux
accéder au deuxiéme élément, je dois procéder comme suit: $array['deuxieme'] .
Il est donc impossible ici d'utiliser for, par contre, avec foreach, aucun probléme
<?php
$array = array( 'premier' => 'N° 1', 'deuxieme' => 'N° 2', 'troisieme' => 'N° 3');
// on parcourt $array, la valeur de l'item courant est copiée dans $value
foreach($array as $value)
echo $value . '<br>';
?>

N°1
N°2
N°3

Version 2
La deuxiéme version de foreach permet de connaître, en plus de la valeur de l'élément courant, sa clé
Dans ce cas, on parcourt le tableau $array et la clé de l'élément courant est copiée dans $key tandis que
sa valeur est copiée dans $value

Exemple 1
<?php
$array = array( 'premier' => 'N° 1', 'deuxieme' => 'N° 2', 'troisieme' => 'N° 3');
foreach( $array as $key => $value )
echo 'Cet élément a pour clé "' . $key . '" et pour valeur "' . $value . '"<br>';
?>

Cet élément a pour clé "premier" et pour valeur "N° 1"


Cet élément a pour clé "deuxieme" et pour valeur "N° 2"
Cet élément a pour clé "troisieme" et pour valeur "N° 3"

Exemple 2, boucle foreach sur les variables de serveur $_SERVER


Les variables de serveur seront abordés dans ce chapitre.
<?php
foreach($_SERVER as $key => $value )
echo '$_SERVER[' .$key .']=' .$value .'<br>';
?>

$_SERVER[DOCUMENT_ROOT]=/home/conseiw/www
$_SERVER[GATEWAY_INTERFACE]=CGI/1.1
$_SERVER[HTTP_ACCEPT]=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
$_SERVER[HTTP_ACCEPT_ENCODING]=gzip, deflate, sdch
$_SERVER[HTTP_ACCEPT_LANGUAGE]=fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
$_SERVER[HTTP_CONNECTION]=keep-alive
$_SERVER[HTTP_HOST]=www.conseil-webmaster.com
$_SERVER[HTTP_REFERER]=http://www.conseil-webmaster.com/formation/php/07-boucles-php.php
$_SERVER[HTTP_UPGRADE_INSECURE_REQUESTS]=1
$_SERVER[HTTP_USER_AGENT]=Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/56.0.2924.87 Safari/537.36
$_SERVER[PATH]=/bin
$_SERVER[QUERY_STRING]=
$_SERVER[REDIRECT_STATUS]=200
$_SERVER[REMOTE_ADDR]=105.104.22.197
$_SERVER[REMOTE_PORT]=51604
$_SERVER[REQUEST_METHOD]=GET
$_SERVER[REQUEST_URI]=/formation/php/08-tableaux-php.php
$_SERVER[SCRIPT_FILENAME]=/home/conseiw/www/formation/php/08-tableaux-php.php
$_SERVER[SCRIPT_NAME]=/formation/php/08-tableaux-php.php
$_SERVER[SCRIPT_URI]=http://www.conseil-webmaster.com/formation/php/08-tableaux-php.php
$_SERVER[SCRIPT_URL]=/formation/php/08-tableaux-php.php
$_SERVER[SERVER_ADDR]=51.254.199.182
$_SERVER[SERVER_ADMIN]=webmaster@conseil-webmaster.com
$_SERVER[SERVER_NAME]=www.conseil-webmaster.com
$_SERVER[SERVER_PORT]=80
$_SERVER[SERVER_PROTOCOL]=HTTP/1.1
$_SERVER[SERVER_SIGNATURE]=
$_SERVER[SERVER_SOFTWARE]=Apache
$_SERVER[PHP_SELF]=/formation/php/08-tableaux-php.php
$_SERVER[REQUEST_TIME]=1489352993

Trier un array
ksort Trie un tableau suivant les clés

bool ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

<?php
$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
ksort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>

a = orange b = banana c = apple d = lemon

Imbriquer des boucles foreach


On peut aussi imbriquer des boucles foreach, regardez on peut ainsi afficher le contenu d'un
tableau à deux dimensions
Le premier foreach parcourt le tableau principal, les valeurs de $key sont successivement 'fruits',
'animaux' et 'pays' tandis que $value contient le tableau qui contient les exemples, c'est donc
$value que l'on prend comme tableau pour le deuxiéme foreach
<?php
$array = array( 'fruits' => array( 'pommes', 'tomates', 'abricots' ),
'animaux' => array( 'chats', 'chiens' ),
'pays' => array( 'Suisse', 'France', 'Angleterre' ) );

foreach( $array as $key => $value )


{
echo $key . ': <br>';

foreach( $value as $valeur )


echo ' ' . $valeur . '<br>';

echo '<br>';
}
?>

fruits:
pommes
tomates
abricots

animaux:
chats
chiens

pays:
Suisse
France
Angleterre

Exercice 1 boucle foreach

Boucle foreach
Exercice 1 avec un tableau associatif

Afficher le nb de jours des formations ci dessous avec une boucle foreach

Photoshop : 3 jours, Illustrator : 2 jours, Indesign : 2 jours

3 jours
2 jours
2 jours

Exercice 2 avec la valeur de l'élément courant et sa clé


Maintenant, nous souhaitons afficher la formation et son nombre de jours avec
une boucle foreach.

Formation : Photoshop, nb de jours 3 jours


Formation : Illustrator, nb de jours 2 jours
Formation : Indesign, nb de jours 2 jours

Les variables superglobales


Dans ce tutoriel, nous allons abordé les variables superglobales

 Elles sont écrites en majuscules et commencent toutes par un


underscore $_GET et $_POST
 Les superglobales sont toutes des array.
 Ces variables sont automatiquement créées par PHP à chaque fois qu'une
page est chargée. Ces variables existent donc sur toutes les pages et sont
accessibles partout : au milieu de votre code, au début, dans les fonctions
etc...

Nous allons utiliser celles-ci :

$_GET

$_POST

$_SERVER

$_SESSIONS

$_COOKIE

Les variables GET


Dans ce tutoriel, nous allons abordé les variables GET.

Envoyer des variables dans l'url avec GET


$_GET : c'est elle qui vous donne les valeurs des informations indiquées dans l'url.
Un simple lien hypertexte vous permet d'envoyer une variable par l'url.
Exemple
Nous allons créer 2 pages :

1. envoi.html, qui contient le lien à envoyer dans l'url (Nous n'avons pas forcément besoin d'une
page en php).
2. reception.php (qui va traiter l'information envoyée dans l'url)

Dans notre page envoi.html, nous allons créer un lien hypertexte classique.
<a href="reception.php" title="Envoyer">Envoyer des données via une url</a>
Nous allons maintenant un peu modifier notre lien. Après l'extension .php, nous allons ajouter un
point d'interrogation (?), le nom de la variable, un égal, puis sa valeur ex : ?variable=valeur.
Si l'on veut envoyer la variaible Prenom qui a pour valeur Christophe, ça vous donne ça :
<a href="reception.php?Prenom=Christophe" title="C'est GET">Envoyer des données via une
url</a>

Pour afficher le résultat sur notre page reception.php


Nous allons récupérer une variable un peu particuliére : $_GET['Prenom'] qui aura pour valeur Christophe

<?php
// Code PHP pour afficher le résultat dans ma page reception.php
echo $_GET['Prenom'];
?>

Pour envoyer plusieurs variables


Si nous voulons envoyer 3 variables : jour, mois et annee.
1. Dans la page qui contient le lien permettant d'envoyer les paramètres dans l'url, nous écrirons ceci :

< a href="reception.php?jour=12&amp;mois=03&amp;annee=2017" title="C'est GET">Envoyer 3


variables via une url</a>

Dans votre code HTML, il ne faut pas écrire directement le symbole "&", Il faut le remplacer par son code
HTML : &amp;

2. Dans l'url, nous verrons ça :

http://www.conseil-webmaster.com/mapage.php?jour=12&mois=03&annee=2017

3. Nous récupérerons ces 3 variables:

 $_GET['jour'] = "12"
 $_GET['mois'] = "03"
 $_GET['annee'] = "2017"

<?php
echo $_GET['jour'] ."<br>";
echo $_GET['mois'] ."<br>";
echo $_GET['jour'] ."<br>";
?>

Exercice avec GET


Envoyer des données avec GET
Exercice 1 :

Une formation PHP coûte 300€ / Jour, elle se déroule sur une période de 3 jours.

Une formation Excel coûte 250€ / Jour, elle se déroule sur une période de 2 jours.

Créer une page reception.php où vous affichez les 2 formations ci dessous ainsi
que le prix total de la formation (Prix*nb de jours)

Lien

Les variables POST


Dans ce tutoriel, nous abordons les variables POST.

Envoyer des données via un formulaire avec


POST
Maintenant lorsque nous envoyons des variables via un formulaire, la variable que
vous récupérez s'écrira de cette façon

$_POST['Variable']
et non plus $Variable
Exemple

1. Créer une page HTML que vous nommez formulaire.html

Dans cette page, ajouter un champ de formulaire que vous nommez "Nom" ainsi
qu'un bouton d'envoi
Dans la balise form, action doit pointer vers une page en PHP (Ex:
traitement.php") qui va traiter l'information.
Envoyer
Nom

<form name="form1" method="post" action="traitement.php" class="form">


<label>Nom </label>
<input type="text" name="Nom" placeholder="Nom" value="" class="form-control">
<input type="submit" name="Envoyer" class="btn btn-default" value="Envoyer">
</form>

2. Créer la page traitement.php

La variable que vous allez récupérer s'appellera $_POST['Nom'] et non $Nom.


Pour l'afficher nous écrirons ce bout de code :
<?php
echo $_POST['Nom'];
?>

Rappel sur les formulaires en HTML

Exercices

Envoyer des données sur différentes pages

 Exercice 1
 Exercice 2 : Formulaire de connection
 Exercice 3 : Calculer le prix d'une location de voiture
 Exercice 4 : Calculer le prix d'une formation

Envoyer des données sur une même page

 Envoyer les variables Nom et Prenom sur une même page


 Envoyer des données sur une même page

.Exercice 1

Formulaire envoi
Exercice

Envoyer les variables Nom et Prenom à partir de cette page, les afficher sur une
autre page reception.php

Nom

Prénom

Envoyer

 Exercice 2 : Formulaire de connection


Formulaire d'authentification
Il est important de noter que nous n'utilisons pas la meilleure et la plus sécurisée
des méthodes. Nous verrons d'autres exemples par la suite qui seront plus
adaptés

Exercice

Pour accéder à la page trouve.php, nous devrons renseigner :

toto comme login


et titi comme mot de passe

Dans le cas contraire, vous êtes redirigé vers une nouvelle page qui sera nommée
erreur.php

Login

Mot de passe

Me connecter

 Exercice 3 : Calculer le prix d'une location de voiture

Calculer le prix d'une location de


voiture

Exercice

Afficher le prix de la location en tenant compte des critères ci-desssous.

Type de voiture :

 citadine = 30 €
 familiale = 45 €
 sportive = 70 €
 utilitaire = 50 €

Nombre de jours :

 > à 3 jours, majoration *0.9


Prix au km

 0-250 = 0 €
 251-500 = 25 €
 501-1000 = 45 €
 >1001 = 65 €

Chauffeur

 Avec un chauffeur +50€


 Sans chauffeur 0€

civilite

Mr Mme Melle

nom

prenom

type

Nb de jours

km
0-250

251-500

501-1000

>1000

chauffeur

Envoyer

 Exercice 4 : Calculer le prix d'une formation


Calculer le prix d'une formation
Exercice

Calculer le prix d'une formation en tenant compte des critères ci-dessous.

Dreamweaver 1- 3j - 400€ HT / Jour pour une personne


Dreamweaver 2- 2j - 400€ HT / Jour pour une personne
Dreamweaver de A à Z- 5j - 400€ HT / Jour pour une personne
Flash- 3j - 400€ HT / Jour pour une personne
Flash Action Script - 3j - 450€ HT / Jour pour une personne
PHP - 3j - 400€ HT / Jour pour une personne
PHP perfectionnement - 3j - 450€ HT / Jour pour une personne

Personnes
1 personne supplémentaire : 100€ HT / Jour

Région
Nord pas de Calais : 0€
Somme: 50€ HT / jour
Ile de France : 100€ HT / Jour

Nom

Prénom

Formation Dreamw eaver 1

Nb de personnes 1

Région

Envoyer
 Envoyer les variables Nom et Prenom sur une même page

Envoyer des données avec


POST et les afficher sur la
même page
Exercice

Envoyer les variables Nom et Prenom, sur cette page et les afficher ci-dessous.

Mon nom

Mon prénom

Envoyer

Completer votre nom et prenom

 Envoyer des données sur une même page

Formulaire d'authentification avec


redirection
Il est important de noter que nous n'utilisons pas la meilleure et la plus sécurisée
des méthodes. Nous verrons d'autres exemples par la suite qui seront plus
adaptés

Exercice

Si vous renseignez "toto" comme nom et "titi" vous redirigez l'utilisateur vers une
page nommée succesphp sinon vous affichez :Entrer votre nom et votre mot de
passe.
Nom

Mot de passe

Envoyer ma demande

Les variables de serveur


Dans ce tutoriel, nous abordons les variables de SERVER.

$_SERVER : ce sont des valeurs utiles que nous donne le serveur. Pour les
afficher, il faut indiquer ce qu'on demande entre crochets puisque que c'est un
array.
Je vous en donne quelques unes ci-dessous :

Le nom relatif du serveur qui exécute le script courant :

<?php echo $_SERVER['SERVER_NAME']; ?>

www.conseil-webmaster.com

Le chemin du répertoire racine du serveur.

$_SERVER['DOCUMENT_ROOT']

/home/conseiw/www

Cest le chemin de la page que vous êtes en train d'exécuter, par rapport à la
racine de votre site web.
Exemple : si vous êtes sur la page http://www.monsite.com/scripts/monscript.php,
alors $_SERVER['PHP_SELF'] aura pour valeur : /scripts/monscript.php
<?php echo $_SERVER['PHP_SELF']; ?>

/formation/php/09-variables-serveur-php.php

Elle nous donne l'adresse IP du client qui a demandé à voir la page

<?php echo $_SERVER['REMOTE_ADDR']; ?>

105.104.22.197

Vous affiche quel type de navigateur, vous utilisez

<?php echo $_SERVER['HTTP_USER_AGENT'];?>

Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like


Gecko) Chrome/56.0.2924.87 Safari/537.36

Le nom de la page précédente

<?php echo $_SERVER['HTTP_REFERER'];?>

http://www.conseil-webmaster.com/formation/php/09-variables-superglobales-
php.php

Liste des variables de SERVEUR


Si vous souhaitez afficher la liste compléte des variables de serveur, nous
utiliserons print_r() qui permet d'afficher les informations lisibles pour une
variable

<?php print_r($_SERVER); ?>

Autre méthode avec foreach


<?php
foreach($_SERVER as $key => $value)
echo '$_SERVER['.$key.']='.$value .'<br />';
?>
Exercice sur les variables de serveur

Les variables de serveur


Exercice

Afficher l'adresse IP du client

L'adrese de la page actuelle

Créer un lien pour revenir à la page précédente en utilisant les variables de


serveur

L'adresse IP du client est 105.104.22.197

L'adresse actuelle de la page est www.conseil-webmaster.com/formation/php/09-


exercice-variables-serveur.php

Page précédente

Les sessions
Dans ce tutoriel, nous abordons les SESSIONS en PHP.

Les sessions en PHP permettent de sauvegarder des variables de page en page pendant une
certaine durée prédéfinie par PHP (et modifiable bien entendu).
Chaque utilisateur ayant besoin des sessions se voit attribuer un identifiant unique appelé ID de
session. Cet identifiant est stocké sur le poste de l'internaute sous forme d'un cookie ou transite via
l'URL si l'option session.use_trans_sid est à 1 (ou On) dans le fichier php.ini.
Utiliser la méthode du cookie est plus que recommandée : un identifiant de session dans l'URL
empêche de retenir l'adresse d'une page simplement par le visiteur néophyte, cela rallonge donc
l'adresse de votre page. Cela nuit également au référencement de votre page. En effet, l'identifiant
étant unique, lorsque le robot du moteur de recherche scanne votre site, il ne retombera jamais sur
la même URL plusieurs fois de suite.

Démarrer une session avec session_start


Avant d'utiliser les sessions sur une page, on doit toujours utiliser la fonction session_start() placée avant
tout envoi de code HTML, et donc généralement tout en haut de votre page PHP :

session_start()

Syntaxe pour créer une variable de session


$_SESSION['nom']="Valeur"
<?php
session_start(); // On démarre la session AVANT toute chose,
// On crée dans cette exemple 3 variables de session :
$_SESSION['prenom'] = 'Jean';
$_SESSION['nom'] = 'Dupont';
$_SESSION['age'] = 24;
// Maintenant on peut taper du code HTML
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Variables de session</title>
<meta name="description" content="Je teste les variables de sessio en PHP">
<!--[if IE]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<body>
<p>Bonjour <?php echo $_SESSION['prenom']; ?>!</p>>
<p>Tu es à l'accueil de mon site </p>
</body>
</html>

Pourquoi session_start() doit-elle être placée de la sorte ? et bien parce que si PHP utilise les cookies pour
repérer quel est l'id de session utilisé par l'internaute, il va écrire cet id de session dans un cookie. Or, le
protocole HTTP fonctionne de telle sorte que les en-têtes (qui permettent de dire à votre navigateur "crée
un cookie ayant tel nom et telle valeur") sont envoyés avant le premier caractére HTML transmis.
Cela veut dire que dés que vous transmettrez un caractére HTML, les en-têtes seront envoyés et vous ne
pourrez plus les modifier, vous ne pourrez donc plus écrire le cookie de session.
En général, si vous faites une maladresse de ce style, vous vous retrouverez avec une erreur de headers
already sent.

Quelle est la durée de vie d'une session ?


Dés que l'on ferme le navigateur la session est détruite.
Sauf à configurer le fichier php.ini avec session.lifetime qui fixe la durée de vie, en secondes, du
cookie envoyé au client. La valeur 0 signifie "jusqu'à ce que le client soit fermé". Par défaut à 0.
Donc si on le laisse à zéro la session dure jusqu'à la fermeture du navigateur, pour laisser les
données durant 30 minutes, il faut remplacer 0 par 1800 (= 30 minutes * 60 secondes dans une
minute).
session.lifetime = 0

Afficher l'identifiant de session avec id_session


Lit et/ou modifie l'identifiant courant de session
echo session_id()

Supprimer une variable de session


La commande session_unregister() supprime une variable dans la session courante.
Elle retourne TRUE si success, FALSE sinon.
Elle a pour syntaxe :

boolean session_unregister (string name)

Il est aussi possible de purger toutes les variables de la session avec

session_unset()

Si vous utilisez le tableau superglobale $_SESSION, il suffit alors d'utiliser unset() :

unset($_SESSION["mavariable"])

Fermer une session


1- Fermeture conservatrice avec session_write_close

La commande session_write_close() écrit les valeurs des variables de session sur le serveur et
ferme la session.

session_write_close()

2- Fermeture destructive avec session_destroy


Enfin, si vous voulez détruire la session du visiteur, vous pouvez faire un lien "Déconnexion" qui
améne vers une page qui fait appel à la fonction session_destroy()
La commande session_destroy() détruit toutes les données enregistrées d'une session.
Cette derniére commande est la plus utilisée car n'impose aucune sauvegarde au serveur. Retourne
TRUE en cas de succés, et FALSE sinon.
session_ destroy()

Exercice : transmettre des variables de pages en pages


Les sessions - p1
toto

Aller en page 2 en affichant le login en utlisant une variable de session

Exercice : formulaire de connection

Formulaire de connexion avec


des vraibles de session
Exercice

Créer une page en php qui va contrôler :

Si le Prénom et le mot de passe ne sont pas vides

Si le Prénom n'est pas vide

Si le nom n'est pas vide

Dans le cas où une des 2 informations n'est pas complété, on crée un lien de
retour vers cette page où l'on affiche les champs Prénom et Mots de passe avec
l'information saisie précédemment.

Dans le cas où l'utilisateur a saisi comme Prénom "toto" et comme mot de passe
"toto", on lui affiche un lien de connexion et on détruit la variable de session
lorsqu'il a cliqué dessus.

Prénom

Mot de passe

Envoyer

Les cookies
Dans ce tutoriel, nous abordons les COOKIES en PHP.

$_COOKIE

Un cookie est un fichier petit fichier texte que l'on stocke sur le poste du visiteur.
Exemple :
Vous stockez le pseudo du visiteur. Lorsqu'il revient sur votre site, vous pouvez
lire dans le cookie et lui afficher "Bonjour votre_pseudo".
Contrairement à certaines légendes, les cookies sont totalement inoffensifs, ce
ne sont pas des virus ou troyens ou je ne sais quoi !

Ecrire un cookie avec setcookie


La fonction PHP qui permet d'écrire un cookie est setcookie qui signifie Placer
un cookie en français.

setcookie (string nom, string valeur, string expiration, string chemin, string domaine,
string securise)

On utilise généralement les 3 premiers paramétres en respectant l'ordre:

1. Le nom du cookie (ex : "Nom")


2. La valeur du cookie (ex : "Paul")
3. La date d'expiration du cookie, sous forme de timestamp (ex : 1090521508)

Vour remarquez que le 3éme paramétre définit la durée de vie pour du cookie,
aprés celui ci sera supprimé.

Exemple d'un cookie qui a une durée de vie de 1 an


time() + 365*24*3600 // Timestamp actuel + Nb de secondes dans un an

setcookie à la bonne place !


Comme pour session_start que nous avons vu dans l'article précédent, setcookie
doit être placé avant votre code HTML.
Placer le avant la balise <!DOCTYPE>
Exemple

Créer 2 cookies: Un qui retient mon nom et un autre qui retient mon prénom.
<?php
$timestamp = time() + 365*24*3600; // Le cookie a une durée de vie de 1an
setcookie('Nom', 'Lambert', $timestamp); // On écrit un cookie
setcookie('Prenom', 'Christophe', $timestamp); // On en écrit un autre cookie...
// Vous remarquez que tout est bien noté avant le début du code HTML
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Titre de ma page</title>
</head>
etc ...

Afficher un cookie
$_COOKIE['Nom_cookie']

PHP va lire l'information stockée dans le cookie du visiteur.


Ces informations sont placées dans la superglobale $_COOKIE, sous forme d'array
(tableau)
<?php
echo "Bonjour " .$_COOKIE['Nom'] ." " .$_COOKIE['Prenom']; // Afficher les cookies

// Ancienne syntaxe pour afficher un cookie, elle est obsoléte


echo $HTTP_COOKIE_VARS["Nom"];
?>

Modifier la valeur d'un cookie


Pour modifier la valeur d'un cookie, il faut faire appel à setcookie en conservant le
même nom de cookie et en modifiant simplement sa valeur.

Si je veux maintenant modifier mon prénom :


<?php
setcookie('Prenom', 'Cristobal', $timestamp);
?>

Ou retrouver les cookies sur mon poste ?


Sous Firefox :

Aller dans le menu Outils > Options > Vie privée > Supprimer des cookies
spécifiques

Sous Internet Explorer et Windows :

La procédure est un peu plus longue, je vous invite à consulter cet article.

Supprimer un cookie
Pour supprimer un cookie, Il suffit de déclarer le cookie sans mettre de valeur
setcookie("Nom_cookie")

<?php
// Pour supprimer le cookie Nom
setcookie("Nom");
?>

Manipuler des fichiers en PHP


Dans ce tutoriel, nous abordons la manipulation de fichier

Ouvrir un fichier fopen()


fopen(string filename, string mode)

La fonction fopen() renvoie true si l'ouverture est possible et false si elle ne l'est pas.

fopen("fichier.txt", "r")

<?php
$source="fichier.txt";
if($fichier=@fopen($source,"r")) // Le @ permet de ne pas afficher l'erreur et renvoie le
statut que nous définisons en dessous
{
echo "L'ouverture du fichier est possible car la fonction fopen retourne TRUE<br />";
}
else
{
echo "Ouverture du fichier impossible car fopen retourne FALSE";
}
?>

Valeurs posiibles :
a Ouverture du fichier pour : écrire et créer le fichier. L'écriture commence a la fin du fichier
a+ Mêmes fonctions que ci-dessus sauf que la lecture est permise.
r Ouverture d'un fichier en lecture seule.
r+ Mêmes fonctions que ci-dessus sauf qu'il est possible d'écrire dans le fichier. L'écriture
commence au début du fichier.
w Ouverture du fichier en écriture seulement. Création du fichier si celui-ci n'existe pas sauf que
les données contenues précédemment sont effacées.
w+ Mêmes fonctions sauf qu'il est possible de lire dans le fichier.
Exercice

Afficher le contenu d'un fichier dans un navigateur avec fpassthru


fpassthru($fichier)

<?php
$source1="fichier1.txt";
$fichier1=fopen($source1,"r");
fpassthru($fichier1); // Permet d'afficher le contenu du fichier dans un navigateur
?>

Lecture de fichiers avec fgets


fgets(string pointeur, string longueur)

La fonction fgets() permet d'extraire une chaîne d'une certaine longueur.


Il faut aussi savoir que la fonction extrait la chaîne de la longueur précise définie en argument,
plus un caractére et que la fonction s'arrête aux sauts de lignes

< ?php
$source4="fichier.txt";
$fichier4=fopen($source4,"r+");
echo fgets($fichier4,4);
?>

Extraire le premier caractère d'un fichier avec fgetc


fgetc($fichier,longeur)

fgetc() permet d'extraire le premier caractére du fichier

fgetc(string pointeur)

< ?php
$fichier = fopen("fichier.txt","r");
$premier = fgetc($fichier);
echo "Premier Caractére : " . $premier;
fclose($fichier);
?>

fgets($fichier, longueur)

La fonction fgets() permet d'extraire une chaîne d'une certaine longueur.


Il faut aussi savoir que la fonction extrait la chaîne de la longueur précise définie en argument,
plus un caractére et que la fonction s'arrête aux sauts de lignes

fgets(string pointeur, string longueur)

<?php
$fichier = fopen("fichier.txt","r");
$premier = fgets($fichier, 10);
echo "Dix Premier Caractéres : " . $premier;
fclose($fichier);
?>

fgetss()
fgetss($fichier,longueur)

La fonction fgetss() a quasiment la même utilité que la fonction fgets() sauf qu'elle n'extrait ni
les balises HTML, ni les balises PHP

Pour un fichier contenant : '<strong>Bonjour !< /strong>< br>Test de la fonction fgetss', la


fonction ne renverra que les caractéres, la mise en forme HTML sera ignorée : 'Bonjour !Test de la
fonction fgetss'

Lire une chaîne de caractére dans un fichier ouvert avec fread


fread($fichier,longueur)

La fonction fread() permet de lire une chaîne de caractére dans un fichier ouvert, jusqu'a la longueur
indiquée en argument

fread(string pointeur, string longueur)


fclose(fichier) // Permet de fermer le fichier
<?php
$fichier = fopen("essai.txt","r");
$premier = fread($fichier, 10);
echo "Dix Premiers Caractéres : " . $premier;
fclose($fichier);
?>

Exercice

Ecrire dans un fichier


Pour écrire dans un fichier, on peut utiliser au choix la fonction fwrite() ou fputs()
La fonction retourne TRUE si l'écriture se passe normalement, sinon elle retourne FALSE.
Attention toutefois : le fichier doit bien être ouvert en mode écriture : w, a ou r+.
fwrite()
fwrite(string pointeur, string chaîne, (string longueur)
fwrite($fichier,'Texte a ajouter')

ou
fputs()
fputs(string pointeur, string chaîne, (string longueur))

<?php
$fichier = fopen("essai.txt","w");
if(fwrite($fichier, "TEXTE A ECRIRE"))
{
echo "OK !";
}
else echo "Erreur";
fclose($fichier);
?>
Exemple

 Exercice1
 Exercice compteur

Vérifier l'existence d'un fichier avec file_exists


Pour vérifier si un fichier existe, on utilise la fonction file_exists()

file_exists(string fichier)
file_exists("fichier.txt")

<?php
if(file_exists("fichier.txt")) {
echo "Fichier existant";
}
else echo "Introuvable !";
?>

Copier coller des fichiers avec copy


Pour copier un fichier, il faut utiliser la fonction copy().
La fonction retourne TRUE si tout se passe correctement et sinon FALSE.

copy(fichier_depart,fichier_destination)

<?php
if(@copy("essai.txt","complet/copy_fichier.txt"))
{
Echo "Le fichier essai.txt a été copié dans le répertoire complet/copy_fichier.txt.";
}
else echo "Erreur";
?>

Exercice

Renommer un fichier avec rename


il faut utiliser la fonction rename()

rename(string nom_depart, string nom_nouveau)


rename(nom_depart, nom_nouveau)

<?php
if(@rename("essai.txt","nouveau_fichier.txt")) {
Echo "Le fichier essai.txt a été renommé en nouveau_fichier.txt.";
}
else echo "Erreur";
?>
Exercice

Supprimer un fichier avec unlink


C'est la fonction unlink() que l'on utilise

unlink(fichier)

<?php
if(@unlink("essai.txt"))
{
Echo "Le fichier essai.txt a été supprimé.";
}
else echo "Erreur";
?>

Exercice

Exercice 2.4:

Supprimer le fichier truc.txt


Erreur, le fichier n'a pas �t� supprim�

Revenir � l'exercice 2.2 qui renomme le fichier

Vous aimerez peut-être aussi