Vous êtes sur la page 1sur 23

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
Navigateur :
•Le navigateur fournit l’interface graphique
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 & valeurs

 Instructions séparées par des point-virgule;

 commentaires :
 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 = "; /* 2 + 3 =


$c = $c . $v1+$v2 ; /* 2 + 3 = 5
$c .= "<BR>“ ; /* 2 + 3 = 5 <BR>
echo $c;

Donnera dans le HTML produit : ‘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>]
 $tab[0] = "élément 1 ";
 $tab[1] = "élément 2 ";
 $tab[2] = 120;
 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 = 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] = "En haut à gauche";
 $tab[0][1] = "En haut à droite";
 $tab[1][0] = "En bas à gauche";
 $tab[1][1] = "En 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; do {bloc} while (expr),
while ($a < 10) { bloc est alors exécuté au moins une fois
echo “a vaut $a”;
$a = $a + 1;}

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