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