Académique Documents
Professionnel Documents
Culture Documents
Hiba Chougrad
Année-universitaire: 2020-2021
1
Planning
Cours Technologie Web:
• 3 séances de cours + 3 séances de TP
• Cours : Vendredi matin ( le 04/12 – le 11/12 – le 18/12 )
• TP : Samedi matin ( le 05/12 – le 12/12 – le 19/12 )
La note :
• Rapports des TP
• Présence + Participation
• Projet
• Examen final
2
3
Plan
PHP/MYSQL
5
Utilisation de PHP
Principales fonctionnalités
Fonctionnement de PHP
Client Serveur
Installer WampServer
• Après l’installation, double-cliquez sur l’icône pour démarrer
le serveur.
• Vous allez voir une icône W en rouge ou orange, il faut
Cliquer sur l’icône pour redémarrer les services puis
Cliquer sur localhost.
• Si vous voyez la page de démarrage IIS, il va falloir désactiver
le serveur IIS (Serveur Windows par défaut)
• Chercher IIS(Gestionnaire des services Internet) sur le panel
Gérer le serveur, il faut cliquer sur Arrêter.
11
Installer WampServer
• Chercher IIS(Gestionnaire des services Internet) sur le panel
Gérer le serveur cliquez Arrêter.
• Redémarrer les services WampServer
encore une fois. Le W doit devenir vert.
• Cliquez sur localhost, vous devez voir la
Page d’acceuil WampServer
http://localhost:80/index.php
Ou bien
http://127.0.0.1:80/index.php
12
Installer WampServer
• Si ça ne marche pas :
Vérifier sur le fichier httpd.conf dans
L’onglet Apache le port de connexion
Un premier exemple !
<html>
<head>
<title>Test PHP</title>
</head>
<body>
<?php echo '<p> Hello World !</p>'; ?>
</body>
</html>
Programme en PHP
Délimitation du code PHP dans le fichier .php :
Dépend de la configuration
short_open_tag
<? Code PHP ?> du serveur
<% Code PHP %> asp_tags à bannir !!
15
Typage faible
// Pas de déclaration de variable
13.5 10
23.5 0
• Guillemets doubles
• $a="chaîne" ; chaîne
• $b="voici une $a"; voici une chaîne
21
Concaténation de chaînes
• Permet d’assembler plusieurs chaînes
Testez !
• Réalisé grâce à l’opérateur point : .
chaîne de $var =
String caractère alphanumérique
caractères "bienvenue"
23
integer
double
NULL
object
string
24
Les constantes
<?php
define("ma_constante", "Bonjour à tous") ;
nom valeur
Définition d'une constante
echo ma_constante ;
?>
Utilisation de la constante
<?php
if (defined(" ma_constante ")) {
echo ma_constante;
}
?>
Tester la déclaration
26
La commande echo
Permet d’envoyer du texte au navigateur du client (« écrire » la page au
format HTML résultant de l’interprétation de PHP)
• echo "Bonjour" ;
• $nom="Driss" ; echo "Bonjour $nom" ;
$a - $b Différence
$a * $b Multiplication
$a / $b Division
Exercice
Soit la température T. Ecrire un programme PHP qui affiche :
froid si T < 8
frais si 8 < T < 17
bon si 17 < T < 25
chaud sinon
33
Solution
<?php
$T = 0;
if ($T < 8 ) echo "froid";
else if ($T >8 && $T<17) echo "frais";
else if ($T >17 && $T<25) echo "bon";
else echo "chaud";
?>
34
do {
/* Bloc d’instructions exécuté une fois puis répété tant
que la condition est vraie */
}
while (condition) ;
36
Exercice
switch ($i) {
L’instruction break case 0:
echo "i égal 0";
Permet de sortir d’une structure de contrôle break;
case 1:
switch (val) echo "i égal 1";
{ break;
case v1:
instructions exécutées si val==v1 case 2:
break ; /* On sort du switch si val==v1*/ echo "i égal 2";
case v2: break;
instructions exécutées si val==v2 }
Exercice
• En utilisant switch, écrire un programme PHP qui affiche le jour en lettre ( la
variable jour entrée en chiffre)
Références
$a 12
84
12
$a = 12 ;
$b " Bonjour"
12
$b = $a ;
$c
$c = &$a ; "hello"
$b = ‘’ Bonjour" ;
$c = 84 ;
echo "\$a : $a\n" ; $a : 84
echo "\$b : $b\n" ; $b : Bonjour
echo "\$c : $c\n" ; $c : 84
unset($c) ;
$c = "hello" ;
40
41
Les fonctions
• Déclaration et appel d’une fonction
Function nom_fonction($arg1, $arg2, …$argn)
{
//déclaration des variables ;
//bloc d’instructions ;
//fin du corps de la fonction
return $resultat ;
}
42
Les fonctions
• Exemple :
Testez !
<?php
$rayon = 15;
$aire = calcul_superficie($rayon);
echo "L'aire du disque de rayon $rayon est : $aire";
?>
<?php
// fonction de calcul de la superficie d'un disque
function calcul_superficie($rayon) {
$sup = $rayon * $rayon * 3.14159; // pi() ou la constante M_PI
return $sup; }
?>
43
Les fonctions
• Fonction avec nombre d’arguments inconnu
• func_num_args() : fournit le nombre d’arguments qui ont été
passés lors de l’appel de la fonction
function recursion($a)
{
if ($a < 20) {
echo "$a\n";
recursion($a+1);
}
}
?>
Mode de passage des arguments
<?php
function permutation($x, $y) {
echo "permutation..." ;
$t = $x ; Permutation impossible :
$x = $y ; Passage des arguments des
$y = $t ; fonctions par valeur
}
$a = 12 ;
$b = 210 ; $a = 12
echo "\$a = $a" ; $b = 210
echo "\$b = $b" ; permutation...
$a = 12
permutation($a, $b) ;
$b = 210
echo "\$a = $a" ;
echo "\$b = $b" ;
?> 45
Mode de passage des arguments
<?php
function permutation(&$x, &$y) {
echo "permutation..." ;
$t = $x ;
$x = $y ; Permutation réussie
$y = $t ;
}
$a = 12 ;
$b = 210 ; $a = 12
echo "\$a = $a" ; $b = 210
permutation...
echo "\$b = $b" ;
$a = 210
permutation($a, $b) ;
$b = 12
echo "\$a = $a" ;
echo "\$b = $b" ;
46
?>
47
• Utilisation
bonjour() ; Bonjour inconnu
include et require
Fichier utilisation1.php
Fichier mafonction.php …
require("mafonction.php")
<?
mafonction(4) ;
function mafonction($arg)
…
{
if ($arg > 0)
{
echo ("Vrai") ;
} Fichier utilisation2.php
else
…
{
include("mafonction.php")
echo ("Faux") ;
…
}
$var=0 ;
}
mafonction($var) ;
?>
…
50
include et include_once
La fonction include vous autorise à inclure plusieurs fois le
<?php même fichier grâce à une boucle par exemple.
include 'header.php';
?>
foreach($products as $product)
{
<div id="content">
// will display all products.php
</div>
include 'product.php';
}
<?php
include 'footer.php'; Mais si on reprend cette boucle en utilisant include_once
?> à la place, le fichier ne sera inclus qu'une seule fois.
require et require_once
La fonctions est require_once, qui est une combinaison des
require 'main_page.php'; fonctions require et include_once
<?php
La fonction require agit de la même manière require_once 'header.php';
que include, sauf que require génère une ?>
erreur si le fichier à inclure n'est pas trouvé. <div id="content"> </div>
Comme son nom l'indique, le fichier est requis <?php
(nécessaire) pour que l'application fonctionne. require_once 'footer.php';
?>
L'erreur générée s'il y a lieu sera
La fonction require_once est celle qui doit être utilisée pour
une E_COMPILE_ERROR qui arrête
inclure l'entête et le pied de page de vos pages. En effet,
l'application là où la fonction include génère
sans ces deux éléments, votre site ne s'affichera pas
un warning qui n'influe pas le fonctionnement
correctement, il ne faut donc pas qu'il puisse fonctionner
de l'application.
sans eux. Mais il faut également qu'ils ne s'affichent qu'une
seule fois.
52
Les tableaux
• Création / initialisation de 3 trois tableaux :
$tab1=array(12, "fraise", 2.5) ; // tab
$tab2[] = 12 ; // tab2
$tab2[] = "fraise" ;
$tab2[] = 2.5 ; Clé Valeur
0 12
$tab3[0] = 12 ; // tab3 1 "fraise"
$tab3[1] = "fraise" ;
2 2.5
$tab3[2] = 2.5 ;
55
Les tableaux
• Les éléments du tableaux ne sont pas forcement d’indices
consécutifs :
Clé Valeur
$tab4[0] = 12 ; 0 12
$tab4[5] = "el5" ; 3
4
5 "el5"
Les tableaux
Parcours classique : 4
Les tableaux
Structure de contrôle Pour chaque élément
58
59
Les tableaux
• Les tableaux indicés et les tableaux associatifs
• Tableau associatif (ou table de hachage)
• Les éléments sont référencés par des chaînes de caractères
associatives en guise de nom: la clé d’index
• Syntaxe :
$tableau = array(ind0 => val0, ind1 => val1,..., indN => valN);
$jour["Dimanche"] = 7;
$jour["Mercredi"] = "Le jour des enfants";
$jour2 = array("Dimanche" => 1, "Lundi" => 2, "Mardi" => 3,
"Mercredi" => 4, "Jeudi" => 5, "Vendredi" => 6, "Samedi" => 7);
60
Les tableaux
• Tableaux multidimensionnels
• Pas d'outils pour créer directement des tableaux multidimensionnels
• L'imbrication des tableaux est possible
Les tableaux
• Exemple:
$mois = array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre",
"Octobre", "Novembre", "Décembre");
$jour = array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
$element_date = array($mois, $jour);
// accès aux valeurs $tableau[indice][indice];
$MM = $element_date[0][0];
//affecte "Janvier" à $MM
echo $element_date[1][4] . " 7 " . $element_date[0][2] . "2015";
// retourne "Jeudi 7 Mars 2015"
0 1 2 3 4 5 6 7 8 9 10 11
Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre Décembre
0
Dimanche Lundi Mardi Mercredi Jeudi Vendredi Samedi
1
62
• Après récupération par le serveur Web, les données sont contenues dans l'une
des variables superglobales de type tableau associatif $_GET ou $_POST .
• La valeur peut être trouvée grâce à une clé qui porte le même nom que le
champ du formulaire de la page HTML de saisie.
Exemple – Formulaire HTML
<html> Test4.php
<head>
<title>formulaire</title>
</head>
<body>
<form action="valide1.php" method="get">
Nom: <input type="text" name="nomPers">
<input type="submit" value="Envoyer">
</form>
</body>
</html>
63
64
65
Formulaires contenant des champs « SELECT unique»
<html>
<head>
<title>Formulaire de saisie des fruits</title>
</head>
<body>
<form action="valide3.php" method="get">
Choisissez des fruits:
<select name="sel">
<option>Fraise
<option>Pomme
<option>Poire
Envoyer <option>Banane
<option>Cerise
</select>
<input type="submit" value="envoyer">
</form>
</body>
</html> valide3.php?sel=Pomme
66
Formulaires contenant des champs « SELECT unique»
<html>
<head>
<title>Formulaire de saisie des fruits</title>
</head>
<body>
<form action="valide3.php" method="get">
Choisissez des fruits:
<select name="sel" multiple>
<option>Fraise
<option>Pomme
<option>Poire
<option>Banane
Envoyer <option>Cerise
</select>
<input type="submit" value="envoyer">
</form>
</body>
</html> valide3.php?sel=Pomme&sel=Poire
???
67
Formulaires contenant des champs « SELECT unique»
<html>
<head>
<title>Formulaire de saisie des fruits</title>
</head>
<body>
<form action="valide3.php" method="get">
Choisissez des fruits:
<select name="sel[]" multiple>
<option>Fraise
<option>Pomme
<option>Poire
<option>Banane
Envoyer <option>Cerise
</select>
<input type="submit" value="envoyer">
</form>
</body>
</html> valide3.php?sel%5B%5D=Pomme&sel%5B%5D=Poire
valide3.php?sel[ ]=Pomme&sel[ ]=Poire
68
Traitement des données des champs « SELECT »
<html>
<head>
<title>Liste de fruits</title>
</head>
<body>
<?php
if (isset($_GET['sel']) && !empty($_GET['sel'])) $_GET[‘sel']
{/* La variable $_GET['sel'] est définie est un tableau
et elle n'est pas vide */
foreach($_GET['sel'] as $fruit){
echo "Vous avez choisi $fruit<br>\n" ; }
}
else
echo "Vous n'avez pas choisi de fruit\n" ;
?>
</body>
</html>
69
70
Résultat
Formulaires contenant des champs « CHECKBOX »
71
Formulaires contenant des champs « CHECKBOX »
<html> Même validation du
<head> Select multiple
<title>Formulaire de saisie des fruits</title>
</head>
<body>
<form name="formu" action="valide3.php" method="get">
Choisissez des fruits :<br>
<input type="checkbox" name="sel[]" value="Fraise">Fraise<br>
<input type="checkbox" name="sel[]" value="Pomme" >Pomme <br>
<input type="checkbox" name="sel[]" value="Poire" >Poire <br>
<input type="checkbox" name="sel[]" value="Banane">Banane<br>
<input type="checkbox" name="sel[]" value="Cerise">Cerise<br>
<input type="submit" value="Envoyer">
</form>
</body>
</html>
72
73
Résultat
74
Interaction Avec
La Base De Données
Extension mysqli
76
• mysqli_connect
• mysqli_select_db
• mysqli_query
• mysqli_close
81
Testez !
$con = mysqli_connect("localhost", "root", "", "mabase");
if (!$con) {
echo "Failed to connect to MySQL : " .mysqli_connect_error();
die('Not connected : ' . mysqli_error($con));
}
82
Configuration
1. Dans php.ini Configurez MySQLi
• mysqli.default_host =localhost
• mysqli.default_user =root
2. Accédez à http://localhost/index.php et cliquez sur PhpMyAdmin (login= root
et mot de passe « » càd vide)
3. Créez une base de données nommée mabase
83
mysqli_select_db($id_connexion, $nom_base_donnee);
85
Testez !
• Exemple :
• $con = mysqli_connect("localhost", "root", "", "mabase");
• $requete = "create database gtr2";
• mysqli_query($con, $requete);
86
• Exemple :
• $con = mysqli_connect("localhost", "root", "", “mabase");
• $requete = " drop database gtr2";
• mysqli_query($con, $requete);
87
mysqli_query($con, $query2);
mysqli_close($con);
89
$ligne = mysqli_fetch_assoc($resultat);
echo 'le premier enregistrement est l\'etudiant '.$ligne["prenom"];
mysqli_close($con);
?>
92
Exemple Testez !
// Creation et envoi de la requete
$query3 = "select * from etudiant order by nom";
$result = mysqli_query($con, $query3);
// Recuperation des resultats
echo "<center><table border='1'>";
echo "
<tr><th>id</th> <th>nom</th> <th>prenom</th> ";
while($row = mysqli_fetch_row($result)) {
$id = $row[0];
$nom = $row[1];
$prenom = $row[2];
echo " <tr>
<td>$id</id> <td>$nom</id> <td>$prenom</id>
</tr>";
}
echo "</table></center>";
mysqli_close($con);
95
valide2.php
97
Modifier un enregistrement
Récupération des valeurs renseignées dans le formulaire
$nom = $_POST["nom"];
$prenom= $_POST["prenom"];
Exemple Testez !
// nombre d’enregistrements
$rowcount = mysqli_num_rows($result);
echo "<br/> rowcount : " . $rowcount ."<br/>";
// nombre de colonnes
$rowfield = mysqli_num_fields($result);
echo "rowfield : " . $rowfield;