0% ont trouvé ce document utile (0 vote)
36 vues59 pages

PHP Chapitre1

Transféré par

meryamdaballa1
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
36 vues59 pages

PHP Chapitre1

Transféré par

meryamdaballa1
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

LST : Informatique, Réseaux et Multimédia

Technologie Web Multimédias


PHP: Hypertext Preprocessor

Chapitre 1:
Fonctionnement et Syntaxe

Prof. N. Moumkine

[Link] 1
PHP: Langage de script pour le Web

 Qu’est-ce que PHP ?


 Langage de script. Utilisé coté serveur
 Acronyme récursif : PHP: Hypertext Preprocessor
 Créé en 1994-1995 par Rasmus Lerdorf
 Langage multi plate-forme (UNIX / Windows…)
 Open Source
 Version actuelle PHP8 mais 7 est plus stable

[Link] 2
Utilité et utilisation de PHP

 Création de pages HTML « dynamiques »,


fabriquées à la volée, construite à la demande

 Interface entre un serveur Web et des bases de


données

 Création d’applications Web

[Link] 3
Principales fonctionnalités de PHP

 Manipulation de chaînes et tableaux


 Calendrier / dates / heures
 Fonctions mathématiques
 Accès au système de fichiers
 Manipulation d’images
 HTTP / FTP …
 Bases de données (Oracle, MySQL, …)
 …

[Link] 4
Fonctionnement de PHP
Requête HTTP
Localisation
Connexion sur
de du
du le
la
codeclient
serveur ([Link])
ressource
PHP (port
dans80)
le fichier
Client
Fermeture de la connexion
GET /[Link] HTTP/1.0
Navigateur
Réseau •HTML
Protocole HTTP •JavaScript
•CSS
Envoi du résultat au client
Rendu graphique des données
Exécution d’un programme sur le serveur
= réponse HTTP Construction de la réponse

<html>
<head>
<title>Hello</title>
</head>
Serveur <body>Hello world</body>
</html> <?php
Serveur Web .html
[Link]
echo <<<HTML
.php <html>
.jpg <head>
Module PHP <title>Hello</title>
</head>
<body>Hello world</body>
MySQL </html>
HTML;
[Link] Exécution du code PHP 5
Fonctionnement de PHP

Client  Serveur

1. Connexion TCP sur le serveur (port 80)


2. Requête HTTP du client (mon_fichier.php)
3. Localisation de la ressource
4. Exécution du code PHP
5. Envoi du résultat de l’exécution au client
= réponse HTTP
6. Fermeture de la connexion
7. Rendu graphique des données (HTML, image, …)

[Link] 6
Programme en PHP

Délimitation du code PHP dans le fichier .php :


 <?php Code PHP ?> Fermeture optionnelle
 <script language="PHP">
Code PHP Confusion avec JavaScript
 à bannir !!
</script>
 <? Code PHP ?> Dépend de la configuration
du serveur
 <% Code PHP %>  à bannir !!

short_open_tag

asp_tags
[Link] 7
Eléments de syntaxe PHP

 La syntaxe de PHP ressemble à celle de famille


"C" (C, C++, Java, …)

 Chaque instruction se termine par ";"

 Commentaires:
/* jusqu’au prochain */
// jusqu’à la fin de la ligne
# jusqu’à la fin de la ligne

[Link] 8
Les variables et les types de données

 Tout identificateur commence par "$"


 Les affectations sont réalisées grâce à "="
 Numérique entier: 12 ou réel: 1.54

 Chaîne: "Hello" ou ’Bonjour’

 Booléen: true, false (PHP 4)

 Tableau: $tab[2]=12

 Objet (PHP4, PHP5)

 Ressource

 NULL

 Le type d’une variable est dynamique et est


déterminé par la valeur qui lui est affectée
[Link] 9
Typage faible. Exemple

// Pas de déclaration de variable

$test = 1.5 ; // Réel

$test = 12 ; // Entier

$test = array() ; // Tableau

$test = "10" ; // Chaîne

echo $test ; // 10

[Link] 10
Typage automatique. Exemple

$nombre1 = 1.5 ; // Réel


$nombre2 = 12 ; // Entier
$chaine1 = "10" ; // Chaîne
$chaine2 = 'coucou' ; // Chaîne

$total =
$nombre1 + $nombre2 + $chaine1 + $chaine2 ;
1.5 12 "10" 'coucou'

13.5 10

23.5 0

echo $total ; // 23.5 Réel 23.5

[Link] 11
Les chaînes de caractères

Substitution de variables dans les chaînes


 Guillemets simples
 $a='chaîne' ; chaîne
 $b='voici une $a'; voici une $a
 Guillemets doubles
 $a="chaîne" ; chaîne
 $b="voici une $a"; voici une chaîne
 Syntaxe HereDoc
 $a="chaîne" ; chaîne
 $b=<<<MARQUE_DE_FIN
voici une $a voici une chaîne
sur deux lignes ;-) sur deux lignes ;-)
MARQUE_DE_FIN;
[Link] 12
Concaténation de chaînes

 Permet d’assembler plusieurs chaînes


 Réalisé grâce à l’opérateur point : .
"Bonjour " . "Marcel"
 vaut "Bonjour Marcel"

$nb = 6*2 ;
"Acheter " . $nb . " oeufs"
 vaut "Acheter 12 oeufs"

[Link] 13
La commande echo

 Permet d’envoyer du texte au navigateur du


client (« écrire » la page au format HTML
résultant de l’interprétation de PHP)
 echo "Bonjour" ;
 $nom="Marcel" ; echo "Bonjour $nom" ;

 Plus généralement, permet d’envoyer des octets


au navigateur du client
 Ficher HTML, XML, CSS, JavaScript, …
 Données d'une image
 Contenu d'un ficher PDF, Flash, etc.
[Link] 14
Interprétation Hello
du code PHP!sur le serveur
world
et transmission du résultat au client
<?php Serveur Navigateur
$debut = <<<HTML
<html> <html>
<head> <head>
<title>hello</title> <title>hello</title>
</head> </head>
<body>\n <body>
HTML; Hello world!
$corps = "Hello world!\n"; </body>
$fin = <<<HTML </html>
</body>
</html>
HTML;
/* Envoi au client */
echo $debut.$corps.$fin ;

Impossible de voir le code PHP depuis le navigateur !!


[Link] 15
Les opérateurs arithmétiques

$a + $b Somme

$a - $b Différence
$a * $b Multiplication
$a / $b Division

$a % $b Modulo (Reste de la division entière)

[Link] 16
Les opérateurs d’in- et de
dé-crémentation pré- et post-fixés

Retourne la valeur de $a puis augmente la


$a++
valeur de $a de 1
Augmente la valeur de $a de 1 puis
++$a retourne la nouvelle valeur de $a
Retourne la valeur de $a puis diminue la
$a--
valeur de $a de 1
Diminue la valeur de $a de 1 puis retourne
--$a la nouvelle valeur de $a

[Link] 17
Les opérateurs de comparaison

$a== $b Vrai si égalité entre les valeurs de $a et $b

$a != $b Vrai si différence entre les valeurs de $a et $b

$a < $b Vrai si $a inférieur à $b

$a > $b Vrai si $a supérieur à $b

$a <= $b Vrai si $a inférieur ou égal à $b

$a >= $b Vrai si $a supérieur ou égal à $b

$a === $b Vrai si $a et $b identiques (valeur et type)

$a !== $b Vrai si $a et $b différents (valeur ou type)

[Link] 18
Les opérateurs logiques

[Expr1]and [Expr2] Vrai si [Expr1] et [Expr2] sont vraies

[Expr1] && [Expr2] idem

[Expr1] or [Expr2] Vrai si [Expr1] ou [Expr2] sont vraies

[Expr1] || [Expr2] idem


Vrai si [Expr1] ou [Expr2] sont vraies
[Expr1] xor [Expr2]
mais pas les deux
! [Expr1] Vrai si [Expr1] est non vraie

[Link] 19
Les opérateurs sur bits

$a & $b ET binaire

$a | $b OU binaire

$a ^ $b XOR binaire

~ $a Inversion bit à bit

$a << $b $a décalé à gauche de $b rangs


$a >> $b $a décalé à droite de $b rangs

[Link] 20
Précédence des opérateurs

Opérateurs
new
[
++ --
! ~ - (int) (float) (string) (array) (object) @
*/%
+-.
<< >>
< <= > >=
== != === !==
&

[Link] 21
Précédence des opérateurs

Opérateurs
^
|
En cas de doute,
&& utilisez les parenthèses ;-)
||
? :
= += -= *= /= .= %= &= |= ^= <<= >>=
and
xor
or

[Link] 22
Structure de contrôle Si…Alors…Sinon…
if (condition)
{
/* Bloc d’instructions exécuté si la
condition est vraie */
}
[else
{
/* Bloc d’instructions exécuté si la
condition est fausse */
}]

[Link] 23
Structure de contrôle Tant que… faire…
while(condition)
{
/* Bloc d’instructions répété tant que la
condition est vraie */
}

do {
/* Bloc d’instructions exécuté une fois
puis répété tant que la condition est
vraie */
} while (condition) ;

[Link] 24
Structure de contrôle Tant que… faire…
for(avant; condition; fin_chaque_itération)
{ /* Bloc d’instructions répété tant que la
condition est vraie */
}

Équivalent à:

avant ;
while (condition)
{ /* Bloc d’instructions répété tant que la
condition est vraie */
fin_chaque_itération ;
}
[Link] 25
Structure de contrôle switch…

switch (val)
{
case v1:
instructions exécutées si val==v1
case v2:
instructions exécutées si val==v2
ou si val==v1

default:
instructions dans tous les cas
}

[Link] 26
L’instruction break
Permet de sortir d’une structure de contrôle
switch (val)
{
case v1:
instructions exécutées si val==v1
break ; /* On sort du switch si val==v1 */
case v2:
instructions exécutées si val==v2
ou si val==v1
break ; /* On sort du switch si val==v2 */

default:
instructions exécutées dans tous les cas
si val!=v1 et val!=v2
}

[Link] 27
Les tableaux

 Création / initialisation:
$tab1=array(12, "fraise", 2.5) ;

$tab2[] = 12 ; Clé Valeur


$tab2[] = "fraise" ; 0 12
$tab2[] = 2.5 ; 1 "fraise"
2 2.5
$tab3[0] = 12 ;
$tab3[1] = "fraise" ;
$tab3[2] = 2.5 ;
[Link] 28
Les tableaux « à trous »

 Les éléments du tableaux ne sont pas forcement


d’indices consécutifs :
Clé Valeur
$tab4[0] = 12 ; 0 12
$tab4[1] = "fraise" ; 1 "fraise"
$tab4[2] = 2.5 ; 2 2.5
$tab4[5] = "el5" ; 3
4
5 "el5"

 Comment parcourir de tels tableaux ?


[Link] 29
Les tableaux « à trous » (suite)
Parcours classique : 4
for ($i=0; $i < sizeof($tab4); $i++)
{ echo "tab4[$i]: "
. $tab4[$i] . "<BR>\n";
} Clé Valeur
0 12
1 "fraise"
2 2.5
3
4
? 5 "el5"
[Link] 30
Structure de contrôle Pour chaque…

foreach ($tableau as $element)


{
/* Bloc d’instructions répété pour
chaque élément de $tableau */
/* Chaque élément de $tableau est
accessible grâce à $element */
}

[Link] 31
Parcours de tableau : foreach

PHP … HTML
… Val:12<br>\n
$tab4[0] = 12 ; Val:fraise<br>\n
$tab4[1] = "fraise" ; Val:2.5<br>\n
Val:el5<br>\n
$tab4[2] = 2.5 ;

$tab4[5] = "el5" ;
foreach($tab4 as $v)
{ Navigateur
echo "Val: $v<br>\n";
}

[Link] 32
Tableaux associatifs
 Tableaux dont l’accès aux éléments n’est plus
réalisé grâce à un index (0,1,…) mais grâce à
une clé de type entier ou chaîne.
 Exemples de clés:
$tab['un'] = 12 ;
$tab[205] = "bonjour" ;
$tab["la valeur"] = 3.0 ;
 Création
$tab = array(cle1 => val1,
cle2 => val2,
…);
[Link] 33
Tableaux associatifs - Exemples

$tab5['un'] = 12 ;
$tab5['trois'] = "fraise" ;
Clé Valeur
$tab5["deux"] = 2.5 ;
"un" 12
$tab5[42] = "el5" ;
"trois" "fraise"
"deux" 2.5
42 "el5"
$tab6 = array('un' => 12,
'trois' => "fraise",
"deux" => 2.5,
42 => "el5") ;

[Link] 34
Structure de contrôle Pour chaque…

foreach($tableau as $cle => $element)


{
/* Bloc d’instructions répété pour
chaque élément de $tableau */
/* Chaque élément de $tableau est
accessible grâce à $element */
/* La clé d’accès à chaque élément est
donnée par $cle */
}

[Link] 35
Parcours de tableau
<?php
$html = <<<HTML
<html>
<head><title>foreach clé</title>
</head>
<body>
HTML;
$tab6 = array('un' => 12,
'deux' => "fraise",
"trois" => 2.5,
"quatre" => "el5") ;
foreach ($tab6 as $cle => $val)
{
$html .= "tab[$cle]: $val<br>\n" ;
}
echo $html . "</body>\n</html>" ;

[Link] 36
Exemple de génération de code HTML
<?php
$html = <<<HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<title>Boucle</title>
</head>
<body>
HTML;
for ($i=1; $i<20; $i++) {
$html .= "Le serveur compte... "
. $i . "<br>\n" ;
}
$html .= <<<HTML
</body>
</html>
HTML;
echo $html ;

[Link] 37
Traitement des données de formulaires

 PHP permet de traiter les données saisies grâce


à un formulaire HTML si le champ ACTION du
formulaire désigne une page PHP du serveur.

 Après récupération par le serveur Web, les


données sont contenues dans l'une des
variables superglobales de type tableau
associatif $_GET ou $_POST (ou $_REQUEST).

 La valeur peut être trouvée grâce à une clé qui


porte le même nom que le champs du formulaire
de la page HTML de saisie.
[Link] 38
Traitement des données de formulaires
Client
Réseau Navigateur
nomPers=robert•HTML
•JavaScript
•CSS
<html>
<head>
<title>bonjour</title>
</head>
<body>
Bonjour robert !
</body>
Serveur </html> nomPers
Serveur Web <?php
$html = <<<HTML
<html>
<head><title>bonjour</title></head>
Module PHP <body>
robert
HTML;
$html .= "Bonjour ".$_GET['nomPers']." !\n" ;
echo $html . "</body>\n</html>" ;

[Link] 39
Exemple – Formulaire HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>formulaire</title>
</head>
<body>
<form action="[Link]" method="get">
Nom: <input type="text" name="nomPers">
<input type="submit" value="Envoyer">
</form>
</body>
</html>

[Link] 40
Exemple – Traitement en PHP
<?php
$html = <<<HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Validation</title> $_GET['nomPers']
</head> est-il défini ?
<body>
HTML;
if (isset($_GET['nomPers'])) $_GET['nomPers']
{
if (!empty($_GET['nomPers'])) est-il vide ?
{
$html .= "Vous avez saisi '"
.$_GET['nomPers']."'\n" ;
}
else
$html .= "Aucune valeur saisie\n";
}
else
$html .= "Utilisation incorrecte\n" ;
echo $html . "</body>\n</html>" ;
[Link] 41
Formulaires contenant des champs
« SELECT »

[Link] 42
Formulaires contenant des champs
« SELECT unique»
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Formulaire de saisie des fruits</title>
</head>
<body>
<form action="[Link]" method="get">
Choisissez des fruits:&nbsp;
<select name="sel">
<option>Fraise
<option>Pomme
Envoyer <option>Poire
<option>Banane
<option>Cerise
</select>
<input type="submit" value="envoyer">
</form>
</body> [Link]?sel=Pomme
</html>

[Link] 43
Formulaires contenant des champs
« SELECT multiple»
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Formulaire de saisie des fruits</title>
</head>
<body>
<form action="[Link]" method="get">
Choisissez des fruits:&nbsp;
<select name="sel" multiple>
<option>Fraise
<option>Pomme
<option>Poire
Envoyer <option>Banane
<option>Cerise
</select>
<input type="submit" value="envoyer">
</form>
</body> [Link]?sel=Pomme&sel=Poire ???
</html>

[Link] 44
Formulaires contenant des champs
« SELECT multiple»
<html>
<head>
<title>Formulaire de saisie des fruits</title>
</head>
<body>
<form action="[Link]" method="get">
Choisissez des fruits:&nbsp;
<select name="sel[]" multiple>
<option>Fraise
<option>Pomme
Envoyer <option>Poire
<option>Banane
<option>Cerise
</select>
<input type="submit" value="envoyer">
</form> [Link]?sel%5B%5D=Pomme&sel%5B%5D=Poire
</body>
</html> [Link]?sel[]=Pomme&sel[]=Poire

[Link] 45
Traitement des données des champs
« SELECT »
<?php
$html = <<<HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Liste de fruits</title>
</head> $_GET[‘sel']
<body> est un tableau
HTML;
if (isset($_GET['sel']) && !empty($_GET['sel']))
{/* La variable $_GET['sel'] est définie
et elle n'est pas vide */
foreach($_GET['sel'] as $fruit)
$html .= "Vous avez choisi $fruit<br>\n" ;
}
else
$html .= "Vous n'avez pas choisi de fruit\n" ;
echo $html . "</body>\n</html>" ;

[Link] 46
Résultat

[Link] 47
Formulaires contenant des champs
« CHECKBOX »

[Link] 48
Formulaires contenant des champs
« CHECKBOX »
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Formulaire de saisie des fruits</title>
</head>
<body>
<form name="formu" action="[Link]" method="get">
Choisissez des fruits&nbsp;:<br>
<input type="checkbox" name="sel[]" value="Fraise">Fraise<br>
<input type="checkbox" name="sel[]" value="Pomme" >Pomme <br>
<input type="checkbox" name="sel[]" value="Poire" >Poire <br>
<input type="checkbox" name="sel[]" value="Banane">Banane<br>
<input type="checkbox" name="sel[]" value="Cerise">Cerise<br>
<input type="submit" value="Envoyer">
</form>
</body>
</html>

[Link] 49
Résultat

[Link] 50
Références

$a = 12 ;
$b = $a ; $a 84
12

$c = &$a ; $b "coucou"
12
$b = "coucou" ; $c "hello"
$c = 84 ;
$a : 84
echo "\$a : $a\n" ;
echo "\$b : $b\n" ;
$b : coucou
echo "\$c : $c\n" ;
$c : 84
unset($c) ;
$c = "hello" ;
[Link] 51
Fonctions utilisateur

 Description d’une fonctionnalité dépendant


éventuellement de paramètres et retournant
éventuellement un résultat
 Définition
function moyenne($a,$b)
{
return ($a+$b)/2. ;
}
 Utilisation
$resultat = moyenne(2,4) ;
echo $resultat ; // vaut 3
[Link] 52
Fonctions utilisateur

 Valeur de retour
function moyenne($a,$b)
{ … }
Typage faible de PHP :
Aucune information
 Arguments
function moyenne( $a, $b)
{ … }

Typage faible de PHP :


Aucune information

[Link] 53
Mode de passage des arguments (types natifs)
<?php
function permutation($x, $y) {
echo "permutation..." ;
$t = $x ;
$x = $y ;
Permutation impossible :
$y = $t ; Passage des arguments
} des fonctions par valeur
$a = 12 ;
$b = 210 ;
echo "\$a = $a" ; $a = 12
echo "\$b = $b" ; $b = 210
permutation($a, $b) ; permutation...
echo "\$a = $a" ; $a = 12
echo "\$b = $b" ; $b = 210
?>

[Link] 54
Mode de passage des arguments (types natifs)
<?php
function permutation(&$x, &$y) {
echo "permutation..." ;
$t = $x ;
$x = $y ;
Permutation
$y = $t ;
réussie
}
$a = 12 ;
$b = 210 ;
echo "\$a = $a" ; $a = 12
echo "\$b = $b" ; $b = 210
permutation($a, $b) ; permutation...
echo "\$a = $a" ; $a = 210
echo "\$b = $b" ; $b = 12
?>

[Link] 55
Arguments par défaut des fonctions
 Valeur par défaut d’un argument s’il n’a pas été
défini lors de l’appel de la fonction
function bonjour($nom="inconnu")
{ echo "Bonjour cher $nom" ; }

 Utilisation
bonjour() ;
Bonjour cher inconnu

bonjour("Marcel") ;
Bonjour cher Marcel
[Link] 56
Définition de fonctions fréquemment utilisées

 Certaines fonctions sont utilisées dans plusieurs


scripts PHP
 Comment faire pour ne pas les définir dans
chacune des pages ?
 Utilisation de :
 include("fichier") ;
 require("fichier") ;
 include_once("fichier") ;
 require_once("fichier") ;
 Permet d’inclure le contenu de fichier dans
le script courant

[Link] 57
include et require
Fichier [Link]

Fichier [Link] require("[Link]")
<? mafonction(true) ;
function mafonction($arg) …
{
if (isset($arg)) Fichier [Link]
{
echo ("Vrai") ; …
} include("[Link]")
else …
{ $var=false ;
echo ("Faux") ; mafonction($var) ;
} …
}
?> Fichier [Link]

require("[Link]")

[Link] 58
Définition de constantes

<?php
define("ma_constante", "Bonjour à tous") ;

nom valeur

Définition d'une constante

echo ma_constante ;
?>

Utilisation de la constante

[Link] 59

Vous aimerez peut-être aussi