Cours Web M1 GL - 6
Cours Web M1 GL - 6
Cours Web M1 GL - 6
M 521
Web
PHP-MySQL
Caractéristiques
Produit « open source »
PHP est un langage imbriqué dans le code HTML, il est
interprété par un module « spécial » par le serveur web.
<html>
<head><title>Exemple</title></head>
<body>
<?php
echo "Bonjour, je suis un script PHP!";
?>
</body>
</html>
3
Caractéristiques (suite)
La syntaxe du langage emprunte aux langages : C, Java
et Perl.
PHP est un acronyme :
PHP: Hypertext Preprocessor
PHP : Personnal Home Page
4
Autres technologies
Pour produire des pages dynamiques.
Cold Fusion
Java Server Page
Microsoft ASP
CGI
Python
5
Fonctionnalités de PHP
Traitement de caractères et de fichiers.
Support de XML.
etc.
Fonctions de générations de graphique en ligne, de document
PDF, etc.
Web services
…
6
Architecture (avec Apache)
APACHE
PHP
G ET /PA G E.PH P
R ép erto ires
w eb
7
Installation de PHP
EasyPhp
WAMP
httpd.conf
php.ini
8
La codification PHP
Insertion dans le code HTML d’une page web.
Balises :
<? code ?>
<?php code ?>
<% code %>
<script language="php"> code </script>
9
Page PHP
<html>
<head>
<title>Exemple</title>
</head>
<body>
<?
// La ligne suivante est une instruction PHP
echo "Bonjour, je suis un script PHP!";
?>
</body>
</html>
10
Syntaxe
Les instructions sont terminées par « ; »
Les styles de commentaires utilisables sont:
• /* */ non imbriqué
• #
• //
11
Variables
Une variable commence toujours par $.
12
Variables
Désignées par $identificateur
Ex: $i; $Res; $res; $RES
Leur type est défini implicitement par l'assignation d’une
valeur:
Ex: $i=4; $Res="bleu";
Il peut changer en cours d'exécution:
Ex: $Res=4;
13
Les variables
Les variables sont toutes préfixées par le symbole $
<?php
$annee = 1942;
$nom = “Mohammed Ali “; \n : retour à la ligne
?>
<?php
$valeur = 1;
$valeur = “Coucou“;
?>
Chaînes de caractères
Chaîne
délimitée par « " », « ' »
séquences d'échappement standard \n, \r, \t, \\, \$, \", \‘
Il est possible de concaténer des chaînes avec le point:
$resultat = $chaine1 . $chaine2;
16
Expressions
$a = 5;
$b = $a + 2;
$somme+=$val
17
Instructions
Instructions Boucles:
conditionnelles: - boucle for
- if ( condition ) - boucle while
instruction ou bloc - boucle do..while
[ else instruction ou bloc ] - Instructions:
- switch (expression) break, continue
{case valeur1: instruction/ bloc
case valeur2: instruction/ bloc
….
default: instruction/ bloc
}
18
Les instructions de base
Le test conditionnel : if (condition) { … } else { … }
If ($valeur == 1) {
echo “la valeur est égale à 1“;
}
If ($valeur != 1) {
echo “la valeur est différente de 1“;
}
Les instructions de base
La boucle tant que : while (condition) { instructions }
$i = 1;
$somme = 0;
while ($i <= 10) {
$somme = $somme + $i;
$i = $i + 1;
}
$somme = 0;
for ($i = 1; $i <= 10; $i = $i + 1) {
$somme = $somme + $i;
}
1 5 "blanc"
22
Les tableaux
Il existe plusieurs manières de manipuler les tableaux
foreach($tableau as $element) {
echo “$element \n“;
}
Fonctions
Déclaration:
function Nom_Fonction ($Param1,$Param2,…)
{ instructions }
Valeur de retour: instruction return valeur;
Pas de déclaration du type des paramètres, ni de la
valeur de retour éventuelle.
Ex: function cube($x) function AffCub($x)
{ return $x*$x*$x; } { echo $x*$x*$x; }
24
Formulaires (GET et POST)
Lorsqu'un formulaire est envoyé à un script PHP, toutes les variables de ce
de la variable en question.
Exemple
<input type="submit">
</form>
disponible en $_POST[’username’].
$_FILES
$_FILES[‘champ']['name'] : Le nom original du fichier, comme sur le disque du
visiteur (exemple : mon_icone.png).
$_FILES[‘champ']['type‘] : Le type du fichier. Par exemple, cela peut être «
image/png ».
$_FILES[‘champ']['size‘] : La taille du fichier en octets.
$_FILES[‘champ']['tmp_name'] : L'adresse vers le fichier uploadé dans le répertoire
temporaire.
$_FILES[‘champ']['error'] : Le code d'erreur, qui permet de savoir si le fichier a bien
été uploadé.
Le formulaire doit être de la forme <form action= " fichier.php"
enctype="multipart/form-data" method="post">
$resultat =
move_uploaded_file($_FILES[‘champ']['tmp_name'],$chemin);
if ($resultat) echo "Transfert réussi";
Autres fonctions
require(/path/to/file.php)
Inclue et évalue le fichier spécifié
include(...)
Pareil
include_once(...)
S'assure que le même fichier n'est pas inclus plusieurs fois
Architecture Apache-PHP-MySQL
APACHE
PHP
G ET /PA G E.PH P
C lient w eb
SQL
R ép erto ires
w eb
M ySQ L
Manipulation d’une BD MySQL
L’extension mysql_
Fonctions d'accès à MySQL de moins en mois utilisées
(obsolètes )
L’extension mysqli_
Fonctions améliorées d'accès à MySQL
L’extension PDO
Outil complet qui permet d'accéder à n'importe quel
type de base de données (MySQL, Oracle, …)
Connexion à une BD MySQL
<?php
Try
{
$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', ‘psw’);
}
catch (Exception $e)
{
Login
die('Erreur : ' . $e->getMessage());
} Nom de l'hôte
?>
Mots de passe
Accès à mysql en PHP
Exécution d'une requête:
$reponse = $bdd->query('Tapez votre requête SQL ici‘);
31
Exemple
<?php
try
{// On se connecte à MySQL
$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
}
catch(Exception $e)
{// En cas d'erreur, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
} // Si tout va bien, on peut continuer
$reponse = $bdd->query('SELECT * From Etudiant'); // On récupère tout le contenu de la table Etudiant
while ($donnees = $reponse->fetch()) // On affiche chaque entrée une à une
{
?>
<p>
<b>Nom</b> : <?php echo $donnees['nom']; ?><br/>
<b>Prenom</b> : <?php echo $donnees['prenom']; ?><br/>
<b>Age</b> : <?php echo $donnees['age']; ?>
</p>
<?php
}
$reponse->closeCursor(); // Termine le traitement de la requête
Exemple (suite)
$reponse = $bdd->query('SELECT nom, prenom, age
FROM Etudiant WHERE prenom=\'Mohammed\'');
Les étudiants qui s’appellent Mohammed
<?php
$req = $bdd->prepare('SELECT nom FROM Etudiant WHERE
prenom= ? AND age<= ?');
$req->execute(array($_GET['prenom'], $_GET['age']));
?>
Construire des requêtes en fonction de
variables
<?php
$req = $bdd->prepare('SELECT nom, prix FROM
Etudiant WHERE prenom= :prenom AND age
<= :age');
$req->execute(array('prenom' => $_GET[‘prenom'], ‘age'
=> $_GET[‘age']));
?>
Ajouter des données
<?php
$req = $bdd->prepare('INSERT INTO Etudiant(nom, prenom,
age)
VALUES(:nom, :prenom, :age)');
$req->execute(array(
'nom' => $nom,
'prenom' => $prenom,
‘age' => $age
));
echo 'L’étudiant a bien été ajouté !';
?>
Autre requêtes
Mise à jours
UPDATE Etudiant SET age = 30 WHERE prenom =
'Mohammed‘
Suppression
DELETE FROM Etudiant WHERE
prenom=‘Mohammed'