Vous êtes sur la page 1sur 81

Programmation PHP

„ Les bases de PHP


„ MySql

©A. Belaïd 1
Introduction
„ Définition
– Personal Home Page ou (Hypertext PreProcessor)
• Un langage de scripts évolué pour la conception de
sites entiers :
™ s’intègre à HTML
• Relativement simple à utiliser
™ fait notamment des miracles, couplé à un serveur
de base de données
• C’est un langage qui s’exécute du côté serveur
Î il est interprété par le serveur Web
Î C’est quoi cette notion de serveur ?

© A. Belaïd 2
Introduction
„ Architecture client – serveur
– Dans un contexte décentralisé, une entité logiciel (au sens large :
application, système ou processus) commande des traitements à
une autre
• La première est appelée client, et la seconde serveur
– Le serveur est une machine aux capacités importantes
• Gère, grâce à un noyau d'exécution, une base de données
• Possède un système d'exploitation mettant en œuvre un
mécanisme de multitâches
– Le client émet une requête au serveur et le serveur lui renvoie des
données
– Des programmes qui accèdent au serveur sont appelés
programmes clients (client FTP, client mail)

© A. Belaïd 3
Introduction
„ Notion de client – serveur
– Voici, en simplifiant, ce qui se passe lorsque vous consultez une
page html dite statique
• Le navigateur envoie l'adresse URL tapée
• Le serveur web est un "ordinateur" présent sur l'Internet et qui
héberge la page demandée
• Sur ce serveur on trouve Apache, logiciel apte à traiter les requêtes
HTTP
• Apache cherche le fichier demandé dans son arborescence et renvoie
à votre navigateur la page HTML
• Votre navigateur interprète les différents langages se trouvant dans ce
fichier (HTML, JavaScript, CSS, etc.) et affiche la page

© A. Belaïd 4
Introduction
„ Maintenant, voyons ce qui se passe lorsque votre page
HTML contient du code PHP :
– …
– PHP analyse et exécute le code PHP
– Si ce code contient des requêtes vers
MySQL, PHP lui envoie la requête SQL
– La base de données renvoie les
informations voulues au script qui peut
les exploiter
– PHP continue de parser la page, puis
retourne le fichier dépourvu du code
PHP au serveur web
– Le serveur web renvoie donc un fichier
ne contenant plus de PHP, donc
seulement du HTML au navigateur qui
l'interprète et l'affiche

© A. Belaïd 5
Introduction
„ Intérêt de la base de données
– La base de données la plus couramment utilisée avec PHP est sans
aucun doute MySQL
– A quoi sert une base de données ?
• Lorsque vous allez produire des informations dans votre script
PHP, vous devez les stocker quelque part
• Si ce n'est pas le cas, elles seront alors perdues lorsque le
serveur renverra la page HTML au client (votre navigateur)
• Pour les stocker, il existe deux solutions :
1. les enregistrer dans un fichier texte sur le serveur (quelque
part dans l'arborescence de votre hébergement)
2. les enregistrer dans une base de données
• La sauvegarde dans un fichier texte n'est pas l'idéal,
notamment lorsque vous souhaitez chercher, modifier ou
supprimer une partie de l'information que vous stockez

© A. Belaïd 6
Introduction
„ Utiliser PHP sur son ordinateur
– Pourquoi installer PHP sur son ordinateur ?
• Pour tester vos script PHP, vous allez être amené à les envoyer
sur votre hébergeur, sur Internet
• Cependant il devient vite très lourd de sans cesse renvoyer ces
fichiers par FTP
• C'est pourquoi installer un serveur web sur son ordinateur est
utile, et permet de tester ses scripts plus souplement
– Concrètement, votre ordinateur sera à la fois client et serveur
• Ainsi vous pourrez programmer en PHP sans avoir besoin
d'être connecté à Internet, ce qui peut être utile pour les
personnes ne disposant pas de connexions illimitées
– Pour cela, il existe plusieurs utilitaires très pratiques qui installeront
Apache
– Le plus connu est : EasyPHP (Php4) : www.easyPHP.org
– Mais également : Wamp (Php5) : http://www.clubic.com/telecharger-
fiche27009-wamp5.html

© A. Belaïd 7
Introduction
„ Installation de Easyphp (pas au PLG car il est déjà
installé)
– Lancer easyphp1-8-setup.exe
– Le ranger dans le Program Files
• Une icône e apparaît en bas de l’écran
™ Cliquer dessus avec le bouton droit
™ Exécuter Apache Î un bouton vert s’annule

© A. Belaïd 8
Première partie

PHP

©A. Belaïd 9
Les bases du PHP
„ Créer un fichier php
– Le code PHP est toujours encadré par des balises le
signalant
– Les balises possibles sont :
• <?php ?>
• ou <? ?>
• ou <% %>
• ou <script language="php"> </script>
– Le fichier porte le suffixe .php

© A. Belaïd 10
Les bases du PHP
Utilisation de EasyPhp, on verra Wamp plus tard
„ Exemple : exemple0.php
<?php
echo 'Bonjour le monde !' ;
?>
– Rangement du fichier
Sur votre station :
C:\Program Files\EasyPHP1-8\www\exemple0.php
Au PLG :
U:/EasyPHP/www
– Lancement du serveur Apache
Sur votre station :
™ Aller à : C:\Program Files\EasyPHP1-8\
™ Lancer : EasyPHP.exe
Au PLG :
Utiliser le menu : aller à EasyPhp et cliquer sur EasyPhp
– Exécution :
Sur votre station :
™ http://localhost/exemple0.php
Au PLG :
http://127.0.0.1:8080/exemple0.php
© A. Belaïd 11
Les bases du PHP
„ Du HTML dans du PHP : exemple1.php
– echo permet d’introduire du code HTML
– Exemple :
<?php
echo '<font face="arial" size="2"
color="red">Bonjour le monde !</font>';
?>
– Résultat

• Nous avons ajouté la balise font en HTML pour


formater le texte
• En fait PHP ne fait pas le formatage, il faut utiliser
HTML pour ça

© A. Belaïd 12
Les bases du PHP
„ Autre exemple : exemple2.php
– Affichage d’une image en plus du texte
<?php
echo '<div align="center"><font
face="arial" size="2" color="blue">
echo '< Bonjour le monde !</font><br />
'; img src="images/globe.gif"
border="0" /></div> ';
?>

http://www.phpdebutant.org/article14.php
© A. Belaïd 13
Les bases du PHP
„ echo :
– devient plus intéressante avec des variables :
exemple3.php
<?php
for ($i=1; $i<=6;$i++)
{
echo "<br>";
echo "<font size= $i >";
echo "voici une commande <b>echo</b> avec des
<i>balises</i>html";
}
?>

© A. Belaïd 14
Les bases du PHP
„ Autre emploi de echo et des variables : exemple
Switch($heure)
{
case 10:
echo "Stupeurs et tremblements";
break;
case 11:
echo "Générations MP3";
break;
case 12:
case 13:
echo "Trilogie new-yorkaise";
break;
default:
echo "L’Odyssée";
}
© A. Belaïd 15
Les bases du PHP
„ Du code PHP dans du HTML
– A partir du moment où vous placez du code PHP dans
un fichier *.htm ou *.html, vous devriez renommer ce
fichier en *.php ou encore *.phtml
– Le code php se place dans le body

© A. Belaïd http://www.phpdebutant.org/article14.php 16
Les bases du PHP
„ Exemple : exemple4.php
<html>
<body>
<font size="2" face="Arial">Le texte en HTML</font>
// le code PHP ---------
<?php
$heure = date("H\hi");
print("<font size=\"2\" face=\"Arial\"> et celui en
PHP.</font>");
// on entoure \"2\" car 2 doit apparaître entre " "
?>
<!-- retour au code HTML -->
<br>
<font size="2" face="Arial">Il est
// de nouveau, du PHP ---------
<?php echo $heure; ?>
</font>
</body>
© A. Belaïd </html> http://www.phpdebutant.org/article14.php 17
Les bases du PHP
„ La fonction include : exemple5.php
– Permet de ramener du code .php extérieur
– Exemple
<html>
<body>
<font size="2" face="Arial">Le texte en
HTML</font>
<?php
include("toto.inc.php"); // on appelle le
// fichier
?>
</body>
</html>

© A. Belaïd http://www.phpdebutant.org/article14.php 18
Les bases du PHP
„ Le code php de toto.inc.php est
<?php
$heure = date("H\hi");
print("<center><font size=\"2\" face=\"Arial\"> et celui
en PHP. Il est $heure.</font></center>");
?>

© A. Belaïd http://www.phpdebutant.org/article14.php 19
Les bases du PHP
„ La concaténation
– Le point est utilisé pour concaténer des chaînes, des
variables, etc.
– Exemple
• Phrase où un texte doit être collé au bout d'une
variable
• Le point après gmt permet d’indiquer à php la fin de
la concaténation
<?
$date = gmdate("H\hi");
print("Il est $date"."gmt.");
?>

© A. Belaïd http://www.phpdebutant.org/article14.php 20
Les bases du PHP
„ Afficher la date et l’heure
– Avec PHP, il est facile de manipuler la date
– Voici un exemple où on voit en même temps comment
on manipule les variables
• Les variables commencent toujours par le signe $
• Par ailleurs, on voit l’usage du Print pour afficher
(pareil que echo)
<?php
$date = date("d-m-Y");
$heure = date("H:i");
Print("Nous sommes le $date et il
est $heure");
?>

© A. Belaïd http://www.phpdebutant.org/article14.php 21
Les formulaires
„ Récupérer les valeurs d’un formulaire
– Quand on entre les informations dans un formulaire, celles-
ci sont récupérées sous forme de variables
– Le nom de ces variables dépend de la méthode d'envoi du
formulaire
– Soit le formulaire : exemple6.php
<form method="post" action="verif.php">
Nom : <input type="text" name="nom" size="12"><br>
Prénom : <input type="text" name="prenom" size="12">
<input type="submit" value="OK">
</form>
– On utilise la variable d’environnement
$_POST['nom_du_champ'] dans verif.php pour récupérer
le nom d’un champ car la méthode d’envoi utilisée est
"post"

© A. Belaïd http://www.phpdebutant.org/article14.php 22
Les formulaires
„ Code correspondant à verif.php :
<?php
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
print("<center>Bonjour $prenom $nom</center>");
?>

© A. Belaïd http://www.phpdebutant.org/article14.php 23
Les formulaires
„ Contrôler les valeurs d’un formulaire :
– Contrôler si un champ est vide
• if(empty($champ))
– Contrôler si un champ commence par une sous-chaîne
• if ($debut-champ !="sous-chaine")

© A. Belaïd http://www.phpdebutant.org/article14.php 24
Les formulaires
„ exemple7.php
– Le formulaire
<html>
<body>
<form method="post" action="verif2.php">
Titre : <input type="text" name="titre" size="12"><br>
URL : <input type="text" name="url" size="12"
value="http://">
<input type="submit" value="OK">
</form>
</body>
</html>

© A. Belaïd http://www.phpdebutant.org/article14.php 25
Les formulaires
Récupération des champs
– Le code php : verif2.php :
<?php
$titre = $_POST['titre'];
$url = $_POST['url'];
if(empty($titre))
{ print("<center>Le '<b>Titre</b>' est vide !</center>");
exit();
}
// vérification du début de l'url
$verif_url = strtolower($url); // récupère une chaîne en minuscule
$verif_url = substr("$verif_url", 0, 7);
// on vérifie les 7 premiers caractères
if ($verif_url!="http://")
{ print("L'URL doit commencer par <b>http://</b>");
exit();
}
else
{ print("$titre : <a href=\"$url\">$url</a>");
}
?>

© A. Belaïd http://www.phpdebutant.org/article14.php 26
Les formulaires
„ Contrôle de l’adresse mèl :
– Le formulaire : exemple8.php
<html>
<body>
<form method="post" action="verif3.php">
Votre email : <input type="text" name="email"
size="20">
<input type="submit" value="OK">
</form>
</body>
</html>

© A. Belaïd 27
Les formulaires
„ Contrôle de l’adresse mèl :
– Le code php : verif3.php
<?php
$email = $_POST['email'];
$point = strpos($email,".");
$aroba = strpos($email,"@");
if($point=='') {
echo "Votre email doit comporter un <b>point</b>"; }
elseif($aroba=='') {
echo "Votre email doit comporter un <b>'@'</b>"; }
else
{
echo "Votre email est: '<a href = \" mailto: "." $email
"." \"> <b>$email</b></a>' "; }
?>
\ " … \" permet d’écrire une chaîne de caractères avec des "

© A. Belaïd 28
Variables externes à PHP
„ Formulaires HTML (GET et POST)
– Lorsqu'un formulaire est envoyé à un script PHP, toutes les
variables du formulaire seront automatiquement disponibles
dans le script
Î PhP offre plusieurs variables pour les récupérer
– Par exemple, considérons le formulaire suivant : variables-
Post.html
<form action="http://localhost/mes-exemples/variables-POST.php"
method="post">
Nom : <input type="text" name="username" /><br />
Email: <input type="text" name="email" /><br />
<input type="submit" name="submit" value="Envoi!" />
</form>

© A. Belaïd 29
Variables externes à PHP
– variables-Post.php : les variables de récupération
<?php
// Disponibles depuis &php; 4.1.0
echo $_POST['username'];
echo '<br>';
Belaid
echo $_POST['email'];
abelaid@loria.fr
echo '<br>';
Belaid
echo $_REQUEST['username']; abelaid@loria.fr
echo '<br>'; Belaid
echo $_REQUEST['email'];
echo '<br>'; Belaid
import_request_variables('p', 'p_');
echo $p_username;
echo '<br>';
// Disponibles depuis &php; 3.
echo '<br>';
echo $HTTP_POST_VARS['username'];
?>
© A. Belaïd 30
Variables externes à PHP
„ Passage plus facile de paramètres de <form> à php
– Aller dans confi-files/php.ini
– Mettre registers_globals à on
– Ensuite, le passage se fait plus facilement :
– Exemple : connexion-form-php.html
<FORM Method="POST" Action="http://localhost/mes-
exemples/test.php">
Nom : <INPUT type=text size=20 name=nom><BR>
Prénom : <INPUT type=text size=20 name=prenom><BR>
Age : <INPUT type=text size=2 name=age><BR>
<INPUT type=submit value=Envoyer>
<INPUT type=hidden name=afficher value=ok>
</FORM>

© A. Belaïd 31
Variables externes à PHP
„ Passage de paramètres de <form> à php
– test.php
<HTML>
<HEAD>
<TITLE>Affichage des résultats</TITLE>
<BODY>
<?php
echo $nom;
echo '<br>';
echo $prenom;
echo '<br>';
echo $age;
echo '<br>';
echo $afficher;
?>
</BODY>
</HTML>

© A. Belaïd 32
Les structures de contrôle

© A. Belaïd 33
Les bases de php
„ Conditionnelle
<?
$toto = 512;

// on enchaîne les contrôles ci-dessous ----


if($toto>=0 && $toto<500) //1er
{
echo $toto.' est compris entre 0 et 499';
}
elseif($toto>=500 && $toto<1000) //2eme
{
echo $toto.' est compris entre 500 et 999';
}
else //3eme
{
echo $toto.' est plus grand que 999';
}
?>

© A. Belaïd 34
Les bases de php
„ While
<?
$toto = 6;
$i = 0;

//----------[DEBUT BOUCLE]------------
while($i != $toto)
{
echo 'Toto est different de '.$i.'<br>';
$i++; // $i++ est équivalent à ($i+1)
}
//------------[FIN BOUCLE]------------

echo 'Toto est égal à '.$i;


?>

© A. Belaïd 35
Les bases de php
„ Boucle : For
<?
$toto = 6;

//----------[DEBUT BOUCLE]------------
for($i=0; $i != $toto ; $i++)
{
echo 'Toto est different de '.$i.'<br>';
}
//------------[FIN BOUCLE]------------

echo 'Toto est égal à '.$i;


?>

© A. Belaïd 36
Les fichiers
„ Introduction
– PHP est un langage serveur
– Ainsi, avec PHP, on peut créer, modifier, voire supprimer
des fichiers ou des données directement sur le serveur...
„ Manipulation de fichier texte
– Création
• Créer à la main un fichier data.txt ou tout autre
suffixe et le placer sur le serveur
• La caractéristique de ce fichier est qu’il est structuré
par ligne et que chaque ligne contient un maximum
de 255 caractères

© A. Belaïd 37
Les fichiers
„ Le fichier data.txt
1523
„ Le fichier data.php
<?
$fp = fopen("data.txt","r");
$donnees = fgets($fp,255); //on lit une ligne entière
fclose($fp);
//Affichage du résultat -----------
echo 'Le fichier contient : '.$donnees;
?>

Î On aurait pu écrire fgets($fp,4);

© A. Belaïd 38
Les fichiers
Fonctions
– Ouverture : fopen($f,"r" ), "r+", "w", "w+", "a", "a+", "x"

© A. Belaïd 39
Les fichiers
compteur.php
„ Voicile code php qui va vous permettre de réaliser un
compteur de page. Il vous suffit de placer ce code
dans la page index.php de votre site
<?
$fp = fopen("compteur.txt","r+");
$nbvisites = fgets($fp,11);
// On récupère le nombre dans le fichier
$nbvisites++; // On incrémente le nombre de visites(+1)
fseek($fp,0); // On se place en début de fichier
fputs($fp,$nbvisites); // On écrit dans le fichier le nouveau nb
fclose($fp);
print("$nbvisites visiteurs"); // On affiche le compteur à
l'écran
?>

© A. Belaïd 40
Les fichiers
„ Contrôle de la lecture : lire-fichier-ligne.php
<?
if (!$fp = fopen("fichier.txt","r")) {
echo "Echec de l'ouverture du fichier";
exit; }
else {
while(!feof($fp)) {
// On récupère une ligne
$Ligne = fgets($fp,255);
// On affiche la ligne
echo $Ligne;
// On stocke l'ensemble des lignes dans une variable
$Fichier .= $Ligne;
}
close($fp); // On ferme le fichier
}
© A. Belaïd ?> 41
Les fichiers
„ Exemple :
– lecture caractère par caractère : lire-fich-car.php
<?php
$ressource_fichier = fopen('data.txt', 'r');
if($ressource_fichier) {
$contenu_fichier = ''; //initialisation à vide
while(!feof($ressource_fichier)) {
$contenu_fichier .= fgetc($ressource_fichier);
}
fclose($ressource_fichier);
echo $contenu_fichier;
}
?>

© A. Belaïd 42
Les fonctions
„ Déclaration
– Une fonction se déclare de la manière suivante :

<?php

function name_fonction ($params1, $params2, $params


3, ... , $paramsN)
{
// code de la fonction
return ($une_variable) // facultatif
}

?>

© A. Belaïd 43
Les fonctions
„ Exemple 1 : fonction interne
<?php
function stat_fonc() {
static $cpt = 0;
$cpt++;
echo $cpt;
}
stat_fonc();
// affiche 1 c'est-à-dire premier appel à la fonction,
// $cpt est initialisé à 0 une seule fois et incrémenté de 1
stat_fonc();
// affiche 2, $cpt a gardé la valeur précédente et
l'incrémente de 1.
?>

© A. Belaïd 44
Les fonctions
„ Exemple 2 : fonction externe
– fonction.php
<?
function Arial($size,$color,$texte){
print("<font face=Arial size=".$size." color=".$color.">".$te
xte."</font>");
}
?>
– Appel : appel-fonction.php
<?
Require("fonction.php"); // on appelle la page contenant
la fonction, on pourrait utiliser include("fonction.php");
// affichage -----------------------------------------
Arial("2","red","Ici le texte ...");
Arial("3","#0F74A3","Le second texte ...");
?>

© A. Belaïd 45
Exercice
„ Énoncé
– Écrire un formulaire qui vérifie l'identité de l'utilisateur en
demandant un nom, un prénom et un mot de passe (ce dernier
ne devra pas apparaître à l'écran pendant la frappe)
– Tant que l'utilisateur n'est pas reconnu, seul s'affiche le
formulaire
– Si l'utilisateur est reconnu, seul s'affiche un message d'accueil
– La casse des valeurs ne devra être prise en compte (c'est-à-
dire le fait que ce soit tapé en majuscules ou en minuscules ne
devra pas changer le comportement des pages).
– Les espaces tapés en début ou en fin de mot de passe, de
nom ou de prénom devront être éliminés
– Les données se trouvent dans un fichier, organisées par ligne
– Proposer une manière d’inscrire un nouvel utilisateur en
l’ajoutant au fichier

© A. Belaïd 46
Les tableaux
„ Généralités
– Déclaration : plusieurs manières :
<?php
// Déclaration d'un tableau vide
$fruits = array();
// Déclaration d'un tableau indexé numériquement
$legumes = array('carotte','poivron','aubergine','chou');
// Déclaration d'un tableau associatif
$identite = array(
'nom' => 'Hamon',
'prenom' => 'Hugo',
'age' => 19,
'estEtudiant' => true
);
?>

© A. Belaïd 47
Les tableaux à indices
numériques
„ Déclaration
– En PHP, la déclaration est implicite, nul besoin de
préciser à l'avance le nombre d'éléments du tableau...
– Par affectation
$t[0]="bonjour";
$t[1]="bonsoir";
$t[2]="bla bla bla";
– Utilisation
echo "case numéro 2 : ".$t[2]."<BR>\n";
for ($i=2 ; $i<6 ; $i++) {
echo "case numéro $i : ".$t[$i]."<BR>\n"; }
– Exemple : array1.php

© A. Belaïd 48
Les tableaux
„ array1.php
<?php
$tab = array("bonjour", 3, " tout", -5.4, " monde");
for ($i=0 ; $i < count($tab); $i++)
print("indice $i element = $tab[$i] <br>");
print('nombre element = '.count($tab).'<br>');
$tab[5] = "le 6-ieme";
$tab[] = "encore";
for ($i=0 ; $i < count($tab); $i++)
print("indice $i element = $tab[$i] <br>");
?>

© A. Belaïd 49
Les tableaux à indices numériques
„ Liens entre tableaux et fichiers
– Soit le fichier suivant : tableau-03.txt

Thor;Aipaleur;12 Rue Yves Atrovite;59118;Wambrechies


Helmut;Ardalpic;25 Avenue Yann Akpourlui;29000;Quimper
Jacques-André;Lejouré-Lanuit;5 Boulevard Agathe Zepower;92230;Gennevilliers
Gédéon;Teuzmany;123 Rue Alphonse Danltas;59650;Villeneuve d'Ascq
Hakim;Ainerve;2 Rue Yvon Anchier;59830;Cysoing
Thérèse;Ultasonnul;99 Avenue Sophie Fonfec;13000;Marseille

– Le programme suivant va lire le fichier et afficher de manière propre son


contenu

© A. Belaïd 50
Les tableaux à indices numériques
– Fichier : tableau-03.php
<?php
// lecture du fichier et stockage dans un tableau
// (chaque ligne du fichier est dans une case du tableau)
$lignes = file("tableau-03.txt"); //file retourne le fichier dans le tableau $lignes.
Chaque élément du tableau correspond à une ligne du fichier, et les retour-chariots
sont placés en fin de ligne
// traitement de chaque ligne
for ($i=0; $i<count($lignes); $i++) {
// éclatement en éléments distincts
$personne=explode(";",$lignes[$i]); //explode retourne un tableau de
chaînes en utilisant le séparateur “;”
// affichage "propre" des renseignements
echo "<LI>".$personne[0]." ".strtoupper($personne[1])."<BR>"
.$personne[2]."<BR>".$personne[3]." ".$personne[4]; }
?>
© A. Belaïd 51
Les tableaux associatifs
„ Tableau simple :
– clé => valeur
$fruits = array ("a"=>"orange", "b"=>"banane", "c"=>"pomme");
$trous = array (1=>"premier", 2 => "second", 3 => "troisième");
„ Tableau de tableaux :
– cle =>N° de département => sous-tableau région, 1=> région, 2=>
nom du département, 3,4,5,6=>coordonnées sur une carte de
France
var $departement = array (
"01" => array ( "Rhône Alpes","Ain","236","222","255","243" ),
"02" => array ( "Picardie","Aisne","192","97","209","122" ),
"03" => array ( "Auvergne","Allier","176","215","201","232" ),
etc.

© A. Belaïd 52
Les tableaux associatifs
– Fonctions relatives : isset
• Pour tester l’existence d’un élément, on utilise la fonction isset()
• Exemple :
$calories["pommes"]= 300;
$calories["banane"]= 130;
$calories["litchi"]= 30;

if( isset( $calories["pommes"] ) ) {


echo "une pomme contient ", $calories["pommes"] ,
"caloriesn";
}
else{
echo "pas de calories définies pour la pomme n";
}

© A. Belaïd 53
Les tableaux associatifs
„ Parcours
– La méthode classique ne fonctionne pas. Il faut aller chercher les indices
dans le tableau lui-même : à l’aide des fonctions : list, each, reset
– Exemple : array4.php
<HTML><BODY><TABLE BORDER>
<?php
$nom["Thècle"]="Assicmonpote";
$nom["Édith"]="Avuleur";
$nom["Kelly"]="Diocy";
$nom["Mélusine"]="Enfaillite";
$nom["Elmer"]="Hitmieux";
reset($nom); //Remet le pointeur interne de tableau au début
while (list($clef,$valeur)=each($nom)) {
echo "<TR><TD>$clef</TD><TD>$valeur</TD></TR>\n";}
?>
</TABLE></BODY></HTML>
list () : transforme une liste de variables en tableau

© A. Belaïd 54
Les tableaux associatifs
„ Parcours
– On peut également utiliser la structure foreach comme dans le
programme suivant :
– Exemple : array5.php
<HTML><BODY><TABLE BORDER>
<?php
$nom["Thècle"]="Assicmonpote";
$nom["Édith"]="Avuleur";
$nom["Kelly"]="Diocy";
$nom["Mélusine"]="Enfaillite";
$nom["Elmer"]="Hitmieux";
foreach ($nom as $clef => $valeur) {
echo "<TR><TD>$clef</TD><TD>$valeur</TD></TR>\n";
}
?>
</TABLE></BODY></HTML>
© A. Belaïd 55
Exemple : formulaire et tableau :
permet de choisir un prénom dans une liste déroulante et d'afficher
les renseignements correspondants
array3.html $nom["Mélusine"]="Enfaillite";
<HTML><BODY> <FORM $nom["Elmer"]="Hitmieux";
ACTION="tableau-04.php"> $adresse["Thècle"]="123 rue Alex KUZBIDON";
<SELECT NAME="prenom">
$adresse["Édith"]="951 rue Ondine OUCESOIR";
<OPTION
VALUE="Thècle">Thècle $adresse["Kelly"]="5 boulevard Rosa
<OPTION VALUE="Édith">Édith REMECITOYENS";
<OPTION VALUE="Kelly">Kelly $adresse["Mélusine"]="7 rue Jean TANLAMER";
<OPTION $adresse["Elmer"]="99 avenu Dino ZORE";
VALUE="Mélusine">Mélusine $ville["Thècle"]="Rennes";
<OPTION VALUE="Elmer">Elmer
</SELECT> <INPUT $ville["Édith"]="Douarnenez";
TYPE="submit" $ville["Kelly"]="Auchel";
VALUE="renseignements"> $ville["Mélusine"]="Chamonix";
</FORM> $ville["Elmer"]="Langres"; if
</BODY></HTML> (isset($prenom)) { echo "Prénom :
Tableau-04.php $prenom<BR>\nNom".$nom[$prenom]
<?php ."<BR>\nAdresse : ".$adresse[$prenom]
$nom["Thècle"]="Assicmonpote"; ."<BR>\nVille : ".$ville[$prenom]; } ?>
$nom["Édith"]="Avuleur";
$nom["Kelly"]="Diocy";
© A. Belaïd 56
Exercice
„ Énoncé
– On donne une liste de personnes dans le fichier toto.txt dont
voici les premières lignes :
• 19;Thor;Aipaleur;tata 30;Dick;Sionnaire;dsds
• 35;Debbie;Zoudanlkou;dzdz
• 47;Mélanie;Zaitofrai;mzmz
• 48;Helmut;Ardelpic;haha
• 49;Jacques-André;Lejouré-Lanuit;jljl
• 68;Phil;Alapate;papa …
– Chaque ligne est composée, dans l'ordre, d'un identifiant (un
nombre), d’un prénom, d’un nom, et d’un mot de passe
– Écrire une page web qui donne à sélectionner une des
personnes et qui affiche ensuite son mot de passe.

© A. Belaïd 57
Fonctions de dessin
„ Fonctions de dessin

© A. Belaïd 58
Fonctions de dessin
„ Exemple : création d’un histogramme :
– Sous C:\Program Files\EasyPHP 2.0b1\www\mon-www\mes-
exemples/image2.php
– On désire pouvoir générer un histogramme (graphique sous
forme de "batons") représentant le nombre de visites sur
votre site web sur les 12 mois de l'année

© A. Belaïd 59
Fonctions de dessin
„ Étape 1 : Les visites, l'image et les couleurs
– On commence par créer un tableau contenant les visites sur 12
mois (donc 12 valeurs)
On crée ensuite une image 400x300 et on crée trois couleurs, dont
la première (le blanc) sera la couleur du fond
<?php
$visites = array(138, 254, 381, 652, 896, 720, 140, 556, 663, 331
, 407, 768);

header ("Content-type: image/png");


$largeurImage = 400;
$hauteurImage = 300;
$im = ImageCreate ($largeurImage, $hauteurImage)
or die ("Erreur lors de la création de l'image");
$blanc = ImageColorAllocate ($im, 255, 255, 255);
$noir = ImageColorAllocate ($im, 0, 0, 0);
$bleu = ImageColorAllocate ($im, 0, 0, 255);

© A. Belaïd 60
Fonctions de dessin
„ Étape 2 : On dessine les axes
– On place l'axe vertical du temps (un simple trait noir) en bas
de l'image, en laissant une marge de 10 points.
– On écrit en dessous le numéro de chacun des mois en
utilisant une simple boucle for et la fonction ImageString
• Les numéros de mois sont placés tous les 30 points en
partant de la gauche de l'image.
– Enfin on trace un trait vertical représentant l'axe vertical du
nombre de visites

© A. Belaïd 61
Fonctions de dessin
„ Étape 2 : on dessine les axes
– Le code php correspondant
// on dessine un trait vertical pour représenter l'axe du temps
ImageLine ($im, 10, $hauteurImage-10, $largeurImage-
10, $hauteurImage-10, $noir);
// on affiche le numéro des 12 mois
for ($mois=1; $mois<=12; $mois++) {
ImageString ($im, 0, $mois*30, $hauteurImage-
10, $mois, $noir);
}

// on dessine un trait vertical pour représenter le nombre de


visites
ImageLine ($im, 10, 10, 10, $hauteurImage-10, $noir);

© A. Belaïd 62
Fonctions de dessin
„ Étape 3 : on dessine les bâtons
– Tout d'abord, il faut le nombre de visites maximal que nous aurons
à tracer sur le graphe
• Ici, la valeur est posée arbitrairement (1000), mais en réalité il
faudrait la calculer en parcourant le tableau des visites à la
recherche de son maximum, mais faisons simple...
– Pour chacun des mois, il faut calculer la hauteur du rectangle que
l'on veut tracer
• Pour cela on fait un produit en croix sachant que la hauteur du
rectangle pour le nombre de visites maximum serait égale (pour
simplifier) à la hauteur de l'image
– A partir du nombre de visites pour un mois donné on en déduit la
hauteur voulue
– Il ne reste plus qu'à le tracer chaque rectangle, en commençant par
son point supérieur gauche et en finissant par son point inférieur
droit
– Pour améliorer les choses, on ajoute le nombre de visites au
dessus de chaque rectangle
© A. Belaïd 63
Fonctions de dessin
„ Étape 3 : on dessine les bâtons
– Le code php correspondant :
// le nombre maximum de visites
$visitesMax = 1000;

// tracé des bâtons


for ($mois=1; $mois<=12; $mois++) {
$hauteurImageRectangle = round(($visites[$mois-
1]*$hauteurImage)/$visitesMax);
ImageFilledRectangle ($im, $mois*30-7, $hauteurImage-
$hauteurImageRectangle, $mois*30+7, $hauteurImage-10, $bleu);
ImageString ($im, 0, $mois*30-7, $hauteurImage-
$hauteurImageRectangle-10, $visites[$mois-1], $noir);
}

// et c'est fini...
ImagePng ($im);
?>

© A. Belaïd 64
Fonctions de dessin : autres
fonctions utiles

© A. Belaïd 65
Fonctions de dessin
„ Exemple 2 : création de vignette : image3.php
– Dans cet exemple l'objectif est de créer la miniature
d'une image existante
– Vous pourriez avoir à programmer cette fonctionnalité
pour une galerie de photos en PHP
– Les photos de la galerie sont présentées sous la forme
de vignettes sur lesquelles le visiteur peut cliquer pour
agrandir
– Ici nous allons donc générer une miniature avec un
cadre et quelques informations comme le nom de l'image
d'origine et ses dimensions

© A. Belaïd 66
Fonctions de dessin
„ Étape 1 : On prépare le tout...
– A la différence du premier exemple, ce script ne va pas
générer directement une image, celle-ci sera écrite dans
un fichier
– Il n'est donc plus utile de spécifier un header(), le script
redeviens "classique" et peut générer du HTML.
– On commence donc par créer une image vide de
dimensions 200x150, on lit l'image existante avec la
fonction ImageCreateFromJpeg
– Pour la suite nous aurons également besoin des
dimensions de l'image source, on utilise donc les
fonctions imagesx et imagesy

© A. Belaïd 67
Fonctions de dessin
„ Étape 1 : On prépare le tout...
– Le code php correspondant :
<?php
$fichierSource = "photo3.jpg";

$largeurDestination = 200;
$hauteurDestination = 150;
$im = ImageCreateTrueColor ($largeurDestination, $h
auteurDestination)
or die ("Erreur lors de la création de l'image");

$source = ImageCreateFromJpeg($fichierSource);

$largeurSource = imagesx($source);
$hauteurSource = imagesy($source);

© A. Belaïd 68
Fonctions de dessin
„ Étape 2 : Le cadre
– Après avoir créé quelques couleurs, nous traçons le
cadre
– Pour faire simple, il s'agit d'un dégradé de gris
concentrique.
– Pour le réaliser, une méthode simple consiste à tracer
plusieurs rectangles imbriqués et de couleur différente
– On commence par le plus grand (de la même taille que
l'image) de couleur foncée
– On superpose sur celui-ci un autre rectangle plus clair et
légèrement plus petit, et ainsi de suite
– L'épaisseur du cadre réalisé ici est de 8 points

© A. Belaïd 69
Fonctions de dessin
„ Étape 2 : Le cadre
– Le code php correspondant :
$blanc = ImageColorAllocate ($im, 255, 255, 255);
$gris[0] = ImageColorAllocate ($im, 90, 90, 90);
$gris[1] = ImageColorAllocate ($im, 110, 110, 110);
$gris[2] = ImageColorAllocate ($im, 130, 130, 130);
$gris[3] = ImageColorAllocate ($im, 150, 150, 150);
$gris[4] = ImageColorAllocate ($im, 170, 170, 170);
$gris[5] = ImageColorAllocate ($im, 190, 190, 190);
$gris[6] = ImageColorAllocate ($im, 210, 210, 210);
$gris[7] = ImageColorAllocate ($im, 230, 230, 230);

for ($i=0; $i<=7; $i++) {


ImageFilledRectangle ($im, $i, $i, $largeurDestination-$i,
$hauteurDestination-$i, $gris[$i]);
}

© A. Belaïd 70
Fonctions de dessin
„ Étape 3 : La miniature
– Pour créer la miniature, on utilise la fonction ImageCopyResampled
– Cette fonction copie une image dans une autre en procédant à un
redimensionnement
– C'est en quelques sortes un "copier-coller" intelligent...
– Cette fonction prend de nombreux paramètres, mais il sont évidents.
Dans l'ordre:
• L'image de destination ($im)
• L'image source ($source)
• La position sur l'axe horizontal de l'image de destination à partir
de laquelle la copie sera placée (8 pour ne pas empieter sur le
cadre)
• Idem sur l'axe vertical (8)
• La position sur l'axe horizontal dans l'image source (0 car on veut
copier l'intégralité de l'image source)
• Idem sur l'axe vertical (0)

© A. Belaïd 71
Fonctions de dessin
„ Étape 3 : La miniature
• La largeur de la copie dans l'image destination
($largeurDestination-(2*8) la largeur de l'image destination
moins la largeur du cadre à gauche et à droite)
• Idem pour la hauteur
• La largeur de la partie à copier depuis l'image source
($largeurSource car on veut copier l'intégralité de l'image
source)
• Idem avec la hauteur
• Ceci fait, on en profite pour ajouter un petit texte
d'information sur l'image.
• Attention: La fonction ImageCopyResampled est assez
lourde au niveau du temps d'éxécution sur le serveur, n'en
abusez pas !

© A. Belaïd 72
Fonctions de dessin
„ Étape 3 : La miniature
– Le code php correspondant :
ImageCopyResampled($im, $source, 8, 8, 0, 0, $largeurDe
stination-(2*8), $hauteurDestination-
(2*8), $largeurSource, $hauteurSource);
ImageString($im, 0, 12, $hauteurDestination-
18, "$fichierSource -
($largeurSource x $hauteurSource)", $blanc);

© A. Belaïd 73
Fonctions de dessin
„ Étape 4 : Sauvegarde du résultat
– Il ne reste plus qu'à sauvegarder le résultat dans un fichier
commençant par "mini_" gràce à la fonction ImageJpeg
– Lorsque cette fonction n'a qu'un paramètre, elle envoie l'image
au navigateur du visiteur
– Par contre, si en deuxième paramètre elle a un nom de fichier,
rien ne sera envoyé au navigateur, mais l'image sera
sauvegardée
– Ceci est également vrai pour ImagePng

© A. Belaïd 74
Fonctions de dessin
„ Étape 4 : Sauvegarde du résultat
– Le code php correspondant :
$miniature = "mini_$fichierSource";
ImageJpeg ($im, $miniature);
echo "Image miniature générée: $miniature";
?>

© A. Belaïd 75
Variables dynamiques
„ Une variable classique
<?php
$a = 'bonjour';
?>
„ Une variable dynamique : prend momentanément la
valeur d’une autre variable
<?php
$$a = ‘monde';
?>
– Ici, bonjour devient une variable ($bonjour) et a comme valeur
‘monde’
„ Ces codes produisent le même résultat
<?php <?php
echo "$a ${$a}"; echo "$a $bonjour";
?> ?>
© A. Belaïd 76
Les variables d’environnement
„ C’est quoi ?
– PHP propose toute une série de variables, implantées dans le
langage, renseignant sur l’environnement utilisé.
– Ces variables appartiennent à la famille des variables globales
$_SERVER
– Exemples :
• $GLOBALS : contient une référence à chaque variable
actuellement disponible dans le script
• $_POST[] : contient les données transmises par un formulaire via la
méthode "post"
• $_GET[] : contient les données transmises par un formulaire via la
méthode "get"
• $_SESSION[] : contient les données mises en session si session il
ya
• $_COOKIE[] : contient les cookies si cookies il y a
• $_SERVER[] : contient les données propres à l'environnement du
serveur web
• $_FILES[] : contient les fichiers téléchargés par un formulaire via la
méthode "post"
© A. Belaïd 77
Les variables d’environnement
„ Liste des variables :

© A. Belaïd 78
Les variables d’environnement
„ Liste des variables
– Pour connaître la configuration entière de l’installation,
utiliser la fonction suivante :
<?
phpinfo();
?>

© A. Belaïd 79
Quelques
fonctions
utiles

© A. Belaïd 80
Quelques
fonctions
utiles

© A. Belaïd 81

Vous aimerez peut-être aussi