Cours - PHP Licence 2
Cours - PHP Licence 2
Cours - PHP Licence 2
COURS DE
PROGRAMMATION WEB 2
PHP-MySQL
AMEVOR Kossi A.
Année académique 2022-2023
Sommaire
Généralités sur les langages informatiques ................................................... 2
Les variables............................................................................................................ 11
Notion d'ORM……………………………………………………………………….77
1. Langage interprété
Un langage informatique est par définition différent du langage
machine. Il faut donc le traduire pour le rendre intelligible du point de
vue du processeur. Un programme écrit dans un langage interprété a
besoin d’un programme auxiliaire (l’interpréteur) pour traduire au fur
et à mesure les instructions du programme
2. Langage compilé
Un programme écrit dans un langage dit « compilé » va être traduit une
fois pour toutes par un programme annexe (le compilateur) afin de
générer un nouveau fichier qui sera autonome, c’est-à-dire qui n’aura
plus besoin d’un programme autre que lui pour s’exécuter (on dit
d’ailleurs que ce fichier est exécutable). Un programme écrit dans un
langage compilé a comme avantage de ne plus avoir besoin, une fois
compilé, de programme annexe pour s’exécuter. De plus, la traduction
étant faite une fois pour toute, il est plus rapide à l’exécution. Toutefois
il est moins souple qu’un programme écrit avec un langage interprété
car à chaque modification du fichier source (fichier intelligible par
l’homme : celui qui va être compilé) il faudra recompiler le programme
pour que les modifications prennent effet.
I.1 Définition
PHP est un langage de script HTML exécuté du côté du serveur. Il veut
dire « PHP : Hypertext Preprocessor ». Sa syntaxe est largement inspirée
du langage C, de Java et de Perl, avec des améliorations spécifiques. Le
but du langage est d'écrire rapidement des pages HTML dynamiques.
WINDOWS
PHP est un langage très souple prenant ses sources dans divers
langages comme le C, le Perl, le C++. Il est donc possible d'avoir
plusieurs styles de scripts (programmation classique dite procédurale
ou programmation objet, ou programmation bordélique). Cette
souplesse permet une très grande liberté, un peu comme en Perl.
L'inconvénient est qu'on peut très vite obtenir du code illisible
(bordélique), même si ça marche très bien. Prenez donc l'habitude de
commenter votre code, de l'indenter et de ne placer qu'une instruction
par ligne.
Une page php porte l'extension « .php ». Une page PHP peut être
entièrement programmée en PHP ou mélangée avec du code html. PHP
est un langage « Embedded HTML », c'est à dire qu'il apparaît à
n'importe quel endroit de la page HTML. Pour ça on le place dans des
balises particulières : <?php et ?>. On peut aussi utiliser les balises
<script language="php"> et </script>. La première forme est préférable
pour plus de simplicité et une compatibilité XHTML. On écrit donc une
page HTML dans laquelle on intègre du code PHP.
<html>
<head>
<title>Titre de la page</title>
</head>
<body>
<?php
echo "Hello World !";
?>
</body>
</html>
<html>
<head>
<title>Titre de la page</title>
</head>
<body>
Hello world!;
</body>
</html>
<?php
echo "Ceci est un test";
?>
<?php
echo "Ceci est un test"
?>
II.4 Commentaires
<?php
/* echo "salut !" */
// Commentaire sur cette ligne
?>
// Déclaration et règles
$var = 1; // $var est à 1
$Var = 2; // $ Var est à 2
$_toto = 'Salut'; // Ok
$3petitscochons = 5; // Invalide : commence par un chiffre
// Déclaration et transtypage
$var = '2'; // Une chaîne 2
Par défaut les variables sont assignées par valeur : la valeur assignée à
la variable est recopiée dans la variable.
Exemple :
echo $b;//affiche 3
function test_static() {
static $a=0;
echo $a; // +1 à chaque passage dans la fonction
$a++;
}
Variable Description
$_SERVER['DOCUMENT_ROOT'] Racine du serveur
Langage accepté par le
$_SERVER['HTTP_ACCEPT_LANGUAGE']
navigateur
Nom de domaine du
$_SERVER['HTTP_HOST']
serveur
$_SERVER['HTTP_USER_AGENT'] Type de navigateur
$_SERVER['PATH_INFO'] Chemin WEB du script
$_SERVER['PATH_TRANSLATED'] Chemin complet du script
$_SERVER['REQUEST_URI'] Chemin du script
$_SERVER['REMOTE_ADDR'] Adresse IP du client
$_SERVER['REMOTE_PORT'] Port de la requête HTTP
Liste des paramètres
$_SERVER['QUERY_STRING']
passés au script
Un entier est l'ensemble des nombres naturels, c'est à dire sans virgule,
positifs ou négatifs. Les entiers sont généralement codés sur 32 bits
mais cela dépend de l'architecture. Si on affecte un nombre entier qui
dépasse la capacité de la variable, celle-ci sera transformée en réel
(float). Enfin il n'y a pas de notion d'entier non signé.
On parle ici des nombres réels, double ou float, c'est à dire les nombres
à virgules. La virgule est spécifiée par le point « . ». La puissance de 10
s'exprime avec le « e » ou le « E ».
<?php
$vardbl = 1952.36;
$vardbl2= 1.95236E3;//Soit 1.95236 x 1000
echo $vardbl2,"<br />";//Affiche 1952.36
$vardbl3= 1.95236e3;
echo $vardbl3,"<br />";//Affiche 1952.36
echo $vardbl3*100000000000,"<br />";//Affiche 1.95236E14
?>
Une chaîne est une séquence de caractères. PHP travaille en ASCII soit
256 caractères, mais ne supporte pas encore le format Unicode, prévu
dans la version 5. Il n'y a pas de limite théorique pour la taille de la
chaîne.
Séquence Valeur
\\ Antislash
\$ Caractère $
Dans un array, les valeurs sont rangées dans des « cases » différentes.
Ici, nous travaillons sur un array numéroté, c'est-à-dire que chaque
case est identifiée par un numéro. Ce numéro est appelé clé.
<?php
// La fonction array permet de créer un array
$prenoms = array ('François', 'Michel', 'Nicole', 'Véronique', 'Benoît');
?>
<?php
$prenoms[0] = 'François';
$prenoms[1] = 'Michel';
$prenoms[2] = 'Nicole';
?>
<?php
$prenoms[] = 'François'; // Créera $prenoms[0]
$prenoms[] = 'Michel'; // Créera $prenoms[1]
$prenoms[] = 'Nicole'; // Créera $prenoms[2]
?>
<?php
echo $prenoms[1];
?>
<?php
// On crée notre array $coordonnees
$coordonnees = array (
'prenom' => 'François',
'nom' => 'Dupont',
'adresse' => '3 Rue du Paradis',
'ville' => 'Marseille');
?>
Vous remarquez qu'on écrit une flèche (=>) pour dire « associé à ». Par
exemple, on dit « ville » associée à « Marseille ».
<?php
$coordonnees['prenom'] = 'François';
$coordonnees['nom'] = 'Dupont';
$coordonnees['adresse'] = '3 Rue du Paradis';
$coordonnees['ville'] = 'Marseille';
?>
➢ Afficher un tableau associatif
<?php
echo $coordonnees['ville'];
?>
Comme vous l'avez vu dans mes exemples, ils ne servent pas à stocker
la même chose…
– la boucle for ;
– la boucle foreach ;
– la fonction print_r (utilisée principalement pour le débogage).
➢ La boucle for
<?php
// On crée notre array $prenoms
$prenoms = array ('François', 'Michel', 'Nicole', 'Véronique', 'Benoît');
// Puis on fait une boucle pour tout afficher :
for ($numero = 0; $numero < 5; $numero++)
{
echo $prenoms[$numero] . '<br />'; // affichera $prenoms[0], $prenoms[1] etc.
}
?>
➢ La boucle foreach
La boucle foreach est une sorte de boucle for spécialisée dans les
tableaux.
<?php
$prenoms = array ('François', 'Michel', 'Nicole', 'Véronique','Benoît');
foreach($prenoms as $element)
{
echo $element . '<br />'; // affichera $prenoms[0], $prenoms[1] etc.
}?
>
Exemple :
<?php
$coordonnees = array (
'prenom' => 'François',
'nom' => 'Dupont',
'adresse' => '3 Rue du Paradis',
'ville' => 'Marseille');
foreach($coordonnees as $element)
{
echo $element . '<br />';
}?
>
<?php
$coordonnees = array (
'prenom' => 'François',
'nom' => 'Dupont',
'adresse' => '3 Rue du Paradis',
'ville' => 'Marseille');
foreach($coordonnees as $cle => $element)
{
echo '[' . $cle . '] vaut ' . $element . '<br />';
}?
>
Parfois, en codant votre site en PHP, vous aurez sous les bras un array
et vous voudrez savoir ce qu'il contient, juste pour votre
information. Vous pourriez utiliser une boucle for ou, mieux, une
boucle foreach. Mais si vous n'avez pas besoin d'une mise
en forme spéciale et que vous voulez juste savoir ce que contient l'array,
vous pouvez faire appel à la fonction print_r. C'est une sorte de echo
spécialisé dans les arrays.
Constantes Significations
PHP_VERSION Version de PHP installée sur le serveur
PHP_OS Nom du système d’exploitation du serveur
DEFAULT_INCLUDE_PATH Chemin d’accès aux fichiers par défaut
__FILE__ Nom du fichier en cours d’exécution
__LINE__ Numéro de la ligne en cours d’exécution
+ Addition
- Soustraction
* Multiplication
/ Division
% Modulo
! Non logique
Exemple :
$a = "1000"; $b = "+100.0";
!= Est différent de (valeur)
Echo ($a != $b) ;
Est différent de (type et $a = "1000"; $b = "+100.0";
!==
valeur) Echo ($a !== $b) ;
Décrémentation Incrémentation
$var=56; $var=56;
echo $var––; //affiche 56 puis décrémente $var. echo $var++; //affiche 56 puis incrémente $var.
echo $var; //affiche 55. echo $var; //affiche 57.
echo ––$var; //décrémente $var puis affiche 54. echo ++$var; //incrémente $var puis affiche 58.
Opérateur Description
OR Teste si l’un au moins des opérandes a la valeur TRUE :
$a = true;
$b = false;
$c = false;
$d = ($a OR $b);//$d vaut TRUE.
$e = ($b OR $c); //$e vaut FALSE.
$a="Bonjour";
$b=$a." les amis"; // $b contient Bonjour les amis
$b.="! Salut."; // $b contient Bonjour les amis! Salut.
V.1 L’instruction if
If (expression)
{
// bloc de code
}
Exemple :
<?php
$a=6;
if(is_integer($a) && ($a<10 && $a>5) && ($a%2==0) ) {
echo "Conditions satisfaites";
}
?>
Le bloc qui suit les instructions if ou else peut contenir toutes sortes
d’instructions, y compris d’autres instructions if...else. Nous obtenons
dans ce cas une syntaxe plus complexe, de la forme :
if(expression1)
{//Bloc 1}
elseif(expression2)
{//Bloc 2}
else
{//Bloc 3}
Exemple :
<?php
$nombre = -4;
if($nombre == 0)
{
echo "le nombre est égal à zéro";
}
else
{
if($nombre > 0)
{
echo "le nombre est positif";
} else
{
echo "le nombre est négatif";
}
}
?>
Exemple :
<?php
for($i=1;$i<7;$i++)
{
echo "<h$i> $i :Titre de niveau $i </h$i>";
}
?>
Exemple
<?php
$n=1;
while($n%7!=0 )
{
$n = rand(1,100);
echo $n," /";
}
?>
Exemple :
<?php
do
{
$n = rand(1,100);
echo $n," / ";
}
while($n%7!=0);
?>
V.2.4 foreach
La boucle « foreach » est peut-être l'une des plus intéressantes pour la
manipulation de tableaux ou de résultats de requêtes SQL. Elle permet
de lister les tableaux. Elle dispose de deux syntaxes :
<?php
//Création d'un tableau de noms
$tab[1]="Basile";
$tab[2]="Conan";
$tab[3]="Albert";
$tab[4]="Vincent";
//Boucle de lecture du tableau
for($i=1;$i<count($tab);$i++)
{
if ($tab[$i][0]=="A")
{
echo "Le premier nom commençant par A est le n˚ $i: ",$tab[$i];
break;
}
}
?>
Exemple :
<?php
//Interruption d'une boucle for
for($i=0;$i<20;$i++)
{
if($i%5==0) { continue;} ←
echo $i,"<br />";
}
//********************
//Interruption d'une boucle foreach
$tab[1]="Ain";
$tab[2]="Allier";
$tab[27]="Eure";
$tab[28]="Eure et Loir";
$tab[29]="Finistère";
$tab[33]="Gironde";
foreach($tab as $cle=>$valeur)
{
if($tab[$cle][0]!="E") { continue;} ←
echo "code $cle : département ",$tab[$cle],"<br />";
}
?>
Une fonction est un bloc de code qui n’est pas exécuté de manière
linéaire dans un script. Ce code ne le sera que lors de l’appel explicite
de la fonction. Écrit une seule fois, ce code peut être exécuté aussi
souvent que nécessaire. Cela allège d’autant l’ensemble du code.
<?php
$ma_variable = str_replace('b', 'p', 'bim bam boum');
echo $ma_variable;
?>
<?php
$chaine = 'Cette chaîne va être mélangée !';
$chaine = str_shuffle($chaine);
echo $chaine;
?>
Exemple :
<?php
// Enregistrons les informations de date dans des variables
$jour = date('d');
$mois = date('m');
$annee = date('Y');
$heure = date('H');
$minute = date('i');
// Maintenant on peut afficher ce qu'on a recueilli
echo 'Bonjour ! Nous sommes le ' . $jour . '/' . $mois . '/' .
$annee . 'et il est ' . $heure. ' h ' . $minute;
?>
return $valeur
Une fonction n'a pas besoin d'être déclarée avant d'être utilisée (sauf si
vous voulez rester compatible avec PHP3), du moment qu'elle apparaît
dans le script.
function affiche($msg) {
echo $msg;
}
On peut aussi définir des valeurs par défaut mais ATTENTION, dans la
liste des paramètres les valeurs par défaut doivent être en dernier.
Exemple :
Imaginons que votre site s'appelle coursiai.com et que vous avez une
page PHP intitulée bonjour.php. Pour accéder à cette page, vous devez
aller à l'URL suivante :
http://www. coursiai.com/bonjour.php
Pour envoyer des informations à la page bonjour.php. Vous allez
ajouter des informations à la fin de l'URL, comme ceci :
http://www.coursiai.com/bonjour.php?nom=Dupont&prenom=Jean
Ce que vous voyez après le point d'interrogation, ce sont des
paramètres que l'on envoie à la page PHP. Celle-ci peut récupérer
ces informations dans des variables. Voyez sur la figure suivante
comment on peut découper cette URL.
<a href="bonjour.php?nom=Dupont&prenom=Jean">
Dis-moi bonjour
!</a>
<p>
Bonjour <?php echo $_GET['prenom'] . ' ' . $_GET['nom']; ?> !
</p>
<?php
if (isset($_GET['prenom']) AND isset($_GET['nom'])) // On a le nom et le prénom
{
echo 'Bonjour ' . $_GET['prenom'] . ' ' . $_GET['nom'] . ' !';
}
else // Il manque des paramètres, on avertit le visiteur
{
echo 'Il faut renseigner un nom et un prénom !';
}?
>
➢ L’élément TEXTAREA
<Textarea name= "commentaire " rows=10 cols=40 >
//Taper vos commentaires ici
</Textarea>
➢ Bouton option
<input type="radio" name="sexe" value="F" checked>Feminin <BR>
➢ Case à cocher
<input type="checkbox" name="check" value="Word" checked>Feminin
<BR>
<input type=" checkbox" name="check" value="Excel">Excel <BR>
<input type=" checkbox" name="check" value="Access">Access
➢ L’élément Select—option
Cet élément sert à définir des listes (menus déroulant ou ascenseurs).
Elle s’utilise avec l’élément OPTION
<select name="liste">
<option> Taro
<option> Patate
<option> Igname
<option selected> Pomme de Terre
<option> Oignon
<option> Ail
</select >
➢ Boutons
<input type="submit" value="Envoyer">
<input type="reset" value="Annuler">
Comment sont gérées les sessions en PHP ? Voici les trois étapes à
connaître :
Tout ceci peut vous sembler un peu compliqué, mais c'est en fait
très simple à utiliser. Vous devez connaître deux fonctions :
• session_start() : démarre le système de sessions. Si le
visiteur vient d'arriver sur le site, alors un numéro de
session est généré pour lui. Vous devez appeler cette fonction
au tout début de chacune des pages où vous avez besoin
des variables de session.
• session_destroy() : ferme la session du visiteur. Cette
fonction est automatiquement appelée lorsque le visiteur ne
Parfois les cookies ont une mauvaise image. On fait souvent l'erreur de
penser que les cookies sont « dangereux ». Non, ce ne sont pas des
virus, juste de petits fichiers texte qui permettent de retenir des
informations. Au pire, un site marchand peut retenir que vous aimez
les appareils photos numériques et vous afficher uniquement des pubs
pour des appareils photos.
Par exemple Si vous travaillez avec Mozilla Firefox, vous pouvez aller
dans le menu Outils / Options / Vie privée et cliquer sur Supprimer
des cookies spécifiques. Vous obtenez la liste et la valeur de tous les
cookies stockés, comme sur la figure suivante :
Les cookies sont classés par site web. Chaque site web peut écrire,
comme vous le voyez, plusieurs cookies. Chacun d'eux a un
Les cookies sont donc des informations temporaires que l'on stocke sur
l'ordinateur des visiteurs. La taille est limitée à quelques kilo-octets :
vous ne pouvez pas stocker beaucoup d'informations à la fois, mais
c'est en général suffisant.
➢ Écrire un cookie
<?php
setcookie('pseudo', 'M@teo21', time() + 365*24*3600);
?>
<? php
setcookie('pseudo', 'M@teo21', time() + 365*24*3600, null,
null, false, true);
?>
<?php
setcookie('pseudo', 'M@teo21', time() + 365*24*3600, null, null,
false, true); // On écrit un cookie
setcookie('pays', 'France', time() + 365*24*3600, null, null, false,
true); // On écrit un autre cookie...
// Et SEULEMENT MAINTENANT, on peut commencer à écrire du code html
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Ma super page PHP</title>
</head>
<body>
etc.
➢ Afficher un cookie
C'est la partie la plus simple. Avant de commencer à travailler sur une
page, PHP lit les cookies du client pour récupérer toutes les
informations qu'ils contiennent. Ces informations sont placées dans la
superglobale $_COOKIE, sous forme d'array, comme d'habitude.
De ce fait, si je veux ressortir le pseudo du visiteur que j'avais inscrit
dans un cookie, il suffit d'écrire :
$_COOKIE['pseudo'].
VIII.1 Présentation
MySQL est un SGBDR : « Système de Gestion de base de Données
Relationnel » qui se définit lui-même comme étant « La base de données
Open Source la plus populaire au monde ». Rien que ça. Et c'est vrai !
Edité par la société MySQL AB, MySQL est un produit Open Source
libre d'utilisation sous licence GPL pour les projets libres. Cependant
une licence commerciale est nécessaire dans les autres cas, notamment
si on souhaite redistribuer MySQL avec un produit non libre ou si on
souhaite un support technique.
VIII.2 Outils
➢ PhpMyAdmin
S'il reste bien entendu possible d'utiliser MySQL en ligne de commande,
un peu comme « sqlplus » de Oracle, on est bien plus à l'aise avec un
environnement plus intuitif. Ainsi, l'outil phpMyAdmin est une
interface web à MySQL permettant d'effectuer la plupart des tâches de
Nous allons apprendre dans cette partie à lire des données dans une
base de données. Or, PHP doit faire l'intermédiaire entre vous et
MySQL. Problème : PHP ne peut pas dire à MySQL dès le début «
Récupère-moi ces valeurs ».
Vous l'aurez compris, les fonctions mysql_ ne sont plus à utiliser (on
dit qu'elles sont « obsolètes »). Il reste à choisir entre mysqli_ et PDO.
Nous allons ici utiliser PDO car c'est cette méthode d'accès aux bases
de données qui va devenir la plus utilisée dans les prochaines versions
de PHP. D'autre part, le gros avantage de PDO est que vous pouvez
l'utiliser de la même manière pour vous connecter à n'importe quel
autre type de base de données (PostgreSQL, Oracle…) (figure suivante).
Maintenant que nous sommes certains que PDO est activé, nous
pouvons nous connecter à MySQL. Nous allons avoir besoin
de quatre renseignements :
<?php
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', ' ');
➢ Tester
?> la présence d'erreurs
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', ' ');
}catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}?
>
<?php
$donnees = $reponse->fetchAll();
?>
Exemple :
<?php
$req = $bdd->prepare('SELECT * FROM client WHERE nom = ?');
$req->execute(array($_GET[nom]));
?>
La requête est alors exécutée à l'aide des paramètres que l'on a indiqués
sous forme d'array.
<?php
$req = $bdd->prepare('SELECT * FROM client WHERE nom = ? AND
age < ?');
$req->execute(array($_GET[nom], ($_GET[age]));
?>
Pour afficher des détails sur les erreurs lors des requêtes, il faut activer
les erreurs lors de la connexion à la base de données via PDO.
<?php
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '',
array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
?>
Désormais, toutes vos requêtes SQL qui comportent des erreurs les
afficheront avec un message beaucoup plus clair.
<?php
$bdd->exec(Votre requête d’insertion) ;
?>
<?php
$bdd->prepare(Votre requête d’insertion) ;
?>
cd nomDuProjet
php artisan serve