Module :
Programmation PHP et Fremawork
Chapitre 2: Programmation PHP
Pr. Zakia EL UAHHABI
Plan du cours
1 Tableaux
2 Base de données et PHP
2
Tableaux
Les tableaux en PHP sont des variables qui peuvent contenir plusieurs valeurs à la fois. Ils
peuvent être indexés ou associatifs et peuvent aussi avoir plusieurs dimensions.
Parmi les types de tableaux, on a:
Tableaux indexés;
Tableaux associatifs.
3
Tableaux
Tableaux indexés
Un tableau indexé contient des indices numériques qui indexent le contenu souhaité. Ces indexes
commencent par défaut de 0 et s'incrémentent de 1 à chaque fois.
Pour créer un tableau indexe, on emploi le mot clé array(), et on sépare les éléments par des
virgules.
<?php
$tab=array("element1","element2","element3");
echo $tab[2];
?>
Pour avoir accès à la valeur de chaque élément, on met la variable tableaux suivi de l'indice de
l'élément mis entre crochet. Ex: $tab[2].
4
Tableaux
Tableaux indexés
Pour compter le nombre d’éléments de tableau, on utilise la fonction count():
<?php
$tab=array("element1","element2","element3");
echo count($tab);
?>
5
Tableaux
Tableaux associatifs
Un tableau en PHP est en fait une carte ordonnée. Une carte est un type qui associe
des valeurs à des clés.
Un tableau peut être créé en utilisant la structure de langage array().
Syntaxe d'un tableau : Exemple:
array( <?php
key => value, array(
key2 => value2, "langage"=>"html",
key3 => value3, "execution"=>"coté client",
... "version"=>"5");
) ?>
// La virgule après le dernier élément d'un tableau est optionnelle et peut ne pas être
ajoutée.
6
Tableaux
Tableaux associatifs
L'assignation d'une valeur dans un tableau est effectué en spécifiant la clé, entre crochets.
La clé peut également ne pas être renseignée, sous la forme : []..
Syntaxe :
$arr[clé] = valeur;
// clé peut être un entier ou une chaîne de caractères
// valeur peut être n'importe quel type
7
Tableaux
Tableaux associatifs
Pour parcourir un tableau, on utilise la structure foreach :
<?php
$tabl=array(
"langage"=>"html",
"execution"=>"coté client", langage : html
"version"=>"5"); execution : coté client
version:5
foreach($tabl as $clef => $valeur){
echo $clef. ‘ : ' .$valeur. ' <br>';
}
}
?>
8
Tableaux
Opérations sur les tableaux
Parmi les fonctions utilisées pour manipuler les tableaux:
count($tab) ou sizeof($tab): retourne un entier qui indique le nombre d'entrées du
tableau.
in_array($var,$tab): vérifie si la variable $var existe dans le tableau. Si oui la fonction
in_array() retourne true sinon elle retourne false.
shuffle($tab): mélange le contenu du tableau en changeant l'indexe des entrées
aléatoirement.
sort($tab): trie dans l'ordre alphanumérique les éléments du tableau.
rsort($tab): trie dans l'ordre alphanumérique inverse les éléments du tableau.
array_rand($tab): retourne l'indexe de l'une des entrée du tableau aléatoirement.
unset($tab[i]): Ceci efface l'élément i du tableau
unset($tab) : Ceci efface complètement le tableau
9
Tableaux
Exercice d’application 3 :
Créer un script en PHP qui doit afficher un tableau associatif des
mois et compter le nombre de ces mois .
10
Base de données et PHP
Site Web dynamique Application Web
Base de données
11
Base de données et PHP
Extensions pour la connexion à une base de données MySQL:
Extension MySQL originale: obsolète depuis la version 5.5 de PHP, et a été supprimée en
PHP7.
Extension MySQLi (MySQL améliorée): Il s'agit d'une extension un peu plus moderne.
Objet PDO (PHP Data Objects): L'objet PDO constitue de loin la meilleure solution pour
intéragir avec une base de données en PHP.
12
Base de données et PHP
Instructions PHP pour MySQLi
Création de la base de données:
Utilisation de l’ interface graphique PHPMyAdmin pour gérer les bases de
données MySQL.
Connexion au serveur et sélection d'une base de données:
mysqli_connect(“hostname",“username",“password“,”bd”);
Exécution de la requête :
mysqli_query(identifiant ,query);
Extraction des résultats :
mysqli_num_rows($req)
13
Base de données et PHP
Exécution des opérations CRUD
Exécution de la requête de sélection:
$req=mysqli_query(identifiant de connexion,"insert into nom_table
(nom_champs) values(‘valeurs’) ";
Exécution de la requête de mise a jour:
$req=mysqli_query(identifiant de connexion,"update nom_table set
nom_champ=valeur where ‘condition’ ");
Sélection de la base de données:
$req=mysqli_query(identifiant de connexion,"delete from nom_table where
"condition");
14
Base de données et PHP
Exécution des opérations CRUD
Exemple: Exécution de la requête de sélection:
$req=mysqli_query($id,"select nom,prenom from
personnes");
while($tab=mysqli_fetch_assoc($req)){
echo $tab["nom"]." ".$tab["prenom"];
}
15
Base de données et PHP
Objet PDO
PDO C’EST QUOI ?
PDO signifie PHP Data Objects. Il s'agit d'une interface qui permet au scripts PHP
d’interroger une base de données via des requêtes SQL.
PDO fournit une interface d'abstraction à l'accès de données, ce qui signifie qu'on
peut utiliser l'ensemble de ses fonctions pour exécuter des requêtes SQL quelque
soit le SGBD.
SGBD
PDO SGBD
Driver
16
Base de données et PHP
Objet PDO
Connexion à MySQL
<?php
$pdo = new PDO( ”mysql:host=name_host;dbname=db_name ”; ”user_name ”; ”password ”);
?>
Gestion d'erreurs de connexion :
<?php
try{
$pdo=new PDO("mysql:host=localhost;dbname=mbd",$user,$pass);
}
catch(PDOException $e){
echo $e->getMessage();
}
?>
17
Base de données et PHP
Objet PDO
Requêtes préparées
L'un des points fort de PDO est les requêtes préparées.
La requête préparée permet de préparer une requête et de l’analyser une seule fois,
mais peut être exécutée plusieurs fois avec des paramètres identiques ou
différents.
C’est plus "propre" et plus performant
Elle Inclut une protection contre les injections SQL
Le modèle de déclaration de la requête préparée peut contenir zéro ou plusieurs
paramètres nommés (:nom) ou marqueurs (?) pour lesquels les valeurs réelles
seront substituées lorsque la requête sera exécutée.
18
Base de données et PHP
Objet PDO
Exécution des Requêtes préparées
Pour lancer une requête "préparée" il faut :
La préparer avec prepare("requete sql contenant des marqueurs ’?’ ou ’:marqueur’")
L’exécuter avec la méthode execute([tableau, de, paramètres])
Exemple <?php
$req = $pdo->prepare("insert into users (nom,prenom,email) values(?,?,?)");
$req->execute(array(
bakkali",
sara",
"sara@[Link]"
));
?>
La méthode PDO exec("requête SQL") permet d’exécuter une requête SQL en écriture et
retourner le nombre d’enregistrements affectés. 19
Base de données et PHP
Objet PDO
Exécution des Requêtes préparées
Exemple : utiliser des paramètres nommés au lieux des marqueurs interrogatifs.
<?php
$req = $pdo->prepare("insert into users (nom,prenom,email)
values(:nom,:prenom,:email)");
$ req >execute(array(
":prenom"=>"sara",
":nom"=>"bakkali",
":email"=>"sara@[Link]"
));
?>
20
Base de données et PHP
Objet PDO
Exécution des Requêtes préparées
Exemple : Exécuter la requête de sélection.
<?php
$req = $pdo->prepare("select * from users order by id");
$req->setFetchMode(PDO::FETCH_ASSOC);
$req->execute();
$tab = $req->fetchAll();
?>
<?php
for($i=0;$i<count($tab);$i++){
echo implode(" | ",$tab[$i])."<br />";
}
?> 21
Base de données et PHP
Objet PDO
Exécution des Requêtes préparées
Exemple : Exécuter la requête de sélection.
<?php
$req = $pdo->prepare("select * from users order by id");
$req->setFetchMode(PDO::FETCH_ASSOC);
$req->execute();
$tab = $ req- >fetchAll();
?>
Exemple : Exécuter la requête de suppression d’un enregistrement.
<?php
$req = $pdo->prepare("delete from users where id=?");
$req->execute(array(1));
?>
22