MySQL avec php pdf cours complet avec exemples et exercices


Télécharger MySQL avec php pdf cours complet avec exemples et exercices

★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Télécharger aussi :


MySQL avec php pdf cours complet avec exemples et exercices

Qu’est-ce que Mysql ? 

  • Système de Gestion de Bases de Données relationnelles
  • Libre de droits (license GPL) 
  • Langage de manipulation de bases de données
  • Serveur mysqld, commande mysql
  • Base de données mysql en tant que telle (bases, utilisateurs)
  • Fonctions d'accès intégrées dans de nombreux langag

Les permissions MySQL

  • mysql> SHOW PRIVILEGES;
  • SELECT : droit d'effectuer des recherches  avec “select »
  • INSERT : droit d'effectuer des insertions avec « insert »
  • UPDATE : droit d'effectuer des mises à jour avec « update »
  • DELETE : droit d'effectuer des destructions d'enregistrements dans des tables
  • INDEX : droit de créer ou détruire des index de tables
  • ALTER : droit de modifier la structure des tables avec « alter »
  • CREATE : droit de créer des bases ou des tables avec « create »
  • USAGE : droit de se connecter au serveur, sans rien faire d'autre
  • ( utile uniquement pour changer le mot de passe de connexion )
  • LOCK : droit de verrouiller/déverrouiller des tables

Architecture

MySQL est basé sur une architecture client/serveur.

C'est-à-dire que les clients doivent s'adresser au serveur qui gère, contrôle et arbitre les accès aux données

Objets

n serveur MySQL gère une ou plusieurs base de données.

Chaque base de données contient différents types d'objets (tables, index, fonctions).

L'objet le plus représenté d'une base de données est la table.

Chaque table (appelées encore « relation ») est caractérisée par une ou plusieurs colonnes (ou « attributs »).

Le langage qui permet de gérer ces objets est appelé « Langage de Description des Données » (LDD).

Les données sont stockées dans les tables sous forme de lignes (ou « tuples »).

Le langage qui permet de manipuler les données est appelé « Langage de Manipulation des Données » (LMD).

Clés primaires et étrangères ne table contient généralement une clé primaire.

Une clé primaire est constituée d'une ou plusieurs colonnes.

Les valeurs des colonnes qui constituent la clé primaire d'une table sont uniques pour toutes les lignes de la table. La clé primaire d'une table permet donc de faire référence de manière univoque à chaque ligne de la table.

Par exemple, les tables pizzas et commandes possèdent toutes deux une clé primaire qui est constituée de leur colonne id respective.

La colonne pizza_id de la table commandes fait référence à la colonne id (donc à la clé primaire) de la table pizzas.

Ce type de référence est appelée « clé étrangère ». MySQL n'implémente pas les clés étrangères sous forme de contrainte.

Clés uniques

En complément à la clé primaire, une ou plusieurs clés uniques (appelées également « clés secondaires » ou « clés alternatives ») peuvent être associées à une table.

Les clés uniques sont identiques aux clés primaires à la différence prés que les colonnes qui les constituent peuvent contenir une valeur NULL.

La plupart du temps, toute table devrait posséder au moins une clé primaire.

Par exemple, si la clé primaire de la table pizzas est constituée de la colonne id et s'il existe une clé unique constituée de la seule colonne nom, le schéma ci-contre propose trois nouvelles lignes à l'insertion dont une seule pourra être ajoutée à la table.

- Configuration et paramétrage (php.ini)

Lors de l’installation de PHP, un fichier de configuration nommé « php.ini » sera créé sur votre système. Le fichier php.ini est le fichier de configuration de serveur PHP. Ce fichier respecte la structure des fichiers INI bien connus de nombreuses applications Windows. Il s'agit d'un fichier texte ASCII divisé en plusieurs sections, chacune portant un nom et contenant des variables relatives à la section concernée.

Chaque section ressemble au fragment suivant :

[MaSection]

variable="valeur"

autrevariable="autrevaleur"

Le nom de la section figure au début entre crochets, suivi d'un certain nombre de paires nom/valeur, chaque paire figurant sur une ligne distincte. Comme pour tout code PHP, les noms des variables font la distinction entre majuscules et minuscules et ne peuvent pas contenir d'espace. Les valeurs peuvent quant à elles être numériques, booléennes ou correspondre à une chaîne.

Les lignes en commentaires commencent par un « ; »

Toute modification du fichier php.ini nécessite un redémarrage du serveur afin que la nouvelle configuration soit prise en compte.

Par défaut le fichier php.ini est configuré de sorte à être fonctionnel. Intervenir sur ce fichier peut être intéressant pour rajouter de nouveaux modules ou pour affiner certains paramètres de sécurité mais doit systématiquement faire l’objet d’un backup de sécurité au préalable.

Quelques exemples de paramétrage :

-Gérer l’affichage des messages d’erreur

Les erreurs PHP se répartissent en quatre catégories: erreurs du parseur, notifications de bugs dans le code (par exemple, des variables non initialisées), avertissements (erreurs non fatales) et erreurs fatales. Normalement, lorsque PHP détecte une erreur de parseur, non fatale ou fatale, il affiche l'erreur et, si elle est fatale, il arrête également de traiter le script à ce stade. Vous pouvez modifier ce comportement à l'aide de la variable error_reporting, qui accepte un champ binaire des codes d'erreurs et n'affiche que les erreurs correspondant à ces codes:

La configuration suivante par exemple permet l’affichage de tout type d’erreur.

error_reporting = E_ALL

Pour désactiver l'affichage des erreurs (recommandé en production), désactivez la variable display_errors et inscrivez plutôt les messages dans un journal des erreurs à l'aide de la variable log_errors.

Cette technique est également efficace pour des raisons de sécurité: en désactivant les erreurs, vous masquez des informations spécifiques du système que des utilisateurs peu scrupuleux pourraient exploiter pour essayer de nuire à votre site ou votre application. Définissez donc l'écriture de ces erreurs dans un fichier journal personnalisé ou dans le journal système, en paramétrant la variable error_log sur le nom d'un fichier .



display_errors = Off log_errors = On

error_log = "error.log"

- file_uploads= On/Off permet d'autoriser ou non l'envoi de fichiers.

- upload_tmp_dir = répertoire permet de définir le répertoire temporaire permettant d'accueillir le fichier uploadé.

- upload_max_filesize = 2M permet de définir la taille maximale autorisée pour le fichier. Si cette limite est dépassée, le serveur enverra un code d'erreur.

- post_max_size indique la taille maximale des données envoyées par un formulaire. Cette directive prime sur upload_max_filesize, il faut donc s'assurer d'avoir post_max_size supérieure à upload_max_filesize.

- register_globals = Off [sécurité, performance]

Depuis la version 4.2.0 de PHP, la valeur par défaut de register_global est à Off dans le php.ini. Dorénavant une variable envoyée par un formulaire (méthode POST) n'est plus récupérée avec $variable mais avec $_POST["variable"]. Toutes les variables globales sont concernées (POST, GET, cookies, environnement et autres variables serveur : $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_REQUEST, $_SESSION). Ceci peut nécessiter la réécriture partielle de certains scripts.

Rq : il est vivement conseillé d'utiliser cette configuration qui est celle adoptée par défaut depuis PHP 4.2.0 et de coder vos scripts en conséquence. Cependant si vous souhaitez utiliser d'anciens scripts sans avoir à les réécrire, vous avez toujours la possibilité de remettre dans le fichier php.ini register_global à On.

3- Présentation des options les plus courantes.

Le Menu de EASYPHP offre les fonctionnalités suivantes :

  • Fichier Log

Ce menu permet de visualiser l’ensemble des fichier logs que Apache et MYSQL génèrent. PHP ne générant pas de fichier log puisqu’il ne fonctionne qu’au travers d’Apache.

  • Configuration

Ce menu donne accès aux fichiers de configurations suivants :

-Apache : httpd.conf

-Extension PHP : php.ini

-PHP : php.ini

-MYSQL : mysql.ini

-PHPMyadmin

Les fonctionnalités du langage

1- Premiers éléments du langage.

Lorsque vous créez un code, il doit être placé entre balises php pour que celui- ci soit interprété, comme ceci:

<?

echo 'bonjour';

?>

ou encore

<?PHP

echo 'bonjour';

?>

Ce qui affichera à l'écran ‘ bonjour ’.

Une syntaxe PHP se termine TOUJOURS par un point-virgule, si vous l'oubliez vous verrez apparaître une PARSE ERROR lors de l'exécution de votre fichier.

Les commentaires peuvent se présenter sous deux formes :

<?

//ceci est

// un commentaire

/* ceci est

un commentaire */ ?>

2- Intégration de PHP dans une page HTML.

a- Généralités

L'un des avantages du PHP est qu'il s'intègre facilement dans du code HTML classique. Chacun peut à sa guise inclure quelques parties en PHP dans des parties de code HTML.

Remarque importante :

Du moment que des parties de code PHP ont été intégrées dans une page HTML cette dernière doit impérativement être renommée en extension .php

...

La fonction include()

La fonction include() de PHP permet d’inclure un fichier dans un autre lors de son exécution.

Un élément HTML répétitif qui apparaît dans toutes les pages de votre site (menu par exemple) pourra être isolé dans un fichier PHP. Un appel de ce fichier grâce à la fonction include() apparaîtra dans toutes les pages de votre site. Ainsi si le menu doit être par exemple modifié il suffira uniquement de changer le fichier contenant le menu.

Syntaxe

<?

Include ("nom_du_fichier_a_inclure") ; ?>

Dans l’exemple suivant un fichier menu.php contiendra le code HTML nécessaire à la génération d’un menu en HTML.

Un second fichier page.php inclura ce fichier menu.php.

Exemple fichier menu.php

<a href= "menu1.php" > Menu1 </a><br> <a href="menu2.php" > Menu2 </a><br> <a href="menu3.php" > Menu3 </a><br>

Remarque : Il ne faut exécuter que le fichier page.php.

Ainsi toutes les pages du site sensées contenir ce menu intègreront grâce à la fonction include() le fichier menu.php.

Il suffira de changer le fichier menu.php afin que toutes les pages qui l’intègrent se trouvent automatiquement changées.

3- Variables, chaînes et concaténation

Une variable est définie sous la forme $variable_nom.

L’affectation d’une variable se fait de la manière suivante : $variable_nom = variable_valeur. L’appel de la valeur affectée à une variable se fait par son nom.

...

Remarques :

Si vous utilisez les ' au lieu des " , la variable n'est pas interprétée comme une variable mais comme une chaîne de caractère.

Remarque sur l’usage des cotes simples ou doubles

Lors de l’usage des ' pour l’affichage d’une chaîne de caractère contenant des apostrophes, vous devez impérativement faire précéder ces apostrophes d'antislash. De la sorte l’apostrophe ne sera pas confondue avec le caractère de fin de la chaîne à afficher. Dans le cas contraire un message d’erreur sera affiché.

<?

echo 'vous n\'êtes pas inscrit'; ?>

Le résultat obtenu sera : Vous n’êtes pas inscrit

Il en va de même lors de l’usage de ” pour l’affichage d’une chaîne de caractère contenant au préalable des doubles cotes.

...

Tableaux

a- Tableaux numérotés et tableaux associatifs

Il existe deux type de tableaux de variables sous PHP :

-Les tableaux à index numériques (tableaux numérotés) dans lesquels l’accès à la valeur de la

variable passe par un index numérique

ex : $tableau[0], $tableau[1], $tableau[2], ...

-Les tableaux à index associatifs (ou tableaux associatifs) dans lesquels l’accès à la valeur de la variable passe par un index nominatif



ex : $tableau[nom], $tableau[prénom], $tableau[adresse], ...

...

Variables serveur

PHP propose l’accès à toute une série de variables comme les en-têtes, dossiers et chemins des scripts, sans que vous ayez à les créer, on les appelle les variables serveur. Ces variables sont créées par le serveur web.

Le tableau $_SERVER permet d’accéder à ces variables. Si la directive register_globals de PHP.INI est active, alors ces variables seront aussi rendues directement accessible dans le contexte d'exécution global c'est à dire séparément du tableau $_SERVER.

Description de certaines variables :

$_SERVER['SERVER_NAME'] Le nom du serveur hôte qui exécute le script

$_SERVER['PHP_SELF'] Le nom du fichier du script en cours d'exécution, par rapport à la racine web

$_SERVER['DOCUMENT_ROOT'] Racine du serveur

$_SERVER['REMOTE_ADDR'] Adresse IP du client

$_SERVER['QUERY_STRING'] Liste des paramètres passés au script

$_SERVER['REQUEST_METHOD'] Méthode d'appel du script

Exemple

...

Accès fichiers

1- Ouverture / fermeture de fichier

Avant toute opération de lecture ou écriture sur un fichier il y a nécessité de l’ouvrir. Et à la fin de tout traitement d’un fichier il y a nécessité de le fermer.

Syntaxe

<?

// Ouverture de fichier

$monfichier = fopen( nom_du_fichier", "r+");

"

// Traitements sur le fichier

//

// Fermeture du fichier

fclose($monfichier);

?>

Fopen() prend en entrée :

-le nom du fichier (ou meme une url) -le mode d’ouverture du fichier

Il retourne un handle.

Fclose() prend en entrée le handle envoyé par le fopen.

Les modes d’ouverture d’un fichier sont les suivants :

'r' Ouvre en lecture seule, et place le pointeur de fichier au début du fichier.

'r+' Ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier.

'w' Ouvre en écriture seule ; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.

'w+' Ouvre en lecture et écriture ; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.

'a' Ouvre en écriture seule ; place le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, on tente de le créer.

'a+' Ouvre en lecture et écriture ; place le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, on tente de le créer.

2- Lecture de fichier

a- fgets()

string fgets ( resource handle , int length )

fgets retourne la chaîne lue jusqu'à la longueur length - 1 octet depuis le pointeur de fichier handle , ou bien la fin du fichier, ou une nouvelle ligne (qui inclue la valeur retournée), ou encore un EOF (celui qui arrive en premier). Si aucune longueur n'est fournie, la longueur par défaut est de 1 ko ou 1024 octets.

La fonction prend en paramètre :

- le handle retourné par la fonction fopen() - la taille en octets de lecture (optionnel)

Elle retourne en sortie une chaîne de caractères.

Exemple :

L’exemple suivant va permettre de lire dans un fichier texte (fichier.txt) ligne par ligne puis d’afficher le résultat à l’écran en mettant un numéro à chaque ligne.

b -fread()

string fread ( resource handle , int length )

Une autre manière de faire de la lecture dans un fichier est d’utiliser fread()

fread lit jusqu'à length octets dans le fichier référencé par handle . La lecture s'arrête lorsque length octets ont été lus, ou que l'on a atteint la fin du fichier, ou qu'une erreur survient (le premier des trois).

c- file()

array file (string filename)

Encore une autre manière de lire dans un fichier est d’utiliser la fonction file()

Identique à readfile, hormis le fait que file retourne le fichier dans un tableau. Chaque élément du tableau correspondant à une ligne du fichier, et les retour−chariots sont placés en fin de ligne.

...

Ecriture dans fichier

La fonction pour l’écriture dans un fichier est fputs()

int fputs ( int handle , string string , int length )

fputs écrit le contenu de la chaîne string dans le fichier pointé par handle . Si la longueur length est fournie, l'écriture s'arrêtera après length octets, ou à la fin de la chaîne (le premier des deux). fwrite retourne le nombre d'octets écrits ou FALSE en cas d'erreur.

Fonctions diverses de traitement de fichier :

-feof ($handle) fonction qui retourne un booleen pour indiquer la fin du fichier parcouru. Elle prend en entrée le handle retourné par la fonction fopen().

-filesize ($nom_du_fichier) fonction qui retourne la taille du fichier en octets.

-file_exists ($nom_du_fichier ) fonction qui retourne un booleen indiquant si le fichier existe ou non.

Passage et transmission de variables

1-Passage et transmission de variables par formulaire

Quand dans un site web un formulaire est rempli et envoyé, le contenu des champs saisis est transféré à la page destination sous forme de variables. Ce passage de variables ou de paramètres peut se faire de deux manières : en GET ou en POST.

Passage et transmission de variables par hyperlien

Des paramètres ou variables peuvent passer d’une page source vers une page destination sans transiter par un formulaire pour leur envoi. Les hyperliens peuvent être des vecteurs de passage de paramètre.

Syntaxe

<!—Syntaxe d’envoi -->

<a href=destination php 7variable1=contenu1&variable2=contenu2&...> Lien </a> .

La récupération des paramètres dans la page destination se fait par le tableau $_GET

<? $variable1=$_GET['variable1'J ; $variable2=$_GET['variable2'J ; ...

?>

Exemple :



Dans l’exemple suivant nous allons créer un fichier menu.php contenant un menu fait d’hyperliens. Chacun de ces hyperliens enverra des paramètres différents.

Ce menu sera appelé dans une page qui réagira différemment selon le paramètre envoyé.

Variables persistantes: Cookies et Session

Les variables ont une durée de vie limitée : celle du script qui les appelle. Ainsi que nous l’avons vu dans le chapitre précédent l’unique moyen de transmettre ces variables de pages en pages consiste à effectuer un passage de paramètres (méthode GET ou POST) ce qui d’une manière générale est contraignant à plus d’un titre :

- Contraignant pour le développeur puisque il doit gérer par code ces passages de paramètres,

- Contraignant pour la sécurité si l’on ne désire pas que le client accède à certaines informations. PHP offre un mécanisme de stockage d’informations de manière persistante. Autrement dit tout au long de la navigation à l’intérieur d’un site des variables seront accessibles sans avoir pour autant à les passer en paramètres.

Deux types de variables persistantes existent :

- Les variables persistantes côté client : les cookies

- Les variables persistantes côté serveur : la session

1- les Cookies

Les cookies sont un mécanisme d'enregistrement d'informations sur le client, et de lecture de ces informations. Ce système permet d'authentifier et de suivre les visiteurs d’un site. PHP supporte les cookies de manière transparente.

a- setcookie() : Cette fonction permet de définir un cookie qui sera envoyé avec le reste des en−têtes.

int setcookie (string nom_variable ,[string valeur_variable ],[int expiration ],[string chemin ],[string domaine ],[int securité ])

nom_variable : nom de la variable a stocker valeur_variable : Valeur de la variable a stocker expiration : durée pour l'expiration du cookie chemin : le chemin du répertoire ou doit être lu le cookie

domaine : le nom domaine

securité : le type d'entête (http, https)

Tous les arguments sauf nom_variable sont optionnels.

A l’instar de la fonction header(), setcookie() doit impérativement être appelée avant tout affichage de texte.

Syntaxe

<?

setcookie("variable1",$valeur1, $durée,$chemin,$domaine,$securite); ?>

Exemples

<?

$valeur= "Ceci est la valeur de la variable" ;

setcookie ("TestCookie",$value,time()+3600); /* expire dans une heure */ ?>

...

e- Limitation des cookies

Le problème majeur du cookie c'est que le client a le pouvoir de le refuser (en configurant spécifiquement son browser). Votre application risque donc de ne pas pouvoir fonctionner.

Il y a aussi des risques plus graves quant à la sécurité. L'usurpation d'identité, car ce fichier peut être recopié facilement sur un autre ordinateur et modifié puisque ce n’est qu’un fichier texte.

2- les sessions

La gestion des sessions avec PHP est un moyen de sauver des informations entre deux accès. Cela permet notamment de construire des applications personnalisées, et d'accroître l'attrait de votre site. Chaque visiteur qui accède à votre site se voit assigner un numéro d'identifiant, appelé plus loin "identifiant de session". Celui−ci est enregistré soit dans un cookie, chez le client, soit dans l'URL. Les sessions vous permettront d'enregistrer des variables pour les préserver et les réutiliser tout au long de la visites de votre site. Lorsqu'un visiteur accède à votre site, PHP vérifiera si une session a déjà été ouverte. Si une telle session existe déjà, l'environnement précédent sera recréé. L’inconvénient précédemment évoqué concernant les cookies est dépassé dans la mesure ou tout est stocké sur le serveur même.

a- session_start()

session—start() permet de démarrer une session pour le client .

Syntaxe

<?

session_start() ;

?>

Cette commande doit figurer dans toutes les pages elle perpétue le transfert des variables de session au cours de la navigation dans le site.

Le compilateur PHP va alors créer alors dans le répertoire de sauvegarde des sessions, un fichier dont le nom commence par sess— et se termine par un identifiant généré de manière aléatoire.

L'identifiant de session peut être affiché par la commande session—id(). Vous pouvez également gérer vous-même ce nom de session en utilisant session—name() avant le démarrage de la session.

La durée de vie d’une session est paramétrée par session.cache—expire

La session est perdue définitivement pour l'utilisateur lorsque :

1- Il n'a exécuté aucune action (POST ou GET) au delà de la durée de vie définie .

2- Il ferme son navigateur.

3- La commande session—destroy est appelée.

b- Ajouter des variables dans la session

L’ajout de variable dans l’environnement de session se fait au travers d’une affectation classique. Toutefois la variable session définie doit être appelée vie la tableau $_SESSION[] 



339