88
Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Embed Size (px)

Citation preview

Page 1: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Module7  Web dynamique 

PhP + MySQL

AYARI Mejdi2006

Page 2: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Qu’est-ce que PhP

PrésentationApports de PhPApports de PhP 4Syntaxe

Page 3: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Qu’est-ce que PhP

PrésentationPrésentation

PHP est un langage de script qui s'inclut dans le langage HTML.

Le but du langage PHP est de permettre aux développeurs de site web d'écrire rapidement des pages web dynamiques.

Ce qui distingue le PHP des langages de script comme le JavaScript est que le code est exécuté sur le serveur et non par le navigateur. Le client ne reçoit que le résultat, sans aucun moyen d'avoir accès au code qui a produit l’affichage.

Page 4: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Qu’est-ce que PhP

Apports de PhPApports de PhPLe langage PHP possède les mêmes fonctionnalités que les autres langages permettant d'écrire des scripts CGI, comme par exemple :

-  Collecter des données.-  Générer dynamiquement des pages web -  Envoyer et recevoir des cookies.

La plus grande qualité du langage PHP est le support d'un grand nombre de bases de données en mode natif.PHP en supporte un grand nombre dont :  Adabas D, dBase, Empress, FilePro, Informix, InterBase, mSQL, MySQL, Oracle, PostgreSQL, Solid, Sybase, Velocis, Unix dbm.

Page 5: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Qu’est-ce que PhP

Apports de PhPApports de PhP

Disponibilité sur plusieurs systèmes d’exploitation : UNIX, Windows et MAC

Génération des fichiers PDF ou des images GIF

Langage orienté objet

Page 6: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Qu’est-ce que PhP

Apports de PhP 4Apports de PhP 4

La version 4.0 de PHP inclut de nombreuses nouvelles possibilités :

•Le moteur Zend.

•Le support des sessions HTTP.

•La présence de nouvelles bibiothèques

•Installation plus conviviale.

Page 7: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Qu’est-ce que PhP

SyntaxeSyntaxeLa syntaxe du PhP est très proche de celle du langage C.

4 méthodes pour insérer un script PhP dans une page Html :

< ?php  echo (″exemple en PhP″ ) ; ?>

< ? echo(″exemple en PhP″) ; ?>

<SCRIPT LANGUAGE= ‘PhP’>echo (″exemple en PhP″) ; </SCRIPT>

<% echo(″exemple en PhP″) ; %>

Page 8: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Qu’est-ce que PhP

SyntaxeSyntaxeUne instruction est terminée par un point-virgule en fin de ligne.Commentaires :

Commenter une ligne< ?phpecho (″exemple en php″) ; //Ceci est un commentaire?>Commenter plusieurs lignes< ?php/*Ceci est un commentaire qui s’étalesur plusieurs lignes*/echo (″exemple en php″) ;?>

Page 9: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Variables, constantes et types de données

ConstantesVariablesTableauxChaînes de caractèresExpressions régulières

Page 10: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Variables, constantes et types de données

ConstantesConstantesLe recours à des constantes constitue un moyen pratique pour affecter une valeur à un identifiant, puis de faire référence à cet identifiant dans l’ensemble du programme.

Pour définir une constante, on fait appel à la fonction define().

Exemple :< ?phpdefine(″SOCIETE″,″Société internationale d’Import Export″ ) ;echo (″Je travaille à la société : ″ . SOCIETE) ; ?>

Page 11: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Variables, constantes et types de données

VariablesVariablesEn PHP, les variables sont représentées par un signe dollar suivi du nom de la variable.

Une variable est automatiquement déclarée dès que vous lui affectez une valeur.

L’affectation est réalisée à l’aide de l’opérateur (=).

Exemple :< ?php$nom = "Mejdi"; $prix = 15,200 ;?>

Page 12: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Variables, constantes et types de données

VariablesVariablesVariables dynamiques : Une variable dynamique prend la valeur d'une variable et l'utilise comme nom d'une autre variable.

Exemple :<?php$a = "hello"; $$a = "world"; echo "$a ${$a}"; /*Produira le même affichage que echo "$a $hello« , c’est à dire hello world.*/?>

Page 13: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Variables, constantes et types de données

VariablesVariablesPHP tient compte de la casse des caractères dans les noms de variables.Ainsi, $chaine ou $Chaine permet d'adresser deux variables bien distinctes. La fonction gettype() permet de déterminer le type d’une variable PhP.

Exemple :<?phpif(gettype($saisie_utilisateur) == ″integer″) {

$age=$saisie_utilisateur ;}?>

Page 14: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Variables, constantes et types de données

TableauxTableauxUn tableau est composé d’un certain nombre d’éléments possédant chacune une valeur propore ainsi qu’une clé ou indice , permettant de faire référence à cet élément.

Par défaut, l’indice du premier élément d’un tableau est zérozéro.

L’index dans le tableau peut être indifféremment un entier ou une chaîne de caractères.

Page 15: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

2 méthodes sont possibles :

Affecter directement les valeurs au tableau :Exemple :<?php

$tableau[0]="a";$tableau[1]="b";

$tableau[2]=″c″;

?>

Variables, constantes et types de données

TableauxTableauxInitialisation d’un tableau

Page 16: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Variables, constantes et types de données

TableauxTableauxInitialisation d’un tableau

Utiliser la fonction array().Exemple :<?php$tableau = array(″a″, ″b″, ″c″) ; ?>On peut utiliser l’opérateur => afin de spécifier les indices particuliers des éléments d’un tableau.Exemple : <?php $tableau = array(1=>"a",

2=>"b", 3=>"c") ;

?>

Page 17: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Variables, constantes et types de données

TableauxTableaux

Parcourir un tableauLes deux fonctions each() et list() peuvent être utilisées conjointement afin de parcourir un tableau, même si les indices ne sont pas séquentiels.

Exemple :<?phpwhile (list ($cle, $valeur) = each ($tableau)) { echo ("L'élément $cle est égal à $valeur <br>");}?>

Page 18: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Fonction Description

reset() Remet le pointeur interne de tableau au début.

pos() Retourne la valeur de l'élément courant d'un tableau

key() Retourne l'indice de l'élément courant d'un tableau.

next() Avance le pointeur interne d'un tableau.

prev() Recule le pointeur courant de tableau.

end() Positionne le pointeur de tableau en fin de tableau.

sizeof() Retourne le nombre d’éléments dans un tableau

Variables, constantes et types de données

TableauxTableauxIl existe d’autres fonctions permettant de se déplacer dans un tableau  :

Page 19: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Variables, constantes et types de données

TableauxTableauxTrier un tableau

PhP dispose de plusieurs fonctions permettant de trier un tableau.

La plupart de ces fonctions ne retournent pas de valeur mais modifient simplement le tableau passé en paramètre.

Les fonctions sort() et rsort() permettent de trier un tableau par valeur croissante ou décroissante.

On peut également trier un tableau par indice, à l'aide des fonctions ksort() et krsort(), qui s'utilisent de la même manière que les fonctions précédentes.

Page 20: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Exemple :

<?php

$pays = array ("us" => "Etats-Unis", "ch" => "Suisse",

"ca" => "Canada","fr" => "France","de" => "Allemagne");

sort ($pays);

while (list ($cle, $val) = each ($pays)) {

echo "L'élément $cle est égal à $val<BR>\n";

}

?>

Variables, constantes et types de données

TableauxTableauxTrier un tableau

Page 21: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Variables, constantes et types de données

Chaînes de caractèresChaînes de caractèresFonctions de chaînes de caractères 

substr() : string substr(string source, int début, int [taille])Retourne une portion de string, spécifiée avec le début début et la longeur taille.Exemple :<?phpEcho(substr(″Christophe″),-2);//Affiche he Echo(substr(″Christophe″),-5,3);//Affiche top?>

Page 22: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Variables, constantes et types de données

Chaînes de caractèresChaînes de caractères trim() :string trim (string str)Cette fonction retire les espaces blancs de début et de fin de chaîne, et retourne la chaîne nettoyée. Exemple : <?phpecho(trim(″ chaîne exemple ″)) ; //imprime «chaîne exemple»?>strlen() : int strlen (string str)Retourne la longueur de la chaîne string.Exemple :if(strlen($userinput) >30) {echo(″La saisie ne doit pas dépasser 30 caractères″);}

Page 23: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Variables, constantes et types de données

Chaînes de caractèresChaînes de caractères implode()string implode (string separator, array tableau)Retourne une chaîne constituée de tous les éléments du tableau, pris dans l'ordre, transformés en chaîne, et séparés par séparateur.

explode()array explode (string separator, string string)Retourne un tableau qui contient les éléments de la chaîne string, séparés par separator.

Page 24: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Exemple :<?php$chaine="Nom|Prenom|Adresse";$champs=explode("|",$chaine);$boucle=0;while($boucle<sizeof($champs)){echo$champs[$boucle];$boucle++;}?>

Variables, constantes et types de données

Chaînes de caractèresChaînes de caractères

Page 25: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Variables, constantes et types de données

Chaînes de caractèresChaînes de caractères  str_replace()string str_replace(modèle, remplacement, chaîne)Remplace toutes les occurrences de modèle dans chaîne par remplacement

Exemple :<?php$chaine="tout est rouge";$chaine=str_replace("rouge", "bleu", $chaine);echo $chaine; //Imprime ″tout est bleu″ ?>

Page 26: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Variables, constantes et types de données

Expressions régulièresUne expression régulière permet de caractériser le format d'une chaîne de caractère.

Le but étant de rechercher ou de remplacer un motif dans une chaîne de caractère.

Une expression régulière est une chaîne de caractères contenant des caractères spéciaux et des caractères standards.

Page 27: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Variables, constantes et types de données

Expressions régulièresSymbôle et SignificationSymbôle et Signification ExemplesExemples

Les symboles Les symboles ^̂ et et $$ indiquent le début ou la fin indiquent le début ou la fin d'une chaîne, afin de la délimiterd'une chaîne, afin de la délimiter

"^debut": chaine qui commence par "debut""fin$": chaine qui se termine par "fin" "^chaine$": chaine qui commence et se termine par "chaine"

* =>* =>"zero ou plusieurs""zero ou plusieurs" "abc+": chaine qui contient "ab" suivie de un ou plusieurs "c" ("abc", "abcc" etc..)

+ =>+ =>"un ou plusieurs""un ou plusieurs" "^abc+": chaine qui commence par "ab" suivie de un ou plusieurs "c" ("abc", "abcc" etc..)

? => "un ou aucun"? => "un ou aucun" "abc?": chaine qui contient "ab" suivie de zero ou un "c" ("ab" ou "abc")

Page 28: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Variables, constantes et types de données

Expressions régulièresSymbôle et SignificationSymbôle et Signification ExemplesExemples

Les accolades Les accolades {X,Y}{X,Y} permettent de donner des permettent de donner des limites de nombre.limites de nombre.

"abc{2,}": chaine qui contient "ab" suivie de deux "c" ou plus ("abcc" etc..)"abc{2,4}": chaine qui contient "ab" suivie 2, 3 ou 4 "c" ("abcc" .. "abcccc")

Les parenthèses Les parenthèses ( )( ) permettent de représenter permettent de représenter une séquence de caractères.une séquence de caractères.

"a(bc)*": chaîne qui contient "a" suivie de zéro "bc" ou plus

La barre verticale La barre verticale || se comporte en tant se comporte en tant qu'opérateur OU.qu'opérateur OU.

"un|le": chaîne qui contient "un" ou "le""(un|le) chien": chaîne qui contient "un chien" ou "le chien"

Page 29: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Variables, constantes et types de données

Expressions régulièresSymbôle et SignificationSymbôle et Signification ExemplesExemples

Le point Le point .. indique n'importe quel indique n'importe quel caractère (une fois)caractère (une fois)

"^.{3}$": chaîne qui contient 3 caractères

Les crochets Les crochets [ ][ ] définissent une liste de définissent une liste de caractères autorisés (ou interdits).caractères autorisés (ou interdits).

"[abc]": chaîne qui contient un "a", un "b", ou un "c"

Le signe Le signe -- permet, quant à lui, de définir un permet, quant à lui, de définir un intervalle.intervalle.

"[a-z]": chaîne qui contient un

caractère compris entre "a" et "z"

Le caractère Le caractère ^ ^ après le premier crochet après le premier crochet indique une interdiction.indique une interdiction.

"[^a-zA-Z]": chaîne qui ne commence pas par une lettre

Page 30: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Variables, constantes et types de données

Expressions régulièresFonctions utilisant les expressions régulières 

ereg() : booleen ereg(chaine expression, chaine texte[, tableau occurences])

Permet d'évaluer le texte passé en paramètre, à partir de l'expression régulière expression. Exemple :<?phpif(ereg(″^.+@.+\..+$″, $email)) {

echo (″Adresse email valide″) ;}else{

echo (″Adresse email erronée″) ;}?>

La fonction "eregi" est identique à la fonction "ereg", mais ne tient pas compte de la casse

Page 31: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Variables, constantes et types de données

Expressions régulièresereg_replace() :chaine ereg_replace(chaine expr, chaine remplacement, chaine texte)

Retourne la chaîne texte passée en paramètre, modifiée à l'aide de l'expression régulière et de la chaîne de remplacement.

Exemple :<?php $chaine = "Ceci # est # un test"; $chaine = eregi_replace("[^A-Z0-9]", "_", $chaine); print $chaine; //Affiche : Ceci _ est _ un test?>

Page 32: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Les structures de contrôle

Structures conditionnelles

Structures itératives

Structures de branchement

Page 33: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Les structures de contrôle

Instruction if :if (condition){

expression vrai} else {expression faux} Exemple :<? php$a = 10; $b = 11;print "a est égale à $a, b est égale à $b. ";if ($ a > $b) {print "a est plus grand que b"; } else {print "==> a est inférieure à b.";}?>

Page 34: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Les structures de contrôle

Instruction if ..elseif :

if (condition){expression vrai

}elseif(condition){expression vrai

} else {expression faux}

Page 35: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Les structures de contrôle

Exemple :<? php$a = 10; $b = 11;print "a est égale à $a, b est égale à $b. ";if ($ a > $b) {print "a est plus grand que b";} elseif ($ a == $b) {print "a est égal à b";} else {print "==> a est inférieure à b.";}?>

Page 36: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Les structures de contrôle

Structures itérativesLes structures itératives (boucles) constituent un moyen d’exécuter un bloc de code un nombre de fois donné, où jusqu’à ce qu’une condition particulière soit satisfaite.Boucle While : while (condition){

//instructions}Exemple :<?php/* Afficher tous les nombres de 1 à 10 */$i = 1;while ($i <= 10) { print $i++; /* La valeur affichée est $i avant l'incrementation (post-incrementation) */} ?>

Page 37: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Les structures de contrôle

Boucle do..while :do{//instructions}while(conditions)Exemple :$i = 0;do {print $i++;} while ($i>0); 

Page 38: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Les structures de contrôle

Boucle For : for (expr1; expr2; expr3) {instructions}

Exemple :

for ($i=0 ; $i<10 ; $i++) { echo "$i"; }

Page 39: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Les structures de contrôle

Les structures de branchement 

Une structure de branchement est utilisée pour comparer la même variable (ou expression) avec un grand nombre de valeurs différentes et d’exécuter différentes parties de code suivantla valeur à laquelle elle est égale.switch (expression) {case resultat1 :# instructions à exécuter si l’expression vaut resultat1...break ;case resultat2 :# instructions à exécuter si l’expression vaut resultat2...break ;...default :# instructions à exécuter en dernier recours...} 

Page 40: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Les structures de contrôle

Exemple :Switch ($type) {case "Femme" :echo "Bonjour Madame" ;break ;case "Homme" :echo "Bonjour Monsieur" ;break ;default :echo "Bonjour, vous êtes bizarre !" ;}

 

Page 41: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Traitement des formulaires

Squelette d’un script de traitement de formulaire 

Exemple

Page 42: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Traitement des formulaires

Le but est de présenter une méthodologie de traitement des formulaires dans le cas d’un site web dynamique. La structure générale d’un script de traitement de formulaire doit : •Implémenter le formulaire lui même ;•Procéder à des contrôles de saisie ;•Effectuer des actions suivant que la saisie est valisée ou non

Page 43: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Traitement des formulairesSquelette d’un script de traitement de formulaire 

Le principe consiste à tester, au début du script, si la valeur associée au champ caché formulaire est bien initialisée ou non : si oui, c’est que nous sommes déjà passé dans le formulaire. Sinon, c’est que le formulaire est chargé pour la première fois et qu’il n’y a donc aucun traitement particulier à faire.

<html><body>…< ?php//Est-ce la première fois qu’on passe dans le script//NONif(NON) {//contrôle sur la saisie….//Si la saisie est correcte : SAISIE VALIDEif(SAISIE VALIDE) {// Actions diverses…// Message…}

Page 44: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

//SINON : Saisie INVALIDEelse{//Actions diverses…//Message..}}//OUI ou saisie invalideif(OUI ou SAISIE INVALIDE) {?><form method=″POST″ action=″script.php″>…<INPUT TYPE=″HIDDEN″ NAME=″formulaire″ value=″ok″></FORM><?}?>…</BODY></HTML>

Traitement des formulairesSquelette d’un script de traitement de formulaire 

Page 45: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Admettons que nous devions élaborer un formulaire assurant la saisie du nom, prénom et de l’adresse e-mail d’un visiteur, afin de les stocker dans une base de données.

Deux champs seront en saisie obligatoire : nom et adresse e-mail. Et dans une certaine mesure, nous chercherons à contrôler la validité de l’adresse e-mail saisie. Pour finir, notre formulaire devra renvoyer un message au client afin de l’inviter à modifier sa saisie si cette dernière est invalide, ou de l’informer que sa saisie a été prise en compte dans le cas contraire. 

Traitement des formulairesExemple 

Page 46: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Les fonctions

Syntaxe des fonctions

Portée d’une variable

Page 47: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Les fonctions Une fonction est un bloc de code défini une fois, puis invoqué à partir d’autres endroits du programme.

Une fonction peut accepter un ou plusieurs arguments, accomplit un ensemble d’opérations prédéfinis selon ces arguments puis renvoie une valeur en résultat.

function ma_fonction ($arg_1, $arg_2, ..., $arg_n){// Corps de ma fonction...return $valeur_de_retour ;}

Page 48: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Les fonctions Exemple :function carre($nombre) {return $nombre * $nombre ;}echo carre(3) ; //affiche la valeur 9 

Page 49: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Les fonctions Portée d’une variable

La portée d’une variable détermine quelles parties du programme y ont accès. Pour la plupart des variables, la portée concerne la totalité d'un script PHP. Mais, lorsque vous définissez une fonction, la portée d'une variable définie dans cette fonction est locale à la fonction.

Page 50: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Les fonctions Portée d’une variable

Exemple :<?php$var=″a″ ;function change_var() { $var = ″b″ ;}change_var() ;echo(″$var″) ; //affiche ″a″?> 

Page 51: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Les fonctions Portée d’une variable

Pour accéder à une variable globale au sein d’une fonction il faut la déclarer globalglobal au sein de la fonction. Exemple :<?php$var=″a″ ;function change_var() { global $var ;$var = ″b″ ;}change_var() ;echo(″$var″) ; //affiche ″b″ ?>

Page 52: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Les fonctions Variables statiques

Une variable statique est une variable locale qui ne perd pas sa valeur à chaque fois que la fonction est exécutée.

On utilise l’attribut staticstatic pour déclarer une telle variable.

Ce type de variable est très utile pour la création de fonctionsrécursives.

Page 53: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Les fonctions

Exemple :<?phpfunction compte () {static $compteur = 0 ;$compteur++ ;echo "$compteur " ;if ($compteur < 10) compte() ;}compte() ;?>

Entre chaque appel de la fonction compte() : La variable $compteur ne sera pas réinitialisée.

Variables statiques

Page 54: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Utilisation de MySQL avec PhP

Connexion au serveur des donnéesSélection de la base des donnéesRequêteExploitation des requêtes

Page 55: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Utilisation de MySQL avec PhP Connexion au serveur des données

int mysql_connect (string hostname, string username , string password)

Exemple : <?php if( mysql_connect("localhost" , "moi" , "miaou ") > 0 ){  echo " Connexion réussie ! " ; }else{  echo " Connexion impossible ! "  ;}?>

Page 56: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Utilisation de MySQL avec PhP Sélection de la base 

int mysql_select_db (string database_name, int link_identifier)

Exemple :<?php if( mysql_select_db( "ma_base ") == True ){  echo " Sélection de la base réussie ";} else{  echo" Sélection de la base impossible";}?>

Page 57: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Utilisation de MySQL avec PhP Requête 

int mysql_query (string query, int link_identifier ) Contrairement aux autres fonctions (connexion et sélection), La valeur de retour est très importante, elle est utilisée pour retrouver les données rapatriées par une requête de sélection.

Exemple :<?php $requete = "SELECT * FROM membres WHERE nom = 'alain' "; $resultat = mysql_query( $requete );?>  

Page 58: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Utilisation de MySQL avec PhP Requête  int mysql_db_query (string database, string query, int link_identifier )

La différence par rapport à mysql_query(), c’est qu’on peut sélectionner la base des données en même temps que l’exécution de la requête.

Exemple :<?php$req= "SELECT * from employee";$result = mysql_db_query("database1", $req, $linkId)?>

Page 59: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Utilisation de MySQL avec PhP Exploitation des requêtes

Requête de sélection : array mysql_fetch_row (int result) Extrait de l’identificateur de résultat (result) la prochaine ligne sous la forme d’un tableau énuméré ou FALSE s’il ne reste plus de ligne.Exemple : < ?$enregistrement = mysql_fetch_row($result);//Afficher le champ nomecho $enregistrement[0] ;//Afficher le champ prénomecho $enregistrement[1] ;//Afficher le champ dateecho $enregistrement[2] ;?>

Page 60: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Utilisation de MySQL avec PhP Exploitation des requêtes array mysql_fetch_array (int result, int result_type )

Extrait la ligne sous forme d’un tableau associatif.Le paramètre result_type est facultatif.Il peut prendre les valeurs suivantes : MYSQL_NUM, MYSQL_ASSOC ou MYSQL_BOTH.Exemple : <?php$enregistrement = mysql_fetch_array($result);

//Affiche le champ –prenom-echo $enregistrement["prenom"] ;//Affiche le champ –nom-echo $enregistrement["nom"] ;//Affiche le champ –date-echo $enregistrement["date"] ;

?>

Page 61: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Utilisation de MySQL avec PhP Exploitation des requêtes object mysql_fetch_object (int result, int result_typ )

Retourne un objet (structure) correspondant à la ligne extraite de l’identificateur de résultat.L’argument optionnel result_typ est une constante qui peut prendre les valeurs suivantes : MYSQL_ASSOC, MYSQL_NUM, et MYSQL_BOTH.Exemple :< ?php$enregistrement = mysql_fetch_object($result);

//Affiche le champ –prenom-echo $enregistrement->prenom ;//Affiche le champ –nom-echo $enregistrement->nom;//Affiche le champ –date-echo $enregistrement->date ;

?>

Page 62: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Utilisation de MySQL avec PhP Exploitation des requêtes int mysql_num_rows (int result)

Retourne le nombre d’enregistrements qui ont été retournés par la sélection.Exemple :< ?php

$requete = "SELECT * FROM membres" ;$result = mysql_query($requete);echo "il y a" .mysql_num_rows($result) ." membre(s)";while($enregistrement = mysql_fetch_array($result))

{echo $enregistrement["nom"]. " " . $enregistrement["prenom"] ;

} ?> 

Page 63: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Requête d’insertion

Utilisation de MySQL avec PhP Exploitation des requêtes

int mysql_insert_id (int link_identifier )

mysql_insert_id() retourne le dernier identifiant généré par un champs de type AUTO_INCREMENTED.

Exemple :Suite à une requête d’insertion, on veut afficher le numéro auto incrémenté :< ?phpecho "Votre numéro d’identifiant est : " .mysql_insert_id() ;?>

Page 64: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Requête de modification 

Utilisation de MySQL avec PhP Exploitation des requêtes

int mysql_affected_rows (int link_identifier ) Cette fonction permet de fixer le nombre de lignes insérées, mises à jour ou supprimées par la précédente requête SQL (INSERT, DELETE, REPLACE ou UPDATE) envoyée au serveur.

Exemple :Suite à une commande "UPDATE", on voudrait savoir combien de lignes ont été modifiées  :< ?echo mysql_affected_rows() ." eregistrement(s) modifiés";?>

Page 65: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Installation du serveur Web Apache avec PhP

On peut installer Apache de deux façons :

Automatiquement, en utilisant un utilitaire qui installe et configure automatiquement tout ce dont vous avez besoin.

Manuellement, en configurant les différents fichiers d’Apache et PhP

L’installation et la configuration d’Apache se fera sur 3 étapes.

Page 66: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Installation du serveur Web Apache avec PhP

1. Récupérer la dernière version d’Apache (Site officiel : www.apache.org, sous la rubrique : Apache for Win32)

2. Le programme apche.exe est un wizard d’installation.L'installation va vous demander un chemin d'installation : c:\Apache

3. Une fois l'installation terminée, il faut éditer le fichier httpd.conf (qui se trouve dans le répertoire c:\Apache\conf).

Au niveau de la section  "2 Main server configuration", procéder aux modifications suivantes :

Page 67: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

ServerName 127.0.0.1 //Pour faire un test en local

DocumentRoot "C:/Apache/htdocs"

//Le répertoire qui va contenir les documents de votre site web

<Directory "C:/Apache/htdocs "> Options All AllowOverride All  Allow from all</Directory>

Installation du serveur Web Apache avec PhP

DirectoryIndex index.php index.php3 index.html index.htm

Page 68: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Installation du serveur Web Apache avec PhP

Installation de PhP4

1. Récupérer la dernière version de PhP (php-4_X_X-win32.zip), du site web : www.php.net.

2. Décompresser l’archive PhP dans le réépertoire c:\php\

3. S’il existe un fichier nommé php.ini-dist, et pas de fichier php.ini, renoomer php.ini-dist par php.ini

4. Déplacer le fichier : php.ini sous le répertoire windows.

5. Editer le fichier php.ini et procéder aux modifications suivantes  au niveau de la section Paths and Directories :

Page 69: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Installation du serveur Web Apache avec PhP

Installation de PhP4 extensions_dir=c:\php //la variable extensions_dir détermine le dossier dans lequel//se trouvent les DLLinclude_path = .//include_path détermine les répertoires à ouvrir quand le script //recherche un fichier. La valeur par défaut est (.) ce qui signifie //répertoire courant.

6. Au niveau de la section Windows Exensions, décommenter la ligne des fichiers d’extension que l’on souhaite utiliser.Exemple :php_calendar.dll : Fonction de conversions calendairesphp_crypt.dll : Fonction de cryptage

Page 70: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Il faut maintenant configurer Apche pour qu’il puisse supporter PhP. Editer le fichier c:\Apache\conf\httpd.conf. Tout d'abord il faut définir les extensions des fichiers qui seront interprétés par l'analyseur PHP, avec la directive AddType.

AddType application/x-httpd-php .phpAddType application/x-httpd-php .php3AddType application/x-httpd-php .html

Installation du serveur Web Apache avec PhP

Installation de PhP4

Page 71: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Ensuite il faut indiquer à Apache le path de l’interpréteur PhP :

ScriptAlias /php/ c:/php/ Action application/x-httpd-php /php/php.exe

//lorsque Apache rencontre un fichier de type

//application/x-httpd-php, il demande donc à c:/php/php.exe

//de l'analyser.

7.Test de la configuration : Pour vérifier que PhP fonctionne correctement, on crée un fichier de script : test.php, dont on insére la ligne de code suivante :

<? phpinfo(); ?>

Page 72: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Installation du serveur Web Apache avec PhP

Installation de PhP4 Sauvegarder le fichier test.php sous le répertoire c:\Apache\htdocs, puis lancer ce fichier à l’aide du navigateur : http://localhost/test.php. On doit obtenir une page d'information sur la configuration de PHP :

Page 73: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Installation du serveur Web Apache avec PhP

Installation de l'interface phpMyAdmin

PhpMyAdmin est un ensemble de scripts PHP3 permettant de gérer des bases MySQL via une interface accessible par n'importe quel navigateur Web.

Page 74: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Installation du serveur Web Apache avec PhP

Installation de l'interface phpMyAdmin 1. Récupérer la dernière version de PhpMyAdmin (Site officiel : http://www.phpwizard.net/projects/phpMyAdmin/)

2. Décompresser le fichier dans un répertoire du serveur web (attention à conserver l'arborescence du fichier compressé !) Par exemple : /htdocs/phpmyadmin

3. Ouvrir le fichier config.inc.php3 dans votre éditeur favori et modifier les valeurs de l'hôte, de l'utilisateur, du mot de passe et de la langue pour adapter phpMyAdmin à votre environnement

Page 75: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Installation du serveur Web Apache avec PhP

Installation de l'interface phpMyAdmin

Au début du fichier :

$cfgServers[1]['host'] = 'localhost';$cfgServers[1]['user'] = 'utilisateur';$cfgServers[1]['password'] = 'mot de passe';

La ligne require("english.inc.php3"); définit la langue utilisée par l'interface de phpMyAdmin. Remplacer english par french (ou toute autre langue, à condition que le fichier langue.inc.php3 existe).

Page 76: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

4. Ouvrir le fichier : <http://localhost>/<rep-install-phpmyadmin>/index.php3 dans votre navigateur. phpMyAdmin doit afficher un écran de bienvenue.

Installation du serveur Web Apache avec PhP

Page 77: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Administration de MySQL Les droits d'accès sous MySQL

Dans MySQL, les privilèges d'accès sont stockés dans la base de données 'mysql'. Cette base est constituée de 5 tables (tables de permession) :

•La table useruser : recense tous les utilisateurs ayant accès à MySQL. Elle permet de définir les privilèges de l'utilisateur dans tout MySQL ;

•La table dbdb : permet de lier un utilisateur à une ou plusieurs base(s) ;

•La table hosthost : permet de lier un hôte à une base de données ;

•La table tables_priv :tables_priv : Niveau des privilèges des tables ;

•La table columns_priv :La table columns_priv : Niveau des privilèges des colonnes.

Page 78: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Administration de MySQL Les droits d'accès sous MySQL

•Comment le serveur contrôle l’accès client :Le contrôle se fait sur 2 étapes :

Lors de la connexion au serveuren examinant la table user ;

Pour chaque requête lancée, le serveur contrôle les tables de permession pour voir les priviléges sur la requête exécutée.

Page 79: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Administration de MySQL Les droits d'accès sous MySQL

Contrôle d’accès : étape 1Contrôle d’accès : étape 1

•La vérification de l'identité est faite en utilisant les trois champs d'identité de la table user (Host, User et Password).

•Les attributs suivants seront utilisés pour permettre le contrôle d’accès au serveur :

Host :Host : Serveur sur lequel mysql tourne (en principe localhost) ;User : User : Login de l'utilisateur ;Password :Password : Mot de passe (crypté) de l'utilisateur.

•Les valeurs de la table user peuvent être fournies avec les propriétés suivante :

Host peut être un nom d'hôte, ou une adresse IP ou 'localhost' pour indiquer la machine locale. On peut utiliser le caractère spécial '%‘

Page 80: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Administration de MySQL Les droits d'accès sous MySQL

Host qui vaut '%' accepte tous les hôtes. Host vide est équivalent à '%'. Notez que ces valeurs accepte n'importe quel hôte qui peut créer une connexion avec votre serveur !

Si un enregistrement de la table user a un champs User vide, cet utilisateur sera considéré comme anonyme (utilisateur sans nom) ;

Le champs Password peut être laissé vide. Cela nene signifie paspas que n'importe quel mot de passe sera accepté, mais que l'utilisateur doit se connecter SANSSANS mot de passe.

Page 81: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Administration de MySQL Les droits d'accès sous MySQL

Les privilèges de base de données et les tables :

Select_priv : Select_priv : SélectionInsert_priv : Insert_priv : InsertionUpdate_priv : Update_priv : Modification (de valeur)Delete_priv : Delete_priv : EffacementIndex_priv : Index_priv : IndexationAlter_priv : Alter_priv : Modification (de table ou de champ)Create_priv : Create_priv : CréationDrop_priv : Drop_priv : SuppressionGrant_priv : Grant_priv : PermissionReload_priv : Reload_priv : Relancer MySQLShutdown_priv : Shutdown_priv : Arrêter MySQLFile_priv : File_priv : Lecture et écriture de fichiers (import/export)

Page 82: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Administration de MySQL Les droits d'accès sous MySQL

Les privilèges de base de données et les tables :•Dans les tables user, db et host, chaque privilège est indiqué comme colonne séparée.

•Toutes ces colonnes sont déclarées avec un type ENUM (N / Y). La valeur par défaut pour chaque privilège est N.

Page 83: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Administration de MySQL Les types de données MySQL

TypeType DescriptionDescription

TINYINT Très petit entier. En signé de -128 à 127, en non signé de 0 à 255.

SMALLINT Petit entier. En signé de -32768 à 32767, en non signé de 0 à 65535.

MEDIUMINT Entier de taille moyenne. En signé de -8388608 à 8388607, en non signé de 0 à 16777215.

INT Entier de taille normale. En signé de -2147483648 à 2147483647, en non signé de 0 à 4294967295.

BIGINT Entier de grande taille. En signé de -9223372036854775808 à 9223372036854775807, en non signé de 0 à 18446744073709551615.

Page 84: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Administration de MySQL Les types de données MySQL

TypeType DescriptionDescription

FLOAT Nombre à virgule flottante. Toujours signé de -3.402823466E+38 à -1.175494351E-38.

DOUBLE Grand nombre à virgule flottante. Toujours signé de -1.7976931348623157E+308 à 2.2250738585072014E-308.

REAL Idem "DOUBLE".

DECIMAL Nombre à virgule flottante. Les nombres sont stockés dans la variable sous forme de chaîne de caractères.Toujours signé de -1.7976931348623157E+308 à 2.2250738585072014E-308.

NUMERIC Idem "DECIMAL".

Page 85: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Administration de MySQL Les types de données MySQL

TypeType DescriptionDescription

DATE Date sous la forme "AAAA-MM-JJ". De "1000-01-01" à "9999-12-31".

DATETIME Date et heure sous la forme "AAAA-MM-JJ HH:MM:SS". De "1000-01-01 00:00:00" à "9999-12-31 23:59:59".

TIMESTAMP Date et heure en secondes écoulées depuis le 1er Janvier 1970 (date UNIX) sous la forme "AAAAMMJJHHMMSS" ou "AAMMJJHHMMSS" ou "AAAAMMJJ" ou "AAMMJJ". De "1970-01-01 00:00:00" à "Un jour en 2037".

TIME Heure sous la forme "HH:MM:SS". De "-838:59:59" à "838:59:59".

YEAR Année sous la forme "AAAA". De "1901" à "2155".

Page 86: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Administration de MySQL Les types de données MySQL

TypeType DescriptionDescription

CHAR Chaîne de caractèresde taille fixe (des espaces sont rajoutés en fin de chaîne). De 1 à 255.

VARCHAR Chaîne de caractères de longueur variable (pas d'espaces rajoutés en fin de chîne). De 1 à 255.

TINYBLOB Chaîne de caractères. Sensible à la casse. Taille maximale : 255.

TINYTEXT Chaîne de caractères. Insensible à la casse. Taille maximale : 255.

BLOB Chaîne de caractères. Sensible à la casse. Taille maximale : 65535. (Binary Large OBject)

Page 87: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Administration de MySQL Les types de données MySQL

TypeType DescriptionDescription

TEXT Chaîne de caractères. Insensible à la casse. Taille maximale : 65535.

MEDIUMBLOB Chaîne de caractères. Sensible à la casse. Taille maximale : 16777215.

MEDIUM TEXT Chaîne de caractères. Insensible à la casse. Taille maximale : 16777215.

LONGBLOB Chaîne de caractères. Sensible à la casse. Taille maximale : 4294967295

LONGTEXT Chaîne de caractères. Insensible à la casse. Taille maximale : 4294967295.

ENUM Enumération. Un objet chaîne peut prendre une des valeurs contenue dans une liste de valeurs. Nombre maximum de valeurs distinctes : 65535.

SET Ensemble. Un objet chaîne peut prendre une ou plusieurs valeurs contenues dans une liste de valeurs. Nombre maximum de valeurs distinctes : 65535.

Page 88: Module7 Web dynamique PhP + MySQL AYARI Mejdi 2006

Administration de MySQL Les types de données MySQL

Comment déclarer une table contenant un champ de type énuméré ?Exemple :CREATE TABLE employee( id int(11), nom varchar(30), prenom varchar(30), grade enum('ouvrier','adminisrtrateur','directeur'))

Comment déclarer une table contenant un champ de type SET ?Exemple :CREATE TABLE employee( id int(11), nom varchar(30), prenom varchar(30), prime set(‘transport',‘risque',‘installation'))