450 likes | 793 Views
Le PHP. Plan du cours : Introduction Les types de données, les opérateurs, les instructions Les tableaux Les librairies (fonction include et require) Débugger un script PHP Passage de variables (post et get) Utilisation de la date Protéger une page
E N D
Le PHP • Plan du cours : • Introduction • Les types de données, les opérateurs, les instructions • Les tableaux • Les librairies (fonction include et require) • Débugger un script PHP • Passage de variables (post et get) • Utilisation de la date • Protéger une page • Travail sur les répertoires et les fichiers • 3 petites choses utiles "phpinfo(), header()" et Mail() • Accés aux base de données MySql
Introduction au PHP Il ne faut pas confondre PHP et JavaScript. PHP est un langage de script destiné à être exécuté par le serveur, alors que le JavaScript est chargé et exécuté dans le navigateur. PHP est comparable à l'ASP de Microsoft dans le sens où il s'exécutent tous les deux "côté serveur".
Introduction au PHP Le code PHP est placé directement dans le code source HTML, il est encadré par deux balises spéciales qui sont destinées à être reconnues par l'interprêteur PHP. Exemple : <HTML> <BODY> <SCRIPT LANGUAGE="php"> echo "Bonjour à tous<P>"; </SCRIPT> </BODY> </HTML> On utilise les balises <SCRIPT LANGUAGE="php"> et </SCRIPT>. On peut utiliser les tags sous leur forme courte (<? et ?>), mais cette possibilité n'est pas activée par défaut. Il vous faudra donc modifier le paramétrage de PHP sur votre machine.
Introduction au PHP Quand on affiche dans le navigateur le source HTML d'une page générée par PHP, on ne voit que le code HTML résultant (et éventuellement du code JavaScript transmis au navigateur). Si vous regardez le source de la page précédente dans votre navigateur, vous ne verrez que ça : <HTML> <BODY> <P>Bonjour à tous</P> </BODY> </HTML>
Le PHP : type de données • Les types de données données standard en PHP sont : • integer • double • string • array • object • PHP n'est pas un langage fortement typé. C'est PHP qui décide à l'exécution, en fonction de son contenu, quel type est sera le plus indiqué pour la variable. • Quand vous utilisez une variable, vous n'avez pas besoin de la déclarer au préalable.
Le PHP : Opérateurs Opérateurs arithmétiques $a + $b Addition Somme de $a et $b. $a - $b Soustraction Reste de la différence de $b et $a. $a * $b Multiplication Produit de $a par $b. $a / $b Division Dividende de $a par $b. $a % $b Modulo Reste de la division entiàre de $a par $b. Opérateurs sur les chaînes $a = "salut "; $b = $a . "à tous"; // maintenant $b contient "salut à tous"
Le PHP : Opérateurs Opérateurs Binaires Il s'agit des opérateurs binaires dits "bit à bit", et non pas des opérateurs logiques booléens. $a & $b Et Les bits qui sont à 1 dans $a ET dans $b sont mis à 1. $a | $b Ou Les bits qui sont à 1 dans $a OU dans $b sont mis à 1. ~ $a Non Les bits sont inversés. $a = 5; // 0000 0101 $b = 12; // 0000 1100 $c = $a & $b; // $c vaut donc 0000 0100 soit 4 $d = $a | $b; // $d vaut donc 0000 1101 soit 13 $e = ~ $a; // $e contient le complément de 5, soit 1111 1010 // (avec devant autant de 1 que vous voulez) ce qui vaut -6
Le PHP : Opérateurs Opérateurs Logiques Il existe deux versions des opérateurs logiques ET et OU, avec des précédences différentes. $a and $b Et Résultat vrai si $a ET $b sont vrais $a or $b Ou Résultat vrai si $a OU $b est vrai (ou les deux) $a xor $b Ou Exclusif Résultat vrai si $a OU $b est vrai, mais pas si les deux sont vrais ! $a Résultat vrai si $a est faux, et réciproquement $a && $b Et Résultat vrai si $a ET $b sont vrais $a || $b Ou Résultat vrai si $a OU $b est vrai (ou les deux) Opérateurs de Comparaison $a == $b Egal Résultat vrai si $a est égal à $b $a != $b Différent Résultat vrai si $a est différent de $b $a < $b Inférieur Résultat vrai si $a est strictement inférieur à $b $a > $b Supérieur Résultat vrai si $a est strictement supérieur à $b $a <= $b Inf ou égal Résultat vrai si $a est inférieur ou égal à $b $a >= $b Sup ou égal Résultat vrai si $a est supérieur ou égal à $b
Le PHP : Instructions • Instructions conditionnelles IF • if ($a > $b) print "a est supérieur à b"; // ne s'affichera que si $a est supérieur à $b • if (($a > 4) and ($b > 4)) print "a et b sont supérieurs à 4"; • // ne s'affiche que si $a et $b sont supérieurs à 4 • if ($a > $b) • { • print "a est supérieur à b"; // plusieurs instructions conditionnées • print "b est inférieur à a"; • }
Le PHP : Instructions • IF...ELSE • Le IF...ELSE permet de spécifier un ensemble d'instructions à effectuer aussi bien si la condition est vrai que si la condition est fausse. • if ($a > $b) { • print "a est supérieur à b"; • } else { • print "a n'est pas supérieur à b"; • } • IF...ELSE...ELSEIF • Le ELSEIF permet de mettre en cascade plusieurs conditions. Le ELSEIF en "un seul mot" peut être utilisé tout aussi bien que ELSE IF séparés par un espace. • if ($a > $b) • { • print "a supérieur à b"; • } • elseif ($a == $b) • { • print "a égal à b"; • } • else • { • print "a inférieur à b"; • }
Le PHP : Instructions switch Le switch permet de confronter une variable à plusieurs valeurs prédéfinies. Il permet un code plus compact et lisible qu'un test if-elseif-elseif... switch( [variable] ) { case [valeur1] : [bloc d'instructions] break; case [valeur2] : [bloc d'instructions] break; ... default: [bloc d'instructions] } La valeur de [variable] est comparé successivement à chaque case. Si il y a égalité, le bloc d'instruction est executé. Il ne faut pas omettre le break en fin de bloc, sans quoi le reste du switch est éxecuté. Enfin, le handler default permet de définir des instructions à effectuer par défaut, c'est à dire si aucun case n'a ``fonctionné''.
Le PHP : Instructions Boucles L'instruction break permet de sortir d'une boucle à tout moment. L'instruction continue permet de revenir au début de la boucle. for( $i=0; $i boucle while // parcours du tableau jusqu'au premier element vide $i=0; while( isset( $tablo[$i]) ) { echo "tablo[ $i ] = $tablo[$i] \n"; ... $i++; } boucle for for( [initialisations] ; [test sortie] ; [faire a chaque fois] ) // parcours complet du tablo for( $i=0; $i < sizeof($tablo); $i++ ) { echo "tablo($i)= $tablo[$i] \n"; } boucle do .. while La condition de sortie est située en fin de boucle. Ainsi la boucle est parcourue une fois au minimum. $fp= fopen( "monfichier.txt" ); do{ $ligne = fgets( $fp, 1024 ); ... } while( ! feof($fp) );
Le PHP : Les tableaux • Les tableaux - Array • Les tableaux sont importants en PHP. • les fonctions liées aux bases de données retournent plusieurs valeurs sous la forme de tableaux. Il est donc particulièrement intéressant de bien maitriser les tableaux en PHP. • Il existe deux types de tableaux. • Premier type : les tableaux "Classiques" dans lesquels on se déplace en utilisant l'indice de l'élément. Le premier élément porte l'indice zéro. • On peut remplir un tableau en adressant chaque élément un par un, ou d'un coup en fournissant toutes les valeurs : • exemple : • $tab[0] = "P"; • $tab[1] = "H"; • $tab[2] = "P"; • $tab[3] = "3"; • // Equivalent à • $tab = array("P","H","P","3");
Le PHP : Les tableaux • L'autre type de tableau concerne les tableaux associatifs. • Un tableau associatif est un tableau dont l'index est une chaîne de caractère au lieu d'un nombre. On parle aussi de ``hash array'' ou ``hash''. • Exemple d'un tableau contenant les quantités d'un produit vendu sur la semaine écoulée. Dans un tableau classique, il faut prendre une convention pour représenter chacun des septs jours de la semaine sous la forme d'un entier de 0 à 6. • Exemple : • // 0 -> Lundi, 6 -> Dimanche • $vente_hebdo[6] = 0; // Aucune vente le Dimanche • $vente_hebdo[2] = 1562 ; • Ceci ne rend pas le code très lisible, l'utilisation de tableaux associatifs change les choses : • $vente_hebdo["dimanche"] = 0; • $vente_hebdo["mardi"] = 1562 ; • Comme pour les tableaux classiques, on peut affecter plusieurs valeurs d'un coup : $vente_hebdo = array("lundi"=>1742,"mardi"=>1562,"mercredi"=>1920,"jeudi"=>1239, "vendredi"=>2012,"samedi"=>720) ;
Le PHP : Les tableaux • La lecture se ferra en utilisant les fonctions dédiées aux tableaux : each() et reset(). • Reprenons l'exemple précédent : • <? • $vente_hebdo = array("lundi"=>1742,"mardi"=>1562,"mercredi"=>1920,"jeudi"=>1239, • "vendredi"=>2012,"samedi"=>720) ; • $vente_totale = 0; • reset($vente_hebdo); • while (list($key, $value) = each($vente_hebdo)) { • echo "<BR> Vente de $key : $value unités\n"; • $vente_totale += $value; • } • echo "<BR>Vente sur la semaine : $vente_totale unités\n"; • ?> • Le résultat est le suivant : • Vente de lundi : 1742 unités • Vente de mardi : 1562 unités • Vente de mercredi : 1920 unités • Vente de jeudi : 1239 unités • Vente de vendredi : 2012 unités • Vente de samedi : 720 unités • Vente sur la semaine : 9195 unités
Le PHP : Les tableaux La lecture d'un tableau se ferra en utilisant les fonctions suivantes : sizeof : Renvoie le nombre d'éléments d'un tableau. équivalent de count $sz= sizeof( $tablo ); is_array : Renvoie true si la variable est de type tableau (ou tableau associatif), false sinon. reset : reset($tablo) place le pointeur interne sur le premier élément du tableau: Chaque variable tableau possède un pointeur interne repérant l'élément courant. End : end($tablo) place le pointeur interne du tableau sur le dernier élément du tableau. current : renvoie l'élément courant du tableau. next : déplace le pointeur vers l'élément suivant, et renvoie cet élément. renvoie false si il n'existe pas prev : déplace le pointeur vers l'élément précédent, et renvoie cet élément. renvoie false si il n'existe pas each : $a=each($tablo) renvoie l'index et la valeur courante dans un tableau à 2 éléments; $a[0] contient l'index, $a[1] la valeur. list : list( $scalar1, $scalr2, ... ) construit un tableau temporaire à partir des variables scalaires passées en argument. key : key($tablo) renvoie l'index de l'élément courant du tableau. sort, rsort : Différentes fonctions de tri de tableau. sort trie par valeurs croissantes, rsort par valeurs décroissantes $tablo_trie = sort( $tablo );
Le PHP : Les tableaux Exemple pour un tableau associatif : Déclaration $calories= array(); // comme un tableau Affectation Affectons un nombre de calories moyen aux fruits. $calories["pommes"]= 300; $calories["banane"]= 130;$calories["litchie"]= 30; Fonctions relatives isset Pour tester l'existence d'un élément, on utilise la fonction isset() if( isset( $calories["pommes"] ) ) {echo "une pomme contient ", $calories["pommes"] , " calories\n"; }else { echo "pas de calories definies pour la pomme\n"; }
Le PHP : Librairies • Les librairies sont des fichiers PHP traditionnels. • Leur extension est .inc par convention, mais rien n'empêche d'utiliser .php. On peut également inclure un fichier HTML ou d'autre type, cependant les éventuels tags PHP ne seront pas interprétés. • On inclus un fichier en utilisant include ou require. • Il existe une différence importante entre les deux : • Un fichier inclus par include est inclu dynamiquement, lors de l'execution du code. • Un fichier inclus par require est inclu avant l'interpétation du code. • On peut comprendre la différence sur l'exemple ci-dessous: • if( $user == "Administrateur" ) { include 'admin_fonctions.inc'; } if( $user == "Administrateur" ) { require 'admin_fonctions.inc'; } • Avec include, le résultat est celui escompté, tandis qu'avec require, le fichier 'admin_fonctions.inc' est inclu quelque soit le résultat du test if.
Le PHP : Debugger un script PHP • Utiliser une fonction de Debugging • Vous pouvez créer une fonction Dbg( $msg ) qui affiche un message conditionnel. En tete de fichier, definissez la variable $DEBUG à 1 ou 0 pour activer ou non ces messages. • $DEBUG = 1; // Mode debug activé function Dbg( $msg ) { if( $DEBUG ) echo $msg, "/n"; } Dbg( "ligne ", __LINE__ , " var vaut $var" ); • Obtenir l'environnement du script • La fonction phpinfo() affiche la configuration courante, les variables d'environnement, et plus. • Variables de configuration • La variable de configuration memory_limit permet de fixer la taille en octets utilisée par un processus PHP. • Si track_errors est actif, la variable globale $php_errormsg stocke le dernier message d'erreur apparu. • Si track_vars est actif, les variables CGI sont stockées dans les tableaux associatifs $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS suivant qu'elles proviennent d'un formulaire en méthode GET , POST , ou dans des cookies.
Le PHP : Passage de variable • Les méthodes GET et POSTExemple : on veut passer le nom et le prénom d'une personne à un programme pour l'afficher sur une page web ! • On utilise un formulaire HTML on passe les paramètres via un lien hypertexte. • On peut passer les paramètres de deux façons soit en méthode POST ou GET • avec la méthode GET vous verrez les paramètres 'passer' dans l'url • exemple :http://www.mondomaine.com/fichier.php3?nom=Martineau&prenom=jean-louis • avec la méthode POST c'est transparentLa méthode POST n'est pas limitée en taille, en GET la taille est limitée, donc des formulaires trop riches ne fonctionneront pas ! De plus si on imagine une application avec mot de passe, la méthode get est à prohiber car on verrait le mot de passe dans l'url !ex :http://www.mondomaine.com/fichier.php3?login=dupont&motdepasse=45gtPQ47
Le PHP : Passage de variable • Exemple d'un formulaire en POST ! • <html> • <form action=fichier.php method=post> • prenom : <input type=text name="prenom" value="jean"><br> • nom : <input type=text name="nom" value="lebon"><br> • <input type=submit value=Envoyer> • </form> • </html> • Programme PHP permettant d'afficher les valeurs postées par le formulaire : • <? • echo "prenom : $HTTP_POST_VARS[prenom]<br>"; • echo "nom : $HTTP_POST_VARS[nom]<br>"; • ?>
Le PHP : Passage de variable • Exemple d'un formulaire en GET ! • <html> • <form action=fichier.php method=get> • prenom : <input type=text name=value><br> • nom : <input type=text name=value><br> • <input type=submit value=Envoyer> • </form> • </html> • Programme PHP permettant d'afficher les valeurs postées par le formulaire : • <?php • echo "prenom : $HTTP_GET_VARS[prenom]<br>"; • echo "nom : $HTTP_GET_VARS[nom]<br>"; • ?> • Exemple avec un lien donc un programme php en GET ! • <html> • <a href="fichier.php?nom="Martineau"&prenom="jean-louis">texte du lien</a> • </html>
Le PHP : et la date • Comment afficher ou récupérer la date en PHP ? • la fonction à utiliser est date() Exemple :<?phpecho date("d m Y");?>affiche: 31 01 2000 Pour avoir le format que vous voulez, il suffit de mettre les bonnes options ! • Voici une liste des fonctions les plus utiles • d - jour du mois, 2 chiffres avec le 0 pour les jours <10; ex. "01" à "31"h - heure, fomat 12-heure, ex. "01" à "12"H - heure, format 24-heure, ex. "00" à "23"i - minutes; i.e. "00" à "59"m - mois; ex. "01" à "12"s - secondes; ex. "00" à "59"t - nombre de jour d'un mois données; ex. "28" à "31"w - jour de la semaine, numerique, i.e. "0" (Dimanche) à "6" (Samedi)Y - années, 4 chiffres; ex. "2000"y - années, 2 chiffres; ex. "00"z - jour de l'année; ex. "0" à "365"Il suffit ensuite de composer votre date et heure ! • Exemples : • date("d/m/Y H:i:s"); // cela donne 31/01/2000 15:30:15date("H:i"); //cela donne 15:30
Le PHP :Protéger une page par un mot de passe (1) • Ce petit programme montre comment protéger une page par un mot de passe. • Le principe est d'inclure un fichier formulaire de saisie si le mot de passe n'est pas bon (ou vide) et si le mot de passe est bon, on y met une page html avec les informations 'confidentielles' • Le fichier formulaire : password.html • <html><form method="post" action="password.php"><table align=center><tr><td>mot de passe</font></td><td><input type=password size=20 name=password></td></tr><tr><td colspan=2 align=center><input type=submit value=envoyer></td></tr></table></form></html> • Notez qu'il est important de mettre une méthode post et non get car en méthode get le mot de passe sera affiché dans la barre d'URL. • Le fichier protéger : secret.html • <html>Le code secret pour faire exploser la bombe nucléaire : <b>454EIG458</b></html>
Le PHP :Protéger une page par un mot de passe (1) • Enfin, Le fichier effectuant la vérification : password.php • <?if ($password=="test"){ include("secret.html");}else{ include("password.html");}?>
Le PHP :Protéger une page par un mot de passe (2) • On peut aussi utiliser les variables d'authentification HTTP avec PHP. • 1) écrire un petit programme comme celui-ci dans un répertoire (securite) et le nommer par exemple securita1.php. • <?if (!(($_SERVER['PHP_AUTH_USER']=="nom_utilisateur") and ($_SERVER['PHP_AUTH_PW']=="mot_de_passe"))) • { • Header("WWW-Authenticate: Basic realm=\"Acces restreint\""); • Header("HTTP/1.0 401 Unauthorized"); • echo "L'utilisateur \"$PHP_AUTH_USER\" avec"; • echo "le code \"$PHP_AUTH_PW\" ne sont pas valides\n<br>\n"; • echo "Vous devez vous authentifier ...\n<br>\n"; • exit; • } • ?> • 2) dans la page html a protéger mettre dans au tout début l'exemple suivant. • <?require "secure/securita1.php"; • ?> • <html> • <head>... • </head> • <body>…..
Le PHP :Lire un fichier texte sur le serveur • il faut : • Définir le fichier qui nous intéresse • <? $Fnm = "mon_dossier/mon_fichier.ext"; ?> • Vérifier que ce fichier existe bien • <? if (file_exists($Fnm)) { ?> • Soit lire tout le fichier d'un coup dans un tableau, puis afficher ce tableau • <? $tableau = file($Fnm); ?><? while(list($cle,$val) = each($tableau)) {echo $val."<br>";} ?> Soit ouvrir le fichier et lire <? $inF = fopen($Fnm,"r"); ?> - lire quelques caractères avec <? echo fgets($inF, 4096); ?> - lire tout le fichier jusqu'à la fin avec <? while (!feof($inF)) { echo fgets($inF, 4096)."<br>"; } ?> Enfin fermer le fichier <? fclose($inF); ?>
Le PHP :Ecrire dans un fichier texte sur le serveur • En PHP, il faut s'assurer que les droits en écriture ont été donnés au dossier (chmod ou via le logiciel FTP), Ensuite :Définir le fichier qui nous intéresse • <? $Fnm = "mon_dossier/mon_fichier.ext"); ?> • Ouvrir le fichier • en mode "mixte" (lecture et écriture) • <? $inF = fopen($Fnm,"r+"); ?> en mode écriture (créé si inexistant ) <? $inF = fopen($Fnm,"w"); ?> • en mode "append" (créé si inexistant ) • <? $inF = fopen($Fnm,"a"); ?> • Ensuite écrire • <? fwrite($inF,$texte);// oufputs($inF,$texte); ?> • pour passer à la ligne, écrire \n • <? fputs($inF,$texte."\n"); ?> • Enfin fermer le fichier • <? fclose($inF); ?>
Le PHP :Ecrire dans un fichier texte sur le serveur • On peut avoir besoin de positionner le pointeur de ligne dans un fichier, pour cela on dispose de deux outils : • la recherche de l'emplacement du pointeur. • <? $pointeur = ftell($inF) ; ?> • la modification de son emplacement. • <? $pointeur = fseek($inF,$pointeur+5); ?>
Le PHP :créer, modifier, effacer fichiers et répertoires • Définir le fichier qui nous intéresse • <? $Fnm = "rep_1/fichier_1.ext"); ?> • Puis copier le fichier • <? copy($Fnm,"rep_2/fichier_2.ext"); ?> • ou le renommer/déplacer • <? rename($Fnm,"rep_2/fichier_2.ext"); ?> • ou le détruire • <? unlink($Fnm); ?> • Pour créer un dossier • <? mkdir("rep_1", 0700); ?> • Pour le renommer ou le copier, utiliser les mêmes fonctions copy et rename que pour les fichiers Pour détruire un dossier vide • <? rmdir("rep_1"); ?>
Le PHP :Lire les fichiers d'un répertoire • 1) Obtenir un pointeur vers le dossier qui nous intéresse • <? $rep = "mon_dossier/";$dir = opendir($rep); ?> • 2) lire ce dossier en choisissant l'exploration des dossiers (is_dir) ou des fichiers (is_file) • <? function dd($date) {return date("d/m/Y H:i:s",$date);}while ($f = readdir($dir)) {if(is_file($rep.$f)) {echo "<li>Nom : ".$f;echo "<li>Taille : ".filesize($rep.$f)." octets";echo "<li>Création : ".dd(filectime($rep.$f));echo "<li>Modification : ".dd(filemtime($rep.$f));echo "<li>Dernier accès : ".dd(fileatime($rep.$f));echo "<br><br>";}} ?> • 3) enfin fermer le dossier • <? closedir($dir); ?>
Le PHP :3 petites choses utiles • 1) La fonction PHPINFO() • <? Phpinfo(); ?> vous donnera toutes les informations a savoir sur le serveur qui vous accueille • 2) la fonction HEADER • Cette fonction permet de spécifier un entête HTTP à l'envoi de fichier HTML. Elle dispose de 2 entêtes spéciaux : • a) location: qui permet de rediriger un programme php vers une page html ou un autre programme php. • Exemple : <? Header("location:http://www.wanadoo.fr"); ?> //redirige vers la page accueil de wanadoo. • b) Ce sont tous les entêtes qui commencent par HTTP/ ou pour forcer la désactivation du cache.Exemple : • <? header("Expires: Mon, 26 jul 1997 05:00:00 GMT"); // date du passéheader("Last-Modified: " . Gmdade(D, d M Y H:i:s" . " GMT"); // toujours modifiéheader("Cache-Control: no-cache, must-revalidate"); //HTTP/1.1header("Pragma:no-cache"); //HTTP/1.0?> • ATTENTION ! Il ne doit pas y avoir d'envoi de HTML avant le "header" On ne peut pas le mettre a l'intérieur d'une page qui a commencé son affichage sur le client.
Le PHP :3 petites choses utiles • Envoi de courrier électronique (mail) • mail (string to, string subject, string message, string additional_headers ) • mail() poste le message message à destination de to. Les destinataires multiples sont séparés par des virgules. • <?php • mail("jeanlouis.martineau@free.fr", "Mon Sujet", "Ligne 1\nLigne 2\nLigne 3"); • ?> • Il est possible d'utiliser des techniques de concaténations de chaînes pour construire des messages complexes : • <?php • /* destinataire */ • $recipient = "Mary <mary@u.college.edu>".", " ; //remarquez les virgules • $recipient .= "ronabop@php.net"; • /* sujet */ • $subject = "Rappel des anniversaires du mois d'aout"; • /* message */ • $message = "Le mail suivant inclus une table au format ASCII\n"; • $message .= "Jour \t\tMois \t\tAn\n"; • $message .= "3 \t\tAou \t\t1970\n"; • $message .= "17\t\tAou \t\t1973\n"; • /* Vous pouvez ajouter une signature */ • $message .= "--\r\n"; //Délimiteur de signature • $message .= "Rappel d'anniversaire : copyleft par public domain"; • /* d'autres entêtes : errors, From, etc */ • $headers = "From: Rappel d'anniversaire <birthday@php.net>\n"; • $headers .= "Return-Path: <birthday@php.net>\n"; // chemin de retour pour les erreurs • /* et hop, à la poste */ • mail($recipient, $subject, $message, $headers); • ?> Envoi de mail complexe ------>
Le PHP : utiliser une base de données MySQL • Comment utiliser une base de données MySQL et PHP en se basant sur un exemple : • un annuaire de personnes composé d'un : • identifiant : chaîne de caractères de 10 caractères maximum, un identifiant est uniquenom : chaîne de caractères de 100 caractères maximumprenom : chaîne de caractères de 100 caractères maximumage : entier dateajout : une date • Schéma de la table :(en SQL) (a faire avec PhpMyAdmin) • create table annuaire (identifiant varchar(10) not null,nom varchar(100),prenom varchar(100),age int(3),dateajout date,primary key(identifiant));
Le PHP : utiliser une base de données MySQL • Tout d'abord, vous devez vous connecter à la base de données. • Il y a 4 paramètres l'adresse du serveur où la base de données (BDD) est hébergée, le nom de l'utilisateur, le mot de passe et le nom de la base de données à utiliser. • $dbhost = "localhost"; //si l'ordinateur qui héberge la BDD est le même que le serveur HTTP$user = "nom";$password = "motdepasse";$usebdd = "nomdelabdd"; • La fonction php vous permettant de vous connecter est mysql_connect • (toutes les fonctions php/mysql commencent par mysql).$connexion = mysql_connect("$dbhost","$user","$password"); • Pour vérifier si la connexion est valide : • if (!$connexion) {echo "Impossible d'effectuer la connexion";exit;}
Le PHP : utiliser une base de données MySQL • Ensuite, vous devez sélectionner la base sur laquelle vous voulez travailler ! • $db = mysql_select_db("$usebdd", $connexion); • Pour vérifier si la base de données est bien sélectionnée • if (!$db) {echo "Impossible de sélectionner cette base de données";exit;}
Le PHP : utiliser une base de données MySQL • Comment insérer des données en rajoutant une ligne dans la table annuaire (sfim,airey,romuald,23) • Voici la commande SQL le permettant • insert into annuaire values ('sfim','airey','romuald',23,curdate()); • Il suffit ensuite d'utiliser la commande mysql_query, ce qui donne : • $resultat_sql = mysql_query("insert into annuaire values ('sfim','airey','romuald',23,curdate())",$connexion);nb: il ne faut pas mettre le ; courant en SQL • Pour complèter la table on répète l'opération : • insert into annuaire values ('sfim','airey','romuald',23,curdate());insert into annuaire values ('orawat','rawat','olivier',24,curdate());insert into annuaire values ('dmarc','dupuis','marc',32,curdate());insert into annuaire values ('adupont','dupont','antoine',22,curdate()); • Comment faire pour supprimer une ligne ? la commande sql serait : • delete from annuaire where identifiant= 'dmarc'; • De même on utilise la commande mysql_query • $resultat_sql = mysql_query("delete from annuaire where identifiant= 'dmarc'",$connexion);
Le PHP : utiliser une base de données MySQL • comment récupère-t-on les données ? la table contient : • sfim,airey,romuald,23,2000-01-15orawat,rawat,olivier,24,2000-01-15dmarc,dupuis,marc,32,2000-01-15adupont,dupont,antoine,22,2000-01-15 • Par exemple, je veux sélectionner le nom, le prénom et l'âge des personnes dans l'annuaire de moins de 30 ans et les ranger par âge décroissant : • voici la commande SQL : • select nom,prenom,age from annuaire where age < 30 order by age desc; • De même que pour l'insertion et la suppression j'utilise la commande mysql_query • $resultat_sql = mysql_query("select nom,prenom,age from annuaire where age < 30 order by age desc ",$connexion); • Le résultat de cette commande est retourné dans $resultat_sql, il faut l'imaginer comme une table qui serait ainsi : • ligne nom prenom age0 dupont antoine 221 airey romuald 232 dupuis marc 24
Le PHP : utiliser une base de données MySQL • La première chose à savoir est : Combien ai-je de lignes de réponse ? • $nombreligne = mysql_num_rows($resultat_sql);Ici j'en aurai 3 • Il ne reste plus qu'à prendre le résultat, si je veux la ligne 1, colonne nom je dis • $nom = mysql_result($resultat_sql,1,"nom");J'obtiens airey • Je veux afficher le résultat de la requête ! Rien de plus simple avec une boucle while • $i = 0;while ($i<$nombreligne){$nom = mysql_result($resultat_sql,$i,"nom");$prenom = mysql_result($resultat_sql,$i,"prenom");$age = mysql_result($resultat_sql,$i,"age");echo "$nom $prenom $age";$i++;}