3PHP
3PHP
3PHP
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
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 !
?> ...
...
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
9
Programme en PHP
10
Eléments de syntaxe PHP
• 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
12
Les variables et les types de données
– Booléen: true,
true false (PHP 4)
– Tableau: $tab[2
$tab[ ]=12
– NULL
13
Les variables et les types de données
14
Typage faible. Exemple
$test = 12 ; // Entier
$test = array()
array ; // Tableau
$test = "10"
10 ; // Chaîne
15
Typage automatique. Exemple
13.5 10
23.5 0
echo $total ; // 23.5 Réel
23.5
16
Les chaînes de caractères
17
Concaténation de chaînes
$nb = 6*2 ;
"Acheter " . $nb . " oeufs"
oeufs
vaut "Acheter 12 oeufs"
oeufs
18
La commande echo
Bonjour Marcel
19
Les opérateurs arithmétiques
$a + $b Somme
$a - $b Différence
$a * $b Multiplication
$a / $b Division
20
Les opérateurs de comparaison
== $b
$a Vrai si égalité entre les valeurs de $a et $b
21
Les opérateurs logiques
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
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
31
» Les tableaux « à trous
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
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
39
Parcours de tableau
<?php
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
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
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:
<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:
<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:
<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
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 :<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()
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