Le langage PHP – 2ème partie

Transcription

Le langage PHP – 2ème partie
Bases de données et Sites Web. Li345
Le langage PHP – 2ème partie
généralités
 tableaux
 structures de contrôle

1
Rappel : CGI et bases de données
Architecture 3 tiers
•MySQL : stockage, protection des
données, interface SQL
•PHP:
•extrait données et les met en forme
•reçoit des données et les stocke
•Le navigateur fournit l’interface graphique
Navigateur :
http://serveur/script.php
Serveur web :
exécute le code PHP, produit
un doc. HTML -> navigateur
2
Script PHP : HTML dynamique

Fichier .php contenant du code PHP [dans du HTML].

Tout code PHP doit être inclus dans une balise <?php... ?>
(pour être interprété par le serveur Web)

Le code PHP produit du HTML avec la commande echo
<HTML> <HEAD>
<TITLE>HTML avec PHP</TITLE></HEAD>
<BODY bgcolor=’white’>
Ici c’est du HTML statique.
<P>
<?php echo "Ici c’est du HTML dynamique"; ?>
</P>
</BODY></HTML>
3
Syntaxe de PHP : commentaires

Instructions séparées par des point-virgule;

commentaires :




& valeurs
1. entre les signes « /* » et « */ » ;
2. en commençant une ligne par « // » :
3. en commençant une ligne par « # ».
Littéral = valeur « en dur », non modifiable

Littéraux : numérique: 1 ou 3.14 ou chaîne de caractères: “Tintin
en Amérique” encadré par des guillemets doubles.

Constantes = valeur référencée par un symbole non modifiable


Créé avec la commande define : define (’PI’, ’3.14116’)
Permet d’éviter les fautes de frappe ou de les corriger facilement
4
Syntaxe de PHP : variables

Variable = symbole référençant une valeur.
 syntaxe : un $ suivi du nom. Ex.:$adresse

peut référencer des valeurs de différents
types, au cours de l’exécution : un nombre,
puis une chaîne, ...
 pas de déclaration de variable.
 Attention: minuscules et majuscules :
$adresse ≠ $Adresse
5
Syntaxe de PHP : types de données
Entiers: 1, 2, 3, 12980
 Décimaux: 3.14, 1.23, 2093.2988
 Booléens (TRUE ou FALSE)
 Les chaînes de caractères (entre "…")


Les tableaux et les objets
Typage très souple: PHP convertit le type en
fonction de l’opération effectuée.
Fonctions : isSet(), is_string(), is_int(), is_array(),…
6
Manipulation de données en PHP
$v1 = 2; $v2 = $v1 + 1; /* affectation

$v1 + $v2 : conversion en numérique (vaut donc 5).
Opérateurs arithmétiques classiques (+ - * /) et % pour le modulo.

"… $v1 …" :inclut la valeur de $v1 dans la chaîne

Concaténation de chaînes: chaine1 . chaine2
$c = "$v1 + $v2 = ";
$c = $c . $v1+$v2 ;
$c .= "<BR>“ ;
echo $c;
Donnera dans le HTML produit :
/* 2 + 3 =
/* 2 + 3 = 5
/* 2 + 3 = 5 <BR>
‘2+3 = 5 <BR>’
7
Tableaux en PHP

Tableau = suite de valeurs référencées
par un indice (tableaux indicés)
 ou par une clé (tableaux associatifs)

La paire (indice, valeur) ou (clé, valeur)
est un élément du tableau.
 La taille des tableaux est dynamique: on
ajoute des éléments à volonté.

8
Tableaux indicés

Syntaxe : <NomTableau>[<indice>]




PHP peut affecter automatiquement les indices (ajout
en fin de liste).




$tab[] = "élément 1 "; // $tab[0] !
$tab[] = "élément 2 "; // $tab[1] !
$tab[] = 120; // $tab[2] !
Pour initialiser un tableau, on peut utiliser la
commande array.


$tab[0] = "élément 1 ";
$tab[1] = "élément 2 ";
$tab[2] = 120;
$tab = array ( "élément 1 ", "élément 2 ", 120);
NB: indices automatiques commencent à 0.
9
Tableaux associatifs

Adressage par clé unique
$mes["Vertigo"] = "Hitchcock";
 $mes["Sacrifice"] = "Tarkovski";
 $mes["Alien"] = "Scott";


Ici aussi, initialisation par array.

$mes = array ("Vertigo" =>"Hitchcock",
"Sacrifice" => "Tarkovski",
"Alien" => "Scott");
10
Tableaux à plusieurs dimensions

Un élément est désigné par plusieurs indices ou clés.





$tab[0][0]
$tab[0][1]
$tab[1][0]
$tab[1][1]
=
=
=
=
"En
"En
"En
"En
haut à gauche";
haut à droite";
bas à gauche";
bas à droite";
Valeur de $tab[i]: un tableau à une dimension.
$mes = array (
"Vertigo"
=> array ( "Alfred","Hitchcock"),
"Sacrifice" => array ( "Andrei", "Tarkovski"),
"Alien"
=> array ( "Ridley", "Scott")
);
11
Structures de contrôle
Permettent de diriger le flux d’exécution
vers un ensemble d’instruction, ou bloc.
Les tests: if-else, switch.
 Les boucles: while, for, do, foreach.

12
Conditionnelle : if-then-else
if (expression)
{
// Bloc si expression est vraie.
}
else
{
// Bloc si expression est fausse.
}
// Ici le script continue.
ATTENTION : Une erreur très courante:
$i = 1;
$j = 2;
// Renvoie FALSE: i est différent de j.
if ($i == $j) ...
// Renvoie la valeur de $j, soit TRUE !
if ($i = $j) ...
13
Exemple avec if-then-else
if ($a == 2) {
echo “La variable a vaut 2”
}
else {
if ($a == 3) {
echo “La variable a vaut 3”
}
else {
echo “La variable a ne vaut ni 2 ni 3”
}
}
Possibilité d’utiliser elseif
14
Conditionnelle : switch
switch (expression)
{
Case valeur1 : {bloc1}
Case valeur2 : {bloc2}
…
Default : {bloc_default}
}
// Ici le script continue.
Attention : dès qu’une valeur correspond à
l’expression, tout le reste du code du switch est
exécuté. En principe, on finit chaque bloc par
break pour sortir du switch
15
Boucle While
Permet d’exécuter un bloc d’instructions tant qu’une
condition est remplie.
while (expression)
{
// Ici, expression est vraie.
}
Exemple:
On peut aussi faire un
$a = 0;
while ($a < 10) {
echo “a vaut $a”;
$a = $a + 1;}
do {bloc} while (expr),
bloc est alors exécuté au moins une fois
16
Boucle For
For (initialisation; test; incrément) {bloc};
Plus concis que le While
For ($v1=1;$v1<10;$v1++){echo $v1};
Mais aussi
For ($v1=1,$v2=10;$v1<$v2;$v1++, echo $v1);
Exercice : la même chose avec un while
17
Boucle foreach
Permet de parcourir un tableau.
 Tableau indicé:
foreach ($tableau as $valeur)
{ /* bloc */ }
 Tableau associatif:
foreach ($tableau as $cle => $valeur)
{ /* bloc */ }
À chaque passage dans le bloc, $valeur contient la
valeur de l’élément courant ($cle contient la clé pour les
tableaux associatifs).
18
Break, exit, continue

Dans une boucle :
Break permet de sortir de la boucle
 Exit sort du script
 Continue va directement à la prochaine
évaluation de la condition de la boucle

19
Exemples
PHP permet de récupérer automatiquement les
paramètres transmis par HTTP. Ces paramètres sont
stockés dans des tableaux prédéfinis.
 le tableau $_SERVER contient les paramètres CGI sur
le contexte de la demande.
 le tableau $_POST contient les paramètres transmis
en mode POST.
 le tableau $_GET contient les paramètres transmis en
mode GET.
 le tableau $_REQUEST contient tous les paramètres!
20
Exemple 1 : affichage des
paramètres CGI dans un tableau
<HTML><HEAD>
<TITLE>Paramètres CGI</TITLE>
</HEAD>
<BODY>
<?php
// Script affichant les paramètres CGI.
$serveur = $_SERVER[’SERVER_SOFTWARE’];
$client = $_SERVER[’HTTP_USER_AGENT’];
echo "<TABLE BORDER=1>";
echo "<TR><TD>Le serveur<TD>$serveur";
echo "<TR><TD>Le client<TD>$client";
echo "</TABLE><P>";
?>
21
Exemple 2 : affichage des
paramètres GET
<HTML><HEAD>
<TITLE>Paramètres GET</TITLE>
</HEAD>
<BODY>
<TABLE border=2>
<?php
// Script affichant les paramètres GET.
foreach ($_GET as $cle => $valeur) {
echo "<TR><TD>$cle<TD>$valeur";
}
?>
</TABLE></BODY></HTML>
22
Exemple 3 : Bonjour…
<HTML><HEAD>
<TITLE>Dis bonjour</TITLE>
</HEAD><BODY>
<?php
if (isSet($_REQUEST[’nom’])
and isSet($_REQUEST[’prenom’])) {
$nom = $_REQUEST[’nom’];
$prenom = $_REQUEST[’prenom’];
echo "Bonjour $prenom $nom";
}
else
echo "Mais qui êtes-vous?";
?>
</BODY></HTML>
23