3PHP

Télécharger au format ppt, pdf ou txt
Télécharger au format ppt, pdf ou txt
Vous êtes sur la page 1sur 83

Programmation Web :

PHP
PHP: Langage de script pour le Web
• Qu’est-ce que PHP ?
– Acronyme récursif : PHP: Hypertext Preprocessor
– Créé en 1994-1995 par Rasmus Lerdorf
– Extension utilisée sur certains serveurs Web
– Langage multi plate-forme (UNIX / Windows…)
– Open Source
– Facile à apprendre et à utiliser
– Excellent support des SGBD (Oracle, MS, MySql,
DB2…)
Utilisation de PHP

• Création de pages HTML « dynamiques »,


construite à la demande

• Interface entre un serveur Web et des bases de


données

• Création d’applications Web

3
Insérer du code PHP
Fichier test.php sur le serveur
• Directement dans le code <html>
HTML <head>
...
• En remplaçant </head>
<body>
l’extension .html du ...
fichier par <?
echo "Hello le monde !";
l’extension .php ?>
...
<? … ?>
<?php …?>
<script language="php">…
</script>
Insérer du code PHP
Fichier test.php sur le serveur
Code envoyé au client
<html>
<head> <html>
... <head>
</head> ...
<body> </head>
... <body>
<? ...
echo "Hello le monde !"; Hello le monde !
?> ...
...

Le code PHP est interprêté sur le


serveur avant d’être envoyé au client
Principales fonctionnalités de PHP

• Manipulation de chaînes et tableaux


• dates / heures
• Fonctions mathématiques
• Manipulation d’images
• Bases de données (Oracle, MySQL, …)
• …
Fonctionnement de PHP
Rendu
Fermeture
Requête
Exécution
Localisation
Connexion
graphique
Envoi dudeHTTP
du
lasur
de
du
connexion
code
des
le
résultatdu
la
code
serveur
ressource
client
données
PHP
au PHP ((port
client hello.php
dans80)
le fichier
)
= réponse HTTP Client
Navigateur
GET /hello.php HTTP/1.0
Réseau •HTML
•JavaScript
Protocole HTTP •CSS

Exécution d’un programme sur le serveur


<html>
<head>
Serveur
<title>Hello</title> <?php
</head> echo <<<HTML hello.php
Serveur Web
<body>Hello world</body>.html <html>
</html> .php <head>
<title>Hello</title>
Module PHP </head>
<body>Hello world</body>
MySQL </html>
HTML;

7
Fonctionnement de PHP

Client  Serveur

1. Connexion
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, …)

8
Programme en PHP

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


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

9
Programme en PHP

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


• <?php Code PHP ?>

10
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

11
Les variables et les types de données

• Tout identificateur commence par $

• Les affectations sont réalisées grâce à =

12
Les variables et les types de données

• 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,
true false (PHP 4)
– Tableau: $tab[2
$tab[ ]=12
– NULL

13
Les variables et les types de données

• Le type d’une variable est dynamique et est


déterminé par la valeur qui lui est affectée

14
Typage faible. Exemple

// Pas de déclaration de variable

$test = 1.5 ; // Réel

$test = 12 ; // Entier

$test = array()
array ; // Tableau

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

15
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

16
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
chaîne
– $a="chaîne" ;
– $b="voici une $a"; voici une chaîne

17
Concaténation de chaînes

• Permet d’assembler plusieurs chaînes


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

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

18
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"
Bonjour ;
Bonjour
– $nom="Marcel"
Marcel ;
echo "Bonjour $nom"
nom ;

Bonjour Marcel

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

20
Les opérateurs de comparaison

== $b
$a 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)

21
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

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
]}

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

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 */
}

25
…Structure de contrôle Tant que… faire

Équivalent à:

avant ;
while (condition)
{ /* Bloc d’instructions répété tant que la
condition est vraie */
fin_chaque_itération ;
}

26
…Structure de contrôle switch

27
…Structure de contrôle switch

28 08:45:25
Exemple

29
Les tableaux

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

$tab2[] = 12 ;
$tab2[] = "fraise" ; Clé Valeur
$tab2[] = 2.5 ; 0 12
1 "fraise"
$tab3[0] = 12 ; 2 2.5
$tab3[1] = "fraise" ;
$tab3[2] = 2.5 ;

30
» Les tableaux « à trous

• Les éléments du tableaux ne sont pas


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

31
» Les tableaux « à trous

• Comment parcourir de tels tableaux ?

32
» Les tableaux « à trous
4
Parcours classique :
for 
for ($i=0; $i < sizeof($tab4);
$i++)
{ echo "
echo tab4[$i]: ". $tab4[$i] ;
}

33
» Les tableaux « à trous
Parcours classique :

Clé Valeur
0 12
1 "fraise"
2 2.5
3
4
? 5 "el5"
34
…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 */
}

35
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";
}

36
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"
bonjour ;
$tab["la valeur"] = 3.0 ;
• Création
$tab = array(cle1 => val1,
cle2 => val2,
…);

37
Tableaux associatifs - Exemples

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

38
…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 */
}

39
Parcours de tableau
<?php

$tab6 = array('un' => 12,


'deux' => "fraise",
"trois" => 2.5,
"quatre" => "el5") ;
foreach ($tab6 as $cle => $val)
{
echo "tab[$cle]: $val<br>\n" ;
}
?>

40
Fonctions utilisateur

• Définition
function moyenne($a,$b)
{
return ($a+$b)/2. ;
}
• Utilisation
$resultat = moyenne(2,4) ;
echo $resultat ; // vaut 3

41
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

42
Portée des variables

43
Portée des variables

44
La variable objet

45
Définition de constantes

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

nom valeur

Définition d'une constante

echo ma_constante ;
?>

Utilisation de la constante
46
Remarque

47
Obtenir le type d’une variable

48
Définir et supprimer une variable

49
……………………………………………………………………
………………………………………………………………
etc……………………………………………………

50
Traitement des données de formulaires

51
Traitement des données de formulaires
Client
Réseau Navigateur
•HTML
nomPers=robert
•JavaScript
•CSS

<html>
<head>
Serveur
<title>bonjour</title> nomPers
</head>
Serveur
<bodyWeb
> <?php
Bonjour robert ! $html = <<<HTML
</body> <html>
</ html> PHP <head><title>bonjour</title></head>
Module <body>
HTML;
robert
$html .= "Bonjour ".$_GET['nomPers']." !\n" ;
echo $html;

52
53
Exemple – Traitement en PHP

if (isset ($_GET['nomPers']))

est-il défini ?

if (!empty ($_GET['nomPers']))

est-il vide ?

54
Exemple – Traitement en PHP
<?php

if (isset($_GET['nomPers'
nomPers ]))
{ $_GET['nomPers']
if (!empty($_GET['nomPers'
nomPers ])) est-il défini ?
{
echo"
echo Vous avez saisi '"
'
.$_GET['nomPers'
nomPers ]."$
'_GET
\n"
\n [;'nomPers']
} est-il vide ?
else
echo"
echo Aucune valeur saisie\n";
\n
}
else

echo "Utilisation incorrecte\n"


\n ;

55
Exemple
Formulaires contenant des champs
» « SELECT

56
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="valide3.php" method="get">
Choisissez des fruits:&nbsp;
<select name="sel">
<option>Fraise
<option>Pomme
<option>Poire
Envoyer
<option>Banane
<option>Cerise
</select>
<input type="submit" value="envoyer">
</form>
</body> valide3.php?sel=Pomme
</html>

57
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="valide3.php" 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> valide3.php?sel=Pomme&sel=Poire ???
</html>

58
Formulaires contenant des champs
»« SELECT multiple
<html>
<head>
<title>Formulaire de saisie des fruits</title>
</head>
<body>
<form action="valide3.php" 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> valide3.php?sel[]=Pomme&sel[]=Poire
</html>
59
Traitement des données des champs
» « SELECT
<?php

if (isset($_GET['sel']) && !empty($_GET['sel']))


$_GET[‘sel']
{/* La variable $_GET['sel'] est définie est un tableau
et elle n'est pas vide */

foreach($_GET['sel'] as $fruit)
echo"Vous avez choisi $fruit<br>\n" ;
}
else
echo "Vous n'avez pas choisi de fruit\n" ;

60
Résultat

61
Exemple
Formulaires contenant des champs
» « CHECKBOX

62
Formulaires contenant des champs
» « CHECKBOX
<html>
<head>
<title>Formulaire de saisie des fruits</title>
</head>
<body>
<form name="formu" action="valide3.php" 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>

63 08:45:26
Résultat

64 08:45:26
65
……………………………………………………………………
………………………………………………………………
etc..………………………………………………

66
Manipuler une BD

67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
La fonction require  ()

82
La fonction include()

La différence entre require et include est la suivante : require arrêtera l’exécution à la


ligne dans laquelle l’erreur est produit.

include ne s’exécute pas et continuera à s’exécuter quelles que soient les erreurs. Donc,
disons que nous utilisons require et qu’il y avait une erreur dans le code. require arrêtera
l’exécution et vous ne verrez pas les autres lignes de code. Vous obtiendrez également une
erreur indiquant qu’il n’existe aucun fichier ou répertoire de ce type. Pourtant, avec include,
supposons que vous ayez l’erreur. include continuera à exécuter le reste du code.

83

Vous aimerez peut-être aussi