SlideShare una empresa de Scribd logo
1 de 79
Descargar para leer sin conexión
<?php
2 Pierre Faure - pierrefaure.me
Plan de la présentation
1. Les bases de données : MySQL
a. Principe
b. phpMyAdmin
c. Interagir avec une BDD
2. Les fonctions
a. La machine à carottes
b. Exemple avec MySQL
c. Les fonctions PHP
3. Modèle Vue Contrôleur - MVC
a. Principe
b. Mise en pratique
4. Quelques trucs à savoir
a. $_FILES et $_POST
b. $_SESSION
c. L’indentation
d. PHP + HTML = ?
Pierre Faure - pierrefaure.me
1.Les bases de données : MySQL
a.Principe
Photo par closet factory. license CC BY-ND : https://creativecommons.org/licenses/by-nd/2.0/deed.fr
‘‘Une base de donnée est comparable à un placard extensible et modulable
1.Les bases de données : MySQL
a.Principe
La base de donnée contient des tables 

Les tables sont organisées sous forme de tableau
id f_name l_name birth
1
36754
David Axmark 1962-04-28
website
http://…
http://…Rasmus 1968-11-22Lerdorf
users
Pierre Faure - pierrefaure.me
Lier deux tables avec un identifiant
id f_name l_name birth
1
36754
David Axmark 1962-04-28
website
http://…
http://…Rasmus 1968-11-22Lerdorf
users
id name user_id
10
476
MySQL 1
PHP 36754
tools
user_id peut également

s’intituler clé étrangère ou
foreign key (FK)
Pierre Faure - pierrefaure.me
id et user_id, quelle différence ?
id f_name l_name birth
1
36754
David Axmark 1962-04-28
website
http://…
http://…Rasmus 1968-11-22Lerdorf
users
id name user_id
10
476
MySQL 1
PHP 36754
tools
id est un identifiant unique 

user_id permet de lier des données
477 PHP 2 36754
Dans user_id, "user" fair référence au nom de la table liée
Pierre Faure - pierrefaure.me
1.Les bases de données : MySQL
b.phpMyAdmin
Pierre Faure - pierrefaure.me
b.phpMyAdmin : onglet Bases de données
Les bases de données
utf8_general_ci
Créer une base de données
Pierre Faure - pierrefaure.me
b.phpMyAdmin : à l’intérieur de base_de_donnee3
Les tables de la BDD
Créer une table
Pierre Faure - pierrefaure.me
b.phpMyAdmin : à l’intérieur de la table vehicles
Les colonnes
b.phpMyAdmin : l’onglet structure
Nom : Nom assigné à la colonne de la table

Type : Type des données à l’intérieur de la colonne

Interclassement : Encodage 

Attributs > UNSIGNED : Les valeurs seront supérieures à 0

Null : Non = La valeur ne peut pas être inexistante (vide est différent de null)

Défaut : Valeur par défaut de la cellule

Extra > AUTO_INCREMENT : +1 automatiquement lorsqu’une donnée est ajoutée

Action : Opérations réalisables
Pierre Faure - pierrefaure.me
b.phpMyAdmin : syntaxe des noms
Ne jamais utiliser de tiret - dans les noms de vos BDD,
de vos tables ou de vos colonnes
Utilisez underscore _ à la place
Pierre Faure - pierrefaure.me
b.phpMyAdmin : créer une table
Créons une table posts
Contenant les colonnes id, title, content, date
Pierre Faure - pierrefaure.me
b.phpMyAdmin : type & taille d’une colonne
Pierre Faure - pierrefaure.me
b.phpMyAdmin : type & taille d’une colonne
Les types les plus fréquents
INT : valeurs numériques entre 0 et 4,294,967,295
VARCHAR(*) : valeurs entre 0 et 65,535 caractères (255 anciennes versions de MySQL)
TEXT : valeurs entre 0 et 65,535 caractères 

MEDIUMTEXT : valeurs entre 0 et 16,777,215 caractères
TIMESTAMP : Date au format : AAAA-MM-JJ HH:MM:SS
DATETIME : Date au format : AAAA-MM-JJ HH:MM:SS
DATE : Date au format : AAAA-MM-JJ
TIMESTAMP, ajouts et mises à jour - date d’ajout/modification d’un article/commentaire/message …

DATETIME, date spécifique - Événements : anniversaire… | Ne fonctionne pas avec les fuseaux horaires des serveurs
(*) Vous devez obligatoirement spécifier une valeur
Pierre Faure - pierrefaure.me
b.phpMyAdmin : La valeur par défaut
Défaut : Valeur par défaut lors de l’insertion
CURRENT_TIMESTAMP : Date & heure du serveur
Pierre Faure - pierrefaure.me
b.phpMyAdmin : L’interclassement
utf8_general_ci : Suffisant pour les langues telles que le français et l’anglais
utf8_unicode_ci : Pour les langues comme l’allemand, le russe …
Pierre Faure - pierrefaure.me
b.phpMyAdmin : Attribut > UNSIGNED
Attributs > UNSIGNED : Les valeurs stockées seront supérieures à 0
Pierre Faure - pierrefaure.me
b.phpMyAdmin : NULL
Null : Non = La valeur ne peut pas être inexistante
‘‘Une valeur vide n’est pas similaire/égale à une valeur NULL
Pierre Faure - pierrefaure.me
b.phpMyAdmin : Index > PRIMARY
Index PRIMARY : clé primaire & unique de la table « id »
Pierre Faure - pierrefaure.me
b.phpMyAdmin : Auto Incrémentation
A_I (Auto_Increment) : +1 automatiquement lorsqu’une donnée est ajoutée
Pierre Faure - pierrefaure.me
b.phpMyAdmin : Le moteur de stockage
Pierre Faure - pierrefaure.me
b.phpMyAdmin : Le moteur de stockage
INNODB :
- Plus flexible avec les identifiants (clés étrangères)

- Utilisé pour les applications bancaires
MyISAM :

- Plus rapide pour des sites classiques (Insertion et lecture de données)

- Les requêtes de recherche s’effectuent plus rapidement
On utilisera INNODB
cette semaine
Pierre Faure - pierrefaure.me
1.Les bases de données : MySQL
c. Interagir avec une BDD
The Wolf of Wall Street
Pierre Faure - pierrefaure.me
c. Interagir avec une BDD : Se connecter
PDO
Pierre Faure - pierrefaure.me
c. Interagir avec une BDD : Se connecter
PDO
Est le procédé conseillé par PHP pour se connecter aux bases de données
Permet d’interagir plus simplement avec MySQL, Oracle, PostgreSQL …
Pierre Faure - pierrefaure.me
c. Interagir avec une BDD : Se connecter
$host = 'localhost';
$dbname = '';
$user = 'root';
$pass = '';
$db = new PDO('mysql:host='.$host.';dbname='.$dbname, $user, $pass,
array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
PDO
 $pass = 'root';
Pierre Faure - pierrefaure.me
SELECT
INSERT
UPDATE
DELETE
c. Interagir avec une BDD : Requêtes
Pierre Faure - pierrefaure.me
Construction d’une requête
id f_name l_name birth
1
36754
David Axmark 1962-04-28
website
http://…
http://…Rasmus 1968-11-22Lerdorf
users
$sql = 'SELECT * FROM users'; Sélectionner toutes les données de la table users1
SELECT
Pierre Faure - pierrefaure.me
Envoi et traitement d’une requête
$req = $db->prepare($sql);

$req->execute();
Envoi de la requête au serveur

Exécution de la requête
$sql = 'SELECT * FROM users'; Sélectionner toutes les données de la table users1
2
SELECT
Pierre Faure - pierrefaure.me
Traduction du résultat de MySQL pour PHP : fetchAll
$req = $db->prepare($sql);

$req->execute();
Envoi de la requête au serveur

Exécution de la requête
$sql = 'SELECT * FROM users'; Sélectionner toutes les données de la table users1
2
$result = $req->fetchAll(); On stock le résultat de la requête dans $result3
Pourquoi une traduction ?
Car MySQL peut communiquer avec d’autres langages comme Ruby, Python … 

Il faut donc traduire le résultat pour PHP
SELECT
fetchAll() permet de convertir le résultat en tableau. Il joue un rôle de traducteur
fetchAll(PDO::FETCH_ASSOC) le tableau sera associatif
Pierre Faure - pierrefaure.me
Pour résumer
$req = $db->prepare($sql);

$req->execute();
$sql = 'SELECT * FROM users';1
2
$result = $req->fetchAll();3
$db = new PDO(...); Connexion à la base de données0
Ne pas oublier de se connecter une seule fois au tout début du script
Sélectionner toutes les données de la table users
On stock le résultat de la requête dans $result
Envoi de la requête au serveur

Exécution de la requête
SELECT
Pierre Faure - pierrefaure.me
SELECT
Type de requête
SELECT
Destination
FROM
Conditions
WHERE et AND / OR

LIMIT 

GROUP BY

ORDER BY

...
Construction d’une requête
SELECT * FROM users WHERE age > 18 AND sex = 0 ORDER BY f_name LIMIT 20
Sélectionner toutes les colonnes de la table users où l’âge est supérieur à 18 et le sexe
est masculin, les classer par prénom, limiter à 20 lignes
age, sex et f_name sont des colonnes de la table users
Pierre Faure - pierrefaure.me
SELECT * FROM users WHERE age > 18 AND sex = 0 ORDER BY f_name LIMIT 20
SELECT
Les requêtes préparées
SELECT * FROM users WHERE age > :ag AND sex = :sx ORDER BY f_name LIMIT 20
$req = $db->prepare($sql);

$req->execute(array(
':ag' => $age,
':sx' => $sex
));
$sql = ' ';
Passer les paramètres dans le « execute » permet d’éviter les injections SQL
« prepare » est également très utile lorsqu’on « execute » plusieurs fois de suite la
même requête et que les paramètres sont différents d’une fois à l’autre
Pierre Faure - pierrefaure.me
id f_name l_name birth
1
36754
David Axmark 1962-04-28
website
http://…
http://…Rasmus 1968-11-22Lerdorf
users
$sql = "SELECT * FROM users";
$req = $db->prepare($sql);

$req->execute();
$result = $req->fetchAll(PDO::FETCH_ASSOC);
Pour sélectionner toutes les données de la table users
SELECT
Pierre Faure - pierrefaure.me
Array(
[0] => Array(
[id] => 1
[f_name] => David
[l_name] => Axmark
[birth] => 1962-04-28

[website] => http://www.mysql.com/
)
[1] => Array(
[id] => 36754
[f_name] => Rasmus
[l_name] => Lerdorf
[birth] => 1968-11-22

[website] => http://php.net
)
)
var_dump($result);
Que contient $result ?
Un tableau !
SELECT
Pierre Faure - pierrefaure.me
id f_name l_name birth
1
36754
David Axmark 1962-04-28
website
http://…
http://…Rasmus 1968-11-22Lerdorf
users
$sql = "SELECT f_name, l_name FROM users";
$req = $db->prepare($sql);

$req->execute();
$result = $req->fetchAll(PDO::FETCH_ASSOC);
Pour sélectionner uniquement les prénoms et noms de la table users
SELECT
Pierre Faure - pierrefaure.me
Array(
[0] => Array(
[f_name] => David
[l_name] => Axmark
)
[1] => Array(
[f_name] => Rasmus
[l_name] => Lerdorf
)
)
var_dump($result);
Que contient $result ?
Un tableau !
SELECT
Pierre Faure - pierrefaure.me
id f_name l_name birth
1
36754
David Axmark 1962-04-28
website
http://…
http://…Rasmus 1968-11-22Lerdorf
users


$sql = "SELECT * FROM users WHERE f_name = :fnm ";
$req = $db->prepare($sql);

$req->execute(array(':fnm' => $f_name));
$result = $req->fetchAll(PDO::FETCH_ASSOC);
Pour sélectionner toutes les données de la table users qui ont pour f_name David
SELECT
$f_name = 'David';
Pierre Faure - pierrefaure.me
Array(
[0] => Array(
[id] => 1
[f_name] => David
[l_name] => Axmark
[birth] => 1962-04-28

[website] => http://www.mysql.com/
)
)
var_dump($result);
Que contient $result ?
Encore un tableau !
SELECT
Pierre Faure - pierrefaure.me
SELECT
INSERT
UPDATE
DELETE
c. Interagir avec une BDD : Requêtes
Pierre Faure - pierrefaure.me
INSERT
Construction d’une requête
id f_name l_name birth
1
36754
David Axmark 1962-04-28
website
http://…
http://…Rasmus 1968-11-22Lerdorf
users
$sql = "INSERT INTO users SET f_name = :fnm, l_name = :lnm,
birth = :birth, website = :wsite)";
1
On ajoute Mark Zuckerberg à la base de données
Pierre Faure - pierrefaure.me
INSERT
1
$req = $db->prepare($sql);
$req->execute(array(
':fnm' => 'Mark',
':lnm' => 'Zuckerberg',
':birth' => '1984-05-14',
':wsite' => 'http://facebook.com'
));
Envoi de la requête au serveur

Exécution de la requête
2
On ajoute Mark Zuckerberg à la base de données
Envoi et traitement d’une requête
$sql = "INSERT INTO users SET f_name = :fnm, l_name = :lnm,
birth = :birth, website = :wsite)";
Pierre Faure - pierrefaure.me
INSERT
Pour résumer
On ajoute Mark Zuckerberg à la base de données
1
$db = new PDO(...); Connexion à la base de données0
Ne pas oublier de se connecter une seule fois au tout début du script
$req = $db->prepare($sql);
$req->execute(array(
':fnm' => 'Mark',
':lnm' => 'Zuckerberg',
':birth' => '1984-05-14',
':wsite' => 'http://facebook.com'
));
Envoi de la requête au serveur

Exécution de la requête
2
$sql = "INSERT INTO users SET f_name = :fnm, l_name = :lnm,
birth = :birth, website = :wsite)";
Pierre Faure - pierrefaure.me
SELECT
INSERT
UPDATE
DELETE
c. Interagir avec une BDD : Requêtes
Pierre Faure - pierrefaure.me
Construction d’une requête
id f_name l_name birth
1
36754
David Axmark 1962-04-28
website
http://…
http://…Rasmus 1968-11-22Lerdorf
users
$sql = "UPDATE users SET f_name = :newnm WHERE id = 1";1
UPDATE
Modification du prénom par Pierre pour l’utilisateur ayant l’id 1
Pierre Faure - pierrefaure.me
$sql = "UPDATE users SET f_name = :newnm WHERE id = 1";1
UPDATE
Modification du prénom par Pierre pour l’utilisateur ayant l’id 1
$req = $db->prepare($sql);

$req->execute(array(':newnm' => 'Pierre'));
Envoi de la requête au serveur

Exécution de la requête
2
Envoi et traitement d’une requête
Pierre Faure - pierrefaure.me
Pour résumer
$sql = "UPDATE users SET f_name = :newnm WHERE id = 1";1
UPDATE
Modification du prénom par Pierre pour l’utilisateur ayant l’id 1
2
$db = new PDO(...); Connexion à la base de données0
Ne pas oublier de se connecter une seule fois au tout début du script
$req = $db->prepare($sql);

$req->execute(array(':newnm' => 'Pierre'));
Envoi de la requête au serveur

Exécution de la requête
Pierre Faure - pierrefaure.me
SELECT
INSERT
DELETE
c. Interagir avec une BDD : Requêtes
UPDATE
Pierre Faure - pierrefaure.me
Construction d’une requête
id f_name l_name birth
1
36754
David Axmark 1962-04-28
website
http://…
http://…Rasmus 1968-11-22Lerdorf
users
$sql = "DELETE FROM users WHERE id = 1";1
Suppression de l’utilisateur ayant l’id 1
DELETE
Pierre Faure - pierrefaure.me
$sql = "DELETE FROM users WHERE id = 1";1
DELETE
Suppression de l’utilisateur ayant l’id 1
$req = $db->prepare($sql);

$req->execute();
Envoi de la requête au serveur

Exécution de la requête
2
Envoi et traitement d’une requête
Pierre Faure - pierrefaure.me
Pour résumer
$sql = "DELETE FROM users WHERE id = 1";1
DELETE
Suppression de l’utilisateur ayant l’id 1
$req = $db->prepare($sql);

$req->execute();
Envoi de la requête au serveur

Exécution de la requête
2
$db = new PDO(...); Connexion à la base de données0
Ne pas oublier de se connecter une seule fois au tout début du script
Pierre Faure - pierrefaure.me
JOINTURES SQL
t1 t2 t2t1
t2t1
t2t1 t2t1
SELECT * 

FROM t1 

LEFT JOIN t2 

ON t1.key = t2.key
SELECT * 

FROM t1 

RIGHT JOIN t2 

ON t1.key = t2.key
SELECT * 

FROM t1 

FULL OUTER JOIN t2 

ON t1.key = t2.key
SELECT * 

FROM t1 

FULL OUTER JOIN t2 

ON t1.key = t2.key

WHERE t1.key IS NULL
OR t2.key IS NULL
SELECT * 

FROM t1 

INNER JOIN t2 

ON t1.key = t2.key
Soit t1 et t2, deux tables pouvant être reliées l’une à l’autre grâce à des clés étrangères
Modèle original : C.L. Moffatt Pierre Faure - pierrefaure.me
COLLE
2.Les fonctions
On peut comparer une fonction à une machine 

qui effectue toujours les mêmes actions
a.La machine à carottes
Les paramètres
Le résultat : return
Pierre Faure - pierrefaure.me
2.Les fonctions
Rappels
Une fonction effectue une ou plusieurs actions et retourne un résultat
function validPassword($pass){

if(strlen($pass) > 4){
return true;
}
else{
return false;
}

}
Si la longueur du mot de passe est supérieure à 4
On renvoie true
Sinon
On renvoie false
validPassword('1234'); false
validPassword('12345'); true
Pierre Faure - pierrefaure.me
2.Les fonctions
Avec MySQL : supprimer un article
$host = 'localhost';
$dbname = '';
$user = 'root';
$pass = '';
$db = new PDO('mysql:host='.$host.';dbname='.$dbname, $user, $pass,
array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
function deletePost($db, $id){
$sql = "DELETE FROM posts WHERE id = :id";
$req = $db->prepare($sql);
$req->execute(array(':id' => $id));
}
deletePost($db, 1);
Pierre Faure - pierrefaure.me
2.Les fonctions
Les fonctions proposées par PHP
isset(); est définie
empty(); est vide
!empty(); n’est pas vide
explode(); coupe une chaîne de caractère
Liste de l’ensemble des fonctions sur http://php.net/
Pierre Faure - pierrefaure.me
3.Le Modèle MVC
M V CO

D

È
L
E
U

E
O

N

T

R

Ô

L

E

U

R
Pierre Faure - pierrefaure.me
3.Le Modèle MVC
a.Principe
MODÈLE
VUE
CONTRÔLEUR
Contient la plupart de votre code PHP, les fonctions, les requêtes SQL …
Contient vos pages HTML avec peu de PHP (boucles, conditions …)
Fais la liaison entre le modèle et la vue, il permet d’initialiser la logique de votre code avec 

des « include » et des vérifications basiques (utilisateur authentifié, connexion à la BDD …)
Pierre Faure - pierrefaure.me
b.Mise en pratique
monsite Dossier racine
Contrôleur
Configurations (BDD …)
fonctions, requêtes …
fichiers html, images …
config
model
view
index.php
css
img
js
index.html
Pierre Faure - pierrefaure.me
b.Mise en pratique
index.php
index.html
function.php
include 'config/db.php';


CONTRÔLEUR
MODÈLE
VUE
db.php
Connexion
à
la
BDD
include 'model/function.php';
include 'view/index.html';
4.Quelques trucs à savoir
Pierre Faure - pierrefaure.me
4.Quelques trucs à savoir
a.$_FILES et $_POST
&
Pierre Faure - pierrefaure.me
a.$_FILES
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="image">
<input type="submit">
</form>
var_dump($_FILES['image']);
array(5) {
["name"]=> string(53) "screenshot.png"
["type"]=> string(9) "image/png"
["tmp_name"]=> string(36) "/tmp/php/php70mcrk"
["error"]=>int(0)
["size"]=>int(115383)
}
Pierre Faure - pierrefaure.me
a.$_FILES
1 Choix de l’image via le bouton Parcourir … L’image est chez vous
L’image est temporairement 

sur le serveur
2 Verifications diverses
Extension : strrchr()
Type MIME : $_FILES["file"]["type"]

Taille : getimagesize()
3 Déplacer l’image dans le dossier de votre choix

avec le nom désiré
move_uploaded_file()
L’image est définitivement 

sur le serveur
Les étapes de l’envoi de fichier
‘‘Avec les éléments ci-dessus, la sécurité n’est pas nécessairement assurée

Beaucoup de paramètres peuvent entrer en jeu entre votre serveur et votre fichier .htaccess
Pierre Faure - pierrefaure.me
a.$_FILES
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="image">
<input type="submit">
</form>
$_FILES et $_POST sont interprétés différemment par le navigateur
L’envoi de fichier est rendu possible par :
le type="file" qui permet de sélectionner un fichier
le enctype="multipart/form-data" qui signale au navigateur 

qu’il va devoir traiter un fichier
Comment modifier le formulaire pour envoyer un fichier
Pierre Faure - pierrefaure.me
a.$_FILES et $_POST
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="image">
<textarea name="description"></textarea>
<input type="submit">
</form>
var_dump($_POST);
array(1) {
["description"]=> string(22) "description de l'image"
}
Pierre Faure - pierrefaure.me
4.Quelques trucs à savoir
b.$_SESSION
$_SESSION
accueil profil article
‘’En changeant de page, restez connecté grâce à la SESSION
Pierre Faure - pierrefaure.me
b.$_SESSION : initialisation
session_start(); permet d’initialiser une nouvelle SESSION 

Il doit se situer sur chaque page de votre code ou vous souhaitez utiliser la SESSION
Pierre Faure - pierrefaure.me
$_SESSION['username'] = 'Pierre';
$_SESSION['email'] = 'mail@example.com';
$_SESSION['profil-picture'] = 'profil.jpg';
var_dump($_SESSION);
array(3) {
["username"]=> string(6) "pierre"
["email"]=>string(16) "mail@example.com"
["profil-picture"]=>string(10) "profil.jpg"
}
echo 'Bonjour '.$_SESSION['username']; Bonjour Pierre
b.$_SESSION : déclarer des variables
Pierre Faure - pierrefaure.me
b.$_SESSION : se déconnecter
Savoir détruire une SESSION peut s’avérer utile lorsque par exemple, 

un utilisateur se déconnecte
session_unset();
session_destroy();
Permet de "nettoyer" les variables de SESSION 

Elles seront vides
Permet de supprimer la SESSION

Elle ne sera plus existante
Pierre Faure - pierrefaure.me
4.Quelques trucs à savoir
c.L’indentation
Pierre Faure - pierrefaure.me
c.L’indentation
if(){
}
}
}
}
if(){
else{
for($i=0;$i<10;$i++){
Pour le PHP
Pierre Faure - pierrefaure.me
c.L’indentation
<div id="content">
</div>
</ul>
</li>
</div>
<div id="header">
<ul id="list">
<li>
Pour le HTML
Pierre Faure - pierrefaure.me
c.L’indentation
<div id="content">
</div>
}
</div>
</div>
<div id="header">
if{
<div id="connected">
Pour le HTML et le PHP
Pierre Faure - pierrefaure.me
4.Quelques trucs à savoir
d.HTML et PHP
</> <?>&
Pierre Faure - pierrefaure.me
4.Quelques trucs à savoir
d.HTML et PHP
<div id="content">
<ul id="account">
<?php
if($connected == true){
echo '<li>Bienvenue Pierre !</li>';
}
else{
echo '<li><a href="">Inscrivez-vous</a></li>';
}
?>
<li><a href="">Notre newsletter</a></li>
</ul>
</div>
‘‘Vous pouvez mettre du php dans un fichier .html et du html dans un fichier .php
Pierre Faure - pierrefaure.me
?>
Pierre Faure - pierrefaure.me
Made by Pierre Faure

Check out my blog: pierrefaure.me
A big thanks to the noun project for the icons
Fonts: Courier Prime & Marvel
Pierre Faure - pierrefaure.me

Más contenido relacionado

La actualidad más candente

Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiENSET, Université Hassan II Casablanca
 
TP1 Big Data - MapReduce
TP1 Big Data - MapReduceTP1 Big Data - MapReduce
TP1 Big Data - MapReduceAmal Abid
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonAbdoulaye Dieng
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : CassandraLilia Sfaxi
 
Présentation python
Présentation pythonPrésentation python
Présentation pythonSarah
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootDNG Consulting
 
Intelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de rechercheIntelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de rechercheMohamed Heny SELMI
 
Chapitre II. METHODE D'ANALYSE P2 MCD .pptx
Chapitre II. METHODE D'ANALYSE P2 MCD .pptxChapitre II. METHODE D'ANALYSE P2 MCD .pptx
Chapitre II. METHODE D'ANALYSE P2 MCD .pptxanisanima1
 
BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian Lilia Sfaxi
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement webHouda TOUKABRI
 

La actualidad más candente (20)

Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
 
Introduction à Laravel
Introduction à LaravelIntroduction à Laravel
Introduction à Laravel
 
TP1 Big Data - MapReduce
TP1 Big Data - MapReduceTP1 Big Data - MapReduce
TP1 Big Data - MapReduce
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en Python
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
 
Spring Boot RestApi.pptx
Spring Boot RestApi.pptxSpring Boot RestApi.pptx
Spring Boot RestApi.pptx
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Présentation python
Présentation pythonPrésentation python
Présentation python
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
Intelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de rechercheIntelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de recherche
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
Chapitre II. METHODE D'ANALYSE P2 MCD .pptx
Chapitre II. METHODE D'ANALYSE P2 MCD .pptxChapitre II. METHODE D'ANALYSE P2 MCD .pptx
Chapitre II. METHODE D'ANALYSE P2 MCD .pptx
 
Support programmation orientée objet c# .net version f8
Support programmation orientée objet c#  .net version f8Support programmation orientée objet c#  .net version f8
Support programmation orientée objet c# .net version f8
 
BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement web
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Ch 01 poo
Ch 01 pooCh 01 poo
Ch 01 poo
 

Destacado

Mini projet individuel php
Mini projet individuel phpMini projet individuel php
Mini projet individuel phpKhadim Mbacké
 
PHP 1 - Apprendre les bases
PHP 1 - Apprendre les basesPHP 1 - Apprendre les bases
PHP 1 - Apprendre les basesPierre Faure
 
PHP MVC Tutorial
PHP MVC TutorialPHP MVC Tutorial
PHP MVC TutorialYang Bruce
 
Formation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPFormation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPkemenaran
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...ENSET, Université Hassan II Casablanca
 
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)Alphorm
 
How to get an internship in the US?
How to get an internship in the US?How to get an internship in the US?
How to get an internship in the US?Pierre Faure
 
Don't Fear the Regex - Northeast PHP 2015
Don't Fear the Regex - Northeast PHP 2015Don't Fear the Regex - Northeast PHP 2015
Don't Fear the Regex - Northeast PHP 2015Sandy Smith
 
Introduction to PHP H/MVC Frameworks by www.silicongulf.com
Introduction to PHP H/MVC Frameworks by www.silicongulf.comIntroduction to PHP H/MVC Frameworks by www.silicongulf.com
Introduction to PHP H/MVC Frameworks by www.silicongulf.comChristopher Cubos
 
/Regex makes me want to (weep|give up|(╯°□°)╯︵ ┻━┻)\.?/i
/Regex makes me want to (weep|give up|(╯°□°)╯︵ ┻━┻)\.?/i/Regex makes me want to (weep|give up|(╯°□°)╯︵ ┻━┻)\.?/i
/Regex makes me want to (weep|give up|(╯°□°)╯︵ ┻━┻)\.?/ibrettflorio
 
PHP Framework
PHP FrameworkPHP Framework
PHP Frameworkceleroo
 
Principles of MVC for PHP Developers
Principles of MVC for PHP DevelopersPrinciples of MVC for PHP Developers
Principles of MVC for PHP DevelopersEdureka!
 
Introduction au Génie Logiciel
Introduction au Génie LogicielIntroduction au Génie Logiciel
Introduction au Génie Logicielguest0032c8
 
Principe de fonctionnement du cryptage RSA
Principe de fonctionnement du cryptage RSAPrincipe de fonctionnement du cryptage RSA
Principe de fonctionnement du cryptage RSAKristen Le Liboux
 
PHP (Partie II) Par Mahdi Ben Alaya
PHP (Partie II) Par Mahdi Ben AlayaPHP (Partie II) Par Mahdi Ben Alaya
PHP (Partie II) Par Mahdi Ben AlayaMahdi Ben Alaya
 

Destacado (20)

Mini projet individuel php
Mini projet individuel phpMini projet individuel php
Mini projet individuel php
 
PHP MVC
PHP MVCPHP MVC
PHP MVC
 
PHP & MVC
PHP & MVCPHP & MVC
PHP & MVC
 
PHP 1 - Apprendre les bases
PHP 1 - Apprendre les basesPHP 1 - Apprendre les bases
PHP 1 - Apprendre les bases
 
PHP MVC Tutorial
PHP MVC TutorialPHP MVC Tutorial
PHP MVC Tutorial
 
Formation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPFormation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHP
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 
Développement d'un site web de E-Commerce avec PHP (Première Partie)
Développement d'un site web de E-Commerce avec PHP (Première Partie)Développement d'un site web de E-Commerce avec PHP (Première Partie)
Développement d'un site web de E-Commerce avec PHP (Première Partie)
 
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)
 
How to get an internship in the US?
How to get an internship in the US?How to get an internship in the US?
How to get an internship in the US?
 
Don't Fear the Regex - Northeast PHP 2015
Don't Fear the Regex - Northeast PHP 2015Don't Fear the Regex - Northeast PHP 2015
Don't Fear the Regex - Northeast PHP 2015
 
PHP Templating Systems
PHP Templating SystemsPHP Templating Systems
PHP Templating Systems
 
Introduction to PHP H/MVC Frameworks by www.silicongulf.com
Introduction to PHP H/MVC Frameworks by www.silicongulf.comIntroduction to PHP H/MVC Frameworks by www.silicongulf.com
Introduction to PHP H/MVC Frameworks by www.silicongulf.com
 
Grokking regex
Grokking regexGrokking regex
Grokking regex
 
/Regex makes me want to (weep|give up|(╯°□°)╯︵ ┻━┻)\.?/i
/Regex makes me want to (weep|give up|(╯°□°)╯︵ ┻━┻)\.?/i/Regex makes me want to (weep|give up|(╯°□°)╯︵ ┻━┻)\.?/i
/Regex makes me want to (weep|give up|(╯°□°)╯︵ ┻━┻)\.?/i
 
PHP Framework
PHP FrameworkPHP Framework
PHP Framework
 
Principles of MVC for PHP Developers
Principles of MVC for PHP DevelopersPrinciples of MVC for PHP Developers
Principles of MVC for PHP Developers
 
Introduction au Génie Logiciel
Introduction au Génie LogicielIntroduction au Génie Logiciel
Introduction au Génie Logiciel
 
Principe de fonctionnement du cryptage RSA
Principe de fonctionnement du cryptage RSAPrincipe de fonctionnement du cryptage RSA
Principe de fonctionnement du cryptage RSA
 
PHP (Partie II) Par Mahdi Ben Alaya
PHP (Partie II) Par Mahdi Ben AlayaPHP (Partie II) Par Mahdi Ben Alaya
PHP (Partie II) Par Mahdi Ben Alaya
 

Similar a Php 2 - Approfondissement MySQL, PDO et MVC

php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDOAbdoulaye Dieng
 
Initiation au php
Initiation au phpInitiation au php
Initiation au phpStrasWeb
 
Cours php & Mysql - 5éme partie
Cours php & Mysql - 5éme partieCours php & Mysql - 5éme partie
Cours php & Mysql - 5éme partiekadzaki
 
22410B_04.pptx bdsbsdhbsbdhjbhjdsbhbhbdsh
22410B_04.pptx bdsbsdhbsbdhjbhjdsbhbhbdsh22410B_04.pptx bdsbsdhbsbdhjbhjdsbhbhbdsh
22410B_04.pptx bdsbsdhbsbdhjbhjdsbhbhbdshkhalidkabbad2
 
Application web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapApplication web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapBassem ABCHA
 
Les principes de base de PHP
 Les principes de base de PHP  Les principes de base de PHP
Les principes de base de PHP EL JAOUARI Ahmed
 
Trucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLTrucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLDamien Seguy
 
Cours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partieCours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partiekadzaki
 
presentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfpresentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfRihabBENLAMINE
 

Similar a Php 2 - Approfondissement MySQL, PDO et MVC (20)

php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDO
 
Php1
Php1Php1
Php1
 
22410 b 04
22410 b 0422410 b 04
22410 b 04
 
Hive ppt (1)
Hive ppt (1)Hive ppt (1)
Hive ppt (1)
 
Mpdf 3
Mpdf 3Mpdf 3
Mpdf 3
 
Initiation au php
Initiation au phpInitiation au php
Initiation au php
 
Initiation au php
Initiation au phpInitiation au php
Initiation au php
 
Cours php & Mysql - 5éme partie
Cours php & Mysql - 5éme partieCours php & Mysql - 5éme partie
Cours php & Mysql - 5éme partie
 
22410B_04.pptx bdsbsdhbsbdhjbhjdsbhbhbdsh
22410B_04.pptx bdsbsdhbsbdhjbhjdsbhbhbdsh22410B_04.pptx bdsbsdhbsbdhjbhjdsbhbhbdsh
22410B_04.pptx bdsbsdhbsbdhjbhjdsbhbhbdsh
 
La première partie de la présentation PHP
La première partie de la présentation PHPLa première partie de la présentation PHP
La première partie de la présentation PHP
 
Application web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapApplication web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrap
 
Les principes de base de PHP
 Les principes de base de PHP  Les principes de base de PHP
Les principes de base de PHP
 
Php cours
Php coursPhp cours
Php cours
 
Paris RailsCamp 2009
Paris RailsCamp 2009Paris RailsCamp 2009
Paris RailsCamp 2009
 
Trucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLTrucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQL
 
Cours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partieCours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partie
 
Sécurité MySQL
Sécurité MySQLSécurité MySQL
Sécurité MySQL
 
presentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfpresentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdf
 
La 2ème partie de la présentation PHP
La 2ème partie de la présentation PHPLa 2ème partie de la présentation PHP
La 2ème partie de la présentation PHP
 
Cours php bac info
Cours php bac infoCours php bac info
Cours php bac info
 

Último

GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéInstitut de l'Elevage - Idele
 
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...Institut de l'Elevage - Idele
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirstjob4
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageInstitut de l'Elevage - Idele
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...Institut de l'Elevage - Idele
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestionyakinekaidouchi1
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...Institut de l'Elevage - Idele
 
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...Institut de l'Elevage - Idele
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfInstitut de l'Elevage - Idele
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfmia884611
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesInstitut de l'Elevage - Idele
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)Sana REFAI
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...Institut de l'Elevage - Idele
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfInstitut de l'Elevage - Idele
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Ville de Châteauguay
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfInstitut de l'Elevage - Idele
 
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...Institut de l'Elevage - Idele
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusInstitut de l'Elevage - Idele
 

Último (20)

GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversité
 
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdfJTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
 
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdf
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestion
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
 
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdf
 
JTC 2024 Bâtiment et Photovoltaïque.pdf
JTC 2024  Bâtiment et Photovoltaïque.pdfJTC 2024  Bâtiment et Photovoltaïque.pdf
JTC 2024 Bâtiment et Photovoltaïque.pdf
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdf
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentes
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdf
 
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
 

Php 2 - Approfondissement MySQL, PDO et MVC

  • 1. <?php 2 Pierre Faure - pierrefaure.me
  • 2. Plan de la présentation 1. Les bases de données : MySQL a. Principe b. phpMyAdmin c. Interagir avec une BDD 2. Les fonctions a. La machine à carottes b. Exemple avec MySQL c. Les fonctions PHP 3. Modèle Vue Contrôleur - MVC a. Principe b. Mise en pratique 4. Quelques trucs à savoir a. $_FILES et $_POST b. $_SESSION c. L’indentation d. PHP + HTML = ? Pierre Faure - pierrefaure.me
  • 3. 1.Les bases de données : MySQL a.Principe Photo par closet factory. license CC BY-ND : https://creativecommons.org/licenses/by-nd/2.0/deed.fr ‘‘Une base de donnée est comparable à un placard extensible et modulable
  • 4. 1.Les bases de données : MySQL a.Principe La base de donnée contient des tables 
 Les tables sont organisées sous forme de tableau id f_name l_name birth 1 36754 David Axmark 1962-04-28 website http://… http://…Rasmus 1968-11-22Lerdorf users Pierre Faure - pierrefaure.me
  • 5. Lier deux tables avec un identifiant id f_name l_name birth 1 36754 David Axmark 1962-04-28 website http://… http://…Rasmus 1968-11-22Lerdorf users id name user_id 10 476 MySQL 1 PHP 36754 tools user_id peut également
 s’intituler clé étrangère ou foreign key (FK) Pierre Faure - pierrefaure.me
  • 6. id et user_id, quelle différence ? id f_name l_name birth 1 36754 David Axmark 1962-04-28 website http://… http://…Rasmus 1968-11-22Lerdorf users id name user_id 10 476 MySQL 1 PHP 36754 tools id est un identifiant unique 
 user_id permet de lier des données 477 PHP 2 36754 Dans user_id, "user" fair référence au nom de la table liée Pierre Faure - pierrefaure.me
  • 7. 1.Les bases de données : MySQL b.phpMyAdmin Pierre Faure - pierrefaure.me
  • 8. b.phpMyAdmin : onglet Bases de données Les bases de données utf8_general_ci Créer une base de données Pierre Faure - pierrefaure.me
  • 9. b.phpMyAdmin : à l’intérieur de base_de_donnee3 Les tables de la BDD Créer une table Pierre Faure - pierrefaure.me
  • 10. b.phpMyAdmin : à l’intérieur de la table vehicles Les colonnes
  • 11. b.phpMyAdmin : l’onglet structure Nom : Nom assigné à la colonne de la table
 Type : Type des données à l’intérieur de la colonne
 Interclassement : Encodage 
 Attributs > UNSIGNED : Les valeurs seront supérieures à 0
 Null : Non = La valeur ne peut pas être inexistante (vide est différent de null)
 Défaut : Valeur par défaut de la cellule
 Extra > AUTO_INCREMENT : +1 automatiquement lorsqu’une donnée est ajoutée
 Action : Opérations réalisables Pierre Faure - pierrefaure.me
  • 12. b.phpMyAdmin : syntaxe des noms Ne jamais utiliser de tiret - dans les noms de vos BDD, de vos tables ou de vos colonnes Utilisez underscore _ à la place Pierre Faure - pierrefaure.me
  • 13. b.phpMyAdmin : créer une table Créons une table posts Contenant les colonnes id, title, content, date Pierre Faure - pierrefaure.me
  • 14. b.phpMyAdmin : type & taille d’une colonne Pierre Faure - pierrefaure.me
  • 15. b.phpMyAdmin : type & taille d’une colonne Les types les plus fréquents INT : valeurs numériques entre 0 et 4,294,967,295 VARCHAR(*) : valeurs entre 0 et 65,535 caractères (255 anciennes versions de MySQL) TEXT : valeurs entre 0 et 65,535 caractères 
 MEDIUMTEXT : valeurs entre 0 et 16,777,215 caractères TIMESTAMP : Date au format : AAAA-MM-JJ HH:MM:SS DATETIME : Date au format : AAAA-MM-JJ HH:MM:SS DATE : Date au format : AAAA-MM-JJ TIMESTAMP, ajouts et mises à jour - date d’ajout/modification d’un article/commentaire/message …
 DATETIME, date spécifique - Événements : anniversaire… | Ne fonctionne pas avec les fuseaux horaires des serveurs (*) Vous devez obligatoirement spécifier une valeur Pierre Faure - pierrefaure.me
  • 16. b.phpMyAdmin : La valeur par défaut Défaut : Valeur par défaut lors de l’insertion CURRENT_TIMESTAMP : Date & heure du serveur Pierre Faure - pierrefaure.me
  • 17. b.phpMyAdmin : L’interclassement utf8_general_ci : Suffisant pour les langues telles que le français et l’anglais utf8_unicode_ci : Pour les langues comme l’allemand, le russe … Pierre Faure - pierrefaure.me
  • 18. b.phpMyAdmin : Attribut > UNSIGNED Attributs > UNSIGNED : Les valeurs stockées seront supérieures à 0 Pierre Faure - pierrefaure.me
  • 19. b.phpMyAdmin : NULL Null : Non = La valeur ne peut pas être inexistante ‘‘Une valeur vide n’est pas similaire/égale à une valeur NULL Pierre Faure - pierrefaure.me
  • 20. b.phpMyAdmin : Index > PRIMARY Index PRIMARY : clé primaire & unique de la table « id » Pierre Faure - pierrefaure.me
  • 21. b.phpMyAdmin : Auto Incrémentation A_I (Auto_Increment) : +1 automatiquement lorsqu’une donnée est ajoutée Pierre Faure - pierrefaure.me
  • 22. b.phpMyAdmin : Le moteur de stockage Pierre Faure - pierrefaure.me
  • 23. b.phpMyAdmin : Le moteur de stockage INNODB : - Plus flexible avec les identifiants (clés étrangères)
 - Utilisé pour les applications bancaires MyISAM :
 - Plus rapide pour des sites classiques (Insertion et lecture de données)
 - Les requêtes de recherche s’effectuent plus rapidement On utilisera INNODB cette semaine Pierre Faure - pierrefaure.me
  • 24. 1.Les bases de données : MySQL c. Interagir avec une BDD The Wolf of Wall Street Pierre Faure - pierrefaure.me
  • 25. c. Interagir avec une BDD : Se connecter PDO Pierre Faure - pierrefaure.me
  • 26. c. Interagir avec une BDD : Se connecter PDO Est le procédé conseillé par PHP pour se connecter aux bases de données Permet d’interagir plus simplement avec MySQL, Oracle, PostgreSQL … Pierre Faure - pierrefaure.me
  • 27. c. Interagir avec une BDD : Se connecter $host = 'localhost'; $dbname = ''; $user = 'root'; $pass = ''; $db = new PDO('mysql:host='.$host.';dbname='.$dbname, $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')); PDO  $pass = 'root'; Pierre Faure - pierrefaure.me
  • 28. SELECT INSERT UPDATE DELETE c. Interagir avec une BDD : Requêtes Pierre Faure - pierrefaure.me
  • 29. Construction d’une requête id f_name l_name birth 1 36754 David Axmark 1962-04-28 website http://… http://…Rasmus 1968-11-22Lerdorf users $sql = 'SELECT * FROM users'; Sélectionner toutes les données de la table users1 SELECT Pierre Faure - pierrefaure.me
  • 30. Envoi et traitement d’une requête $req = $db->prepare($sql);
 $req->execute(); Envoi de la requête au serveur
 Exécution de la requête $sql = 'SELECT * FROM users'; Sélectionner toutes les données de la table users1 2 SELECT Pierre Faure - pierrefaure.me
  • 31. Traduction du résultat de MySQL pour PHP : fetchAll $req = $db->prepare($sql);
 $req->execute(); Envoi de la requête au serveur
 Exécution de la requête $sql = 'SELECT * FROM users'; Sélectionner toutes les données de la table users1 2 $result = $req->fetchAll(); On stock le résultat de la requête dans $result3 Pourquoi une traduction ? Car MySQL peut communiquer avec d’autres langages comme Ruby, Python … 
 Il faut donc traduire le résultat pour PHP SELECT fetchAll() permet de convertir le résultat en tableau. Il joue un rôle de traducteur fetchAll(PDO::FETCH_ASSOC) le tableau sera associatif Pierre Faure - pierrefaure.me
  • 32. Pour résumer $req = $db->prepare($sql);
 $req->execute(); $sql = 'SELECT * FROM users';1 2 $result = $req->fetchAll();3 $db = new PDO(...); Connexion à la base de données0 Ne pas oublier de se connecter une seule fois au tout début du script Sélectionner toutes les données de la table users On stock le résultat de la requête dans $result Envoi de la requête au serveur
 Exécution de la requête SELECT Pierre Faure - pierrefaure.me
  • 33. SELECT Type de requête SELECT Destination FROM Conditions WHERE et AND / OR
 LIMIT 
 GROUP BY
 ORDER BY
 ... Construction d’une requête SELECT * FROM users WHERE age > 18 AND sex = 0 ORDER BY f_name LIMIT 20 Sélectionner toutes les colonnes de la table users où l’âge est supérieur à 18 et le sexe est masculin, les classer par prénom, limiter à 20 lignes age, sex et f_name sont des colonnes de la table users Pierre Faure - pierrefaure.me
  • 34. SELECT * FROM users WHERE age > 18 AND sex = 0 ORDER BY f_name LIMIT 20 SELECT Les requêtes préparées SELECT * FROM users WHERE age > :ag AND sex = :sx ORDER BY f_name LIMIT 20 $req = $db->prepare($sql);
 $req->execute(array( ':ag' => $age, ':sx' => $sex )); $sql = ' '; Passer les paramètres dans le « execute » permet d’éviter les injections SQL « prepare » est également très utile lorsqu’on « execute » plusieurs fois de suite la même requête et que les paramètres sont différents d’une fois à l’autre Pierre Faure - pierrefaure.me
  • 35. id f_name l_name birth 1 36754 David Axmark 1962-04-28 website http://… http://…Rasmus 1968-11-22Lerdorf users $sql = "SELECT * FROM users"; $req = $db->prepare($sql);
 $req->execute(); $result = $req->fetchAll(PDO::FETCH_ASSOC); Pour sélectionner toutes les données de la table users SELECT Pierre Faure - pierrefaure.me
  • 36. Array( [0] => Array( [id] => 1 [f_name] => David [l_name] => Axmark [birth] => 1962-04-28
 [website] => http://www.mysql.com/ ) [1] => Array( [id] => 36754 [f_name] => Rasmus [l_name] => Lerdorf [birth] => 1968-11-22
 [website] => http://php.net ) ) var_dump($result); Que contient $result ? Un tableau ! SELECT Pierre Faure - pierrefaure.me
  • 37. id f_name l_name birth 1 36754 David Axmark 1962-04-28 website http://… http://…Rasmus 1968-11-22Lerdorf users $sql = "SELECT f_name, l_name FROM users"; $req = $db->prepare($sql);
 $req->execute(); $result = $req->fetchAll(PDO::FETCH_ASSOC); Pour sélectionner uniquement les prénoms et noms de la table users SELECT Pierre Faure - pierrefaure.me
  • 38. Array( [0] => Array( [f_name] => David [l_name] => Axmark ) [1] => Array( [f_name] => Rasmus [l_name] => Lerdorf ) ) var_dump($result); Que contient $result ? Un tableau ! SELECT Pierre Faure - pierrefaure.me
  • 39. id f_name l_name birth 1 36754 David Axmark 1962-04-28 website http://… http://…Rasmus 1968-11-22Lerdorf users 
 $sql = "SELECT * FROM users WHERE f_name = :fnm "; $req = $db->prepare($sql);
 $req->execute(array(':fnm' => $f_name)); $result = $req->fetchAll(PDO::FETCH_ASSOC); Pour sélectionner toutes les données de la table users qui ont pour f_name David SELECT $f_name = 'David'; Pierre Faure - pierrefaure.me
  • 40. Array( [0] => Array( [id] => 1 [f_name] => David [l_name] => Axmark [birth] => 1962-04-28
 [website] => http://www.mysql.com/ ) ) var_dump($result); Que contient $result ? Encore un tableau ! SELECT Pierre Faure - pierrefaure.me
  • 41. SELECT INSERT UPDATE DELETE c. Interagir avec une BDD : Requêtes Pierre Faure - pierrefaure.me
  • 42. INSERT Construction d’une requête id f_name l_name birth 1 36754 David Axmark 1962-04-28 website http://… http://…Rasmus 1968-11-22Lerdorf users $sql = "INSERT INTO users SET f_name = :fnm, l_name = :lnm, birth = :birth, website = :wsite)"; 1 On ajoute Mark Zuckerberg à la base de données Pierre Faure - pierrefaure.me
  • 43. INSERT 1 $req = $db->prepare($sql); $req->execute(array( ':fnm' => 'Mark', ':lnm' => 'Zuckerberg', ':birth' => '1984-05-14', ':wsite' => 'http://facebook.com' )); Envoi de la requête au serveur
 Exécution de la requête 2 On ajoute Mark Zuckerberg à la base de données Envoi et traitement d’une requête $sql = "INSERT INTO users SET f_name = :fnm, l_name = :lnm, birth = :birth, website = :wsite)"; Pierre Faure - pierrefaure.me
  • 44. INSERT Pour résumer On ajoute Mark Zuckerberg à la base de données 1 $db = new PDO(...); Connexion à la base de données0 Ne pas oublier de se connecter une seule fois au tout début du script $req = $db->prepare($sql); $req->execute(array( ':fnm' => 'Mark', ':lnm' => 'Zuckerberg', ':birth' => '1984-05-14', ':wsite' => 'http://facebook.com' )); Envoi de la requête au serveur
 Exécution de la requête 2 $sql = "INSERT INTO users SET f_name = :fnm, l_name = :lnm, birth = :birth, website = :wsite)"; Pierre Faure - pierrefaure.me
  • 45. SELECT INSERT UPDATE DELETE c. Interagir avec une BDD : Requêtes Pierre Faure - pierrefaure.me
  • 46. Construction d’une requête id f_name l_name birth 1 36754 David Axmark 1962-04-28 website http://… http://…Rasmus 1968-11-22Lerdorf users $sql = "UPDATE users SET f_name = :newnm WHERE id = 1";1 UPDATE Modification du prénom par Pierre pour l’utilisateur ayant l’id 1 Pierre Faure - pierrefaure.me
  • 47. $sql = "UPDATE users SET f_name = :newnm WHERE id = 1";1 UPDATE Modification du prénom par Pierre pour l’utilisateur ayant l’id 1 $req = $db->prepare($sql);
 $req->execute(array(':newnm' => 'Pierre')); Envoi de la requête au serveur
 Exécution de la requête 2 Envoi et traitement d’une requête Pierre Faure - pierrefaure.me
  • 48. Pour résumer $sql = "UPDATE users SET f_name = :newnm WHERE id = 1";1 UPDATE Modification du prénom par Pierre pour l’utilisateur ayant l’id 1 2 $db = new PDO(...); Connexion à la base de données0 Ne pas oublier de se connecter une seule fois au tout début du script $req = $db->prepare($sql);
 $req->execute(array(':newnm' => 'Pierre')); Envoi de la requête au serveur
 Exécution de la requête Pierre Faure - pierrefaure.me
  • 49. SELECT INSERT DELETE c. Interagir avec une BDD : Requêtes UPDATE Pierre Faure - pierrefaure.me
  • 50. Construction d’une requête id f_name l_name birth 1 36754 David Axmark 1962-04-28 website http://… http://…Rasmus 1968-11-22Lerdorf users $sql = "DELETE FROM users WHERE id = 1";1 Suppression de l’utilisateur ayant l’id 1 DELETE Pierre Faure - pierrefaure.me
  • 51. $sql = "DELETE FROM users WHERE id = 1";1 DELETE Suppression de l’utilisateur ayant l’id 1 $req = $db->prepare($sql);
 $req->execute(); Envoi de la requête au serveur
 Exécution de la requête 2 Envoi et traitement d’une requête Pierre Faure - pierrefaure.me
  • 52. Pour résumer $sql = "DELETE FROM users WHERE id = 1";1 DELETE Suppression de l’utilisateur ayant l’id 1 $req = $db->prepare($sql);
 $req->execute(); Envoi de la requête au serveur
 Exécution de la requête 2 $db = new PDO(...); Connexion à la base de données0 Ne pas oublier de se connecter une seule fois au tout début du script Pierre Faure - pierrefaure.me
  • 53. JOINTURES SQL t1 t2 t2t1 t2t1 t2t1 t2t1 SELECT * 
 FROM t1 
 LEFT JOIN t2 
 ON t1.key = t2.key SELECT * 
 FROM t1 
 RIGHT JOIN t2 
 ON t1.key = t2.key SELECT * 
 FROM t1 
 FULL OUTER JOIN t2 
 ON t1.key = t2.key SELECT * 
 FROM t1 
 FULL OUTER JOIN t2 
 ON t1.key = t2.key
 WHERE t1.key IS NULL OR t2.key IS NULL SELECT * 
 FROM t1 
 INNER JOIN t2 
 ON t1.key = t2.key Soit t1 et t2, deux tables pouvant être reliées l’une à l’autre grâce à des clés étrangères Modèle original : C.L. Moffatt Pierre Faure - pierrefaure.me
  • 54. COLLE 2.Les fonctions On peut comparer une fonction à une machine 
 qui effectue toujours les mêmes actions a.La machine à carottes Les paramètres Le résultat : return Pierre Faure - pierrefaure.me
  • 55. 2.Les fonctions Rappels Une fonction effectue une ou plusieurs actions et retourne un résultat function validPassword($pass){
 if(strlen($pass) > 4){ return true; } else{ return false; }
 } Si la longueur du mot de passe est supérieure à 4 On renvoie true Sinon On renvoie false validPassword('1234'); false validPassword('12345'); true Pierre Faure - pierrefaure.me
  • 56. 2.Les fonctions Avec MySQL : supprimer un article $host = 'localhost'; $dbname = ''; $user = 'root'; $pass = ''; $db = new PDO('mysql:host='.$host.';dbname='.$dbname, $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')); function deletePost($db, $id){ $sql = "DELETE FROM posts WHERE id = :id"; $req = $db->prepare($sql); $req->execute(array(':id' => $id)); } deletePost($db, 1); Pierre Faure - pierrefaure.me
  • 57. 2.Les fonctions Les fonctions proposées par PHP isset(); est définie empty(); est vide !empty(); n’est pas vide explode(); coupe une chaîne de caractère Liste de l’ensemble des fonctions sur http://php.net/ Pierre Faure - pierrefaure.me
  • 58. 3.Le Modèle MVC M V CO
 D
 È L E U
 E O
 N
 T
 R
 Ô
 L
 E
 U
 R Pierre Faure - pierrefaure.me
  • 59. 3.Le Modèle MVC a.Principe MODÈLE VUE CONTRÔLEUR Contient la plupart de votre code PHP, les fonctions, les requêtes SQL … Contient vos pages HTML avec peu de PHP (boucles, conditions …) Fais la liaison entre le modèle et la vue, il permet d’initialiser la logique de votre code avec 
 des « include » et des vérifications basiques (utilisateur authentifié, connexion à la BDD …) Pierre Faure - pierrefaure.me
  • 60. b.Mise en pratique monsite Dossier racine Contrôleur Configurations (BDD …) fonctions, requêtes … fichiers html, images … config model view index.php css img js index.html Pierre Faure - pierrefaure.me
  • 61. b.Mise en pratique index.php index.html function.php include 'config/db.php'; 
 CONTRÔLEUR MODÈLE VUE db.php Connexion à la BDD include 'model/function.php'; include 'view/index.html';
  • 62. 4.Quelques trucs à savoir Pierre Faure - pierrefaure.me
  • 63. 4.Quelques trucs à savoir a.$_FILES et $_POST & Pierre Faure - pierrefaure.me
  • 64. a.$_FILES <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="image"> <input type="submit"> </form> var_dump($_FILES['image']); array(5) { ["name"]=> string(53) "screenshot.png" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(36) "/tmp/php/php70mcrk" ["error"]=>int(0) ["size"]=>int(115383) } Pierre Faure - pierrefaure.me
  • 65. a.$_FILES 1 Choix de l’image via le bouton Parcourir … L’image est chez vous L’image est temporairement 
 sur le serveur 2 Verifications diverses Extension : strrchr() Type MIME : $_FILES["file"]["type"]
 Taille : getimagesize() 3 Déplacer l’image dans le dossier de votre choix
 avec le nom désiré move_uploaded_file() L’image est définitivement 
 sur le serveur Les étapes de l’envoi de fichier ‘‘Avec les éléments ci-dessus, la sécurité n’est pas nécessairement assurée
 Beaucoup de paramètres peuvent entrer en jeu entre votre serveur et votre fichier .htaccess Pierre Faure - pierrefaure.me
  • 66. a.$_FILES <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="image"> <input type="submit"> </form> $_FILES et $_POST sont interprétés différemment par le navigateur L’envoi de fichier est rendu possible par : le type="file" qui permet de sélectionner un fichier le enctype="multipart/form-data" qui signale au navigateur 
 qu’il va devoir traiter un fichier Comment modifier le formulaire pour envoyer un fichier Pierre Faure - pierrefaure.me
  • 67. a.$_FILES et $_POST <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="image"> <textarea name="description"></textarea> <input type="submit"> </form> var_dump($_POST); array(1) { ["description"]=> string(22) "description de l'image" } Pierre Faure - pierrefaure.me
  • 68. 4.Quelques trucs à savoir b.$_SESSION $_SESSION accueil profil article ‘’En changeant de page, restez connecté grâce à la SESSION Pierre Faure - pierrefaure.me
  • 69. b.$_SESSION : initialisation session_start(); permet d’initialiser une nouvelle SESSION 
 Il doit se situer sur chaque page de votre code ou vous souhaitez utiliser la SESSION Pierre Faure - pierrefaure.me
  • 70. $_SESSION['username'] = 'Pierre'; $_SESSION['email'] = 'mail@example.com'; $_SESSION['profil-picture'] = 'profil.jpg'; var_dump($_SESSION); array(3) { ["username"]=> string(6) "pierre" ["email"]=>string(16) "mail@example.com" ["profil-picture"]=>string(10) "profil.jpg" } echo 'Bonjour '.$_SESSION['username']; Bonjour Pierre b.$_SESSION : déclarer des variables Pierre Faure - pierrefaure.me
  • 71. b.$_SESSION : se déconnecter Savoir détruire une SESSION peut s’avérer utile lorsque par exemple, 
 un utilisateur se déconnecte session_unset(); session_destroy(); Permet de "nettoyer" les variables de SESSION 
 Elles seront vides Permet de supprimer la SESSION
 Elle ne sera plus existante Pierre Faure - pierrefaure.me
  • 72. 4.Quelques trucs à savoir c.L’indentation Pierre Faure - pierrefaure.me
  • 74. c.L’indentation <div id="content"> </div> </ul> </li> </div> <div id="header"> <ul id="list"> <li> Pour le HTML Pierre Faure - pierrefaure.me
  • 75. c.L’indentation <div id="content"> </div> } </div> </div> <div id="header"> if{ <div id="connected"> Pour le HTML et le PHP Pierre Faure - pierrefaure.me
  • 76. 4.Quelques trucs à savoir d.HTML et PHP </> <?>& Pierre Faure - pierrefaure.me
  • 77. 4.Quelques trucs à savoir d.HTML et PHP <div id="content"> <ul id="account"> <?php if($connected == true){ echo '<li>Bienvenue Pierre !</li>'; } else{ echo '<li><a href="">Inscrivez-vous</a></li>'; } ?> <li><a href="">Notre newsletter</a></li> </ul> </div> ‘‘Vous pouvez mettre du php dans un fichier .html et du html dans un fichier .php Pierre Faure - pierrefaure.me
  • 78. ?> Pierre Faure - pierrefaure.me
  • 79. Made by Pierre Faure
 Check out my blog: pierrefaure.me A big thanks to the noun project for the icons Fonts: Courier Prime & Marvel Pierre Faure - pierrefaure.me