php
Différences
Ci-dessous, les différences entre deux révisions de la page.
— | php [2021/09/12 09:58] (Version actuelle) – créée - modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== PHP ====== | ||
+ | ===== Présentation ===== | ||
+ | Parmi les nombreux langages qui permettent de construire des pages web dynamiquement en fonction d’un contexte et des demandes de l’utilisateur, | ||
+ | Il ne s’agit pas de présenter ici toutes les options du langage, des sites et livres le font de manière exhaustive, mais de décrire les grands principes de ce langage et les utilisations les plus courantes pour gérer : | ||
+ | * L’intégration de PHP avec le HTML | ||
+ | * La récupération de données depuis un formulaire | ||
+ | * La relation avec une base de données | ||
+ | * La gestion des informations tout au long de la navigation de l’utilisateur grâce aux variables de session | ||
+ | * La réutilisation de code à plusieurs endroits (plusieurs pages ou plusieurs endroits dans une page) | ||
+ | |||
+ | ===== I Quelques principes ===== | ||
+ | __Exécution du PHP__ | ||
+ | |||
+ | Comme tout langage de script, la partie PHP est traitée uniquement du côté serveur, et l’utilisateur final ne reçoit que le résultat au format HTML du traitement de ce code. | ||
+ | |||
+ | __Syntaxe__ | ||
+ | |||
+ | PHP est un langage assez permissif : les variables n’ont pas besoin d’être déclarées, | ||
+ | |||
+ | __Erreurs__ | ||
+ | |||
+ | Les messages d’erreur générés par le serveur d’exécution de PHP sont relativement explicites. Cependant, il peut parfois pointer sur une ligne qui n’est pas la bonne du fait de l’oubli d’un ; ou une mauvaise fermeture d’accolade ou de guillemet. L’utilisation d’un éditeur à colorisation syntaxique permet de limiter ce genre d’oubli. | ||
+ | |||
+ | __Débogage__ | ||
+ | |||
+ | Quelques environnements d’exécution permettent de tester et de dépanner du code PHP grâce à une exécution pas à pas, la pose d’espions (affichage du contenu d’une variable en cours d’exécution) ou de points d’arrêt (l’exécution s’arrête sur une ligne indiquée et permet le suivi pas à pas) : ZendStudio est un exemple d’outil offrant ces possibilités, | ||
+ | |||
+ | Pour les producteurs de code « à la main », le débogage (recherche de la cause d’une exécution erronée) passe par des affichages (commande echo pour un champ, var_dump pour une objet structuré) du contenu des informations ou de messages pour vérifier le passage à l’intérieur d’une boucle par exemple. | ||
+ | |||
+ | __Version__ | ||
+ | |||
+ | Les versions de PHP sont mises à jour régulièrement. Elles rendent obsolètes certaines commandes (qui restent utilisables mais non conseillées : par exemple, les commandes **// | ||
+ | |||
+ | On peut connaître la version de PHP installée sur une machine avec la commande : | ||
+ | <code lscript> | ||
+ | |||
+ | ===== II L’intégration de PHP avec le HTML ===== | ||
+ | Il est possible de créer des pages utilisant uniquement du PHP (pour vérifier la validité d’informations, | ||
+ | |||
+ | Dès lors, le PHP va déterminer quelle partie du HTML sera renvoyée à l’utilisateur final, et permettra de renseigner certains éléments en puisant depuis une base de données ou en réutilisant les données fournies plusieurs pages auparavant grâce aux variables de session. | ||
+ | |||
+ | Il y a deux approches pour réaliser l’intégration des deux langages : par le PHP seul ou en combinant HTML et PHP au moment où on en a besoin. | ||
+ | |||
+ | === PHP seul === | ||
+ | |||
+ | La page PHP sera intégralement constituée par du code compris entre <?php et ?> | ||
+ | |||
+ | Tout élément qui doit être renvoyé vers l’utilisateur (donc au format HTML) devra être affiché par le biais de la commande echo. | ||
+ | |||
+ | L’avantage de cette solution est de ne pas avoir à gérer les ouverture et fermeture de <?php et ?>. L’inconvénient est la difficulté à distinguer ce qui est véritablement du code à exécuter côté serveur des éléments renvoyés vers l’utilisateur qui se trouvent noyés dans les parenthèses. | ||
+ | |||
+ | __Illustration__ | ||
+ | <code php> | ||
+ | <?php | ||
+ | echo("< | ||
+ | echo("< | ||
+ | echo(" | ||
+ | echo("< | ||
+ | echo(date(" | ||
+ | echo("</ | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | === HTML et PHP === | ||
+ | On peut aussi choisir de ne mettre que les éléments PHP entre <?php et ?> et laisser le reste directement en HTML, évitant au serveur d’exécuter les lignes correspondantes. | ||
+ | La difficulté de cette solution est de distinguer exactement les éléments imbriqués, de déterminer les éléments nécessitant un traitement et ceux pouvant se contenter d’un simple affichage (en particulier dans le cadre des tableaux, listes et autres objets complexes). | ||
+ | |||
+ | __Illustration__ | ||
+ | <code php>< | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== III La récupération de données depuis un formulaire ===== | ||
+ | Un des intérêts principaux des <wrap em> | ||
+ | |||
+ | === Principe === | ||
+ | Une page consultée par un utilisateur lui présente un certain nombre de zones de saisies (voir [[html|HTML]]), | ||
+ | |||
+ | Lorsque l’utilisateur clique sur le bouton **// | ||
+ | Dans les deux cas, les informations du formulaire envoyées sont transmises <wrap em> en clair </ | ||
+ | </ | ||
+ | |||
+ | * **POST** : les données sont transmises au serveur sans s' | ||
+ | * **GET** : les données transmises sont lisibles dans la barre de navigation après l’adresse de la page. Exemple : http:// | ||
+ | |||
+ | |||
+ | |||
+ | Il ne restera plus qu’à effectuer le traitement attendu. | ||
+ | |||
+ | === HTML : Formulaire === | ||
+ | Un formulaire HTML est un ensemble de zones comprises à l’intérieur de la balise < | ||
+ | Chaque zone a un type (checkbox, text, submit, select, etc). Elle possède un nom (option name) qui est l’information par laquelle on pourra l’appeler dans la page PHP et une valeur (information saisie ou option value). Elle peut aussi posséder un id qui permet de la traiter au sein de la page elle-même par un script côté client. | ||
+ | Le bouton de type submit est celui qui réalise l’opération contenue dans l’option action. | ||
+ | |||
+ | __Illustration__ | ||
+ | <code html> | ||
+ | <form name=" | ||
+ | Votre nom <input type=" | ||
+ | Votre prénom <input type=" | ||
+ | Votre date de naissance <input type=" | ||
+ | <select name=" | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | <input type=" | ||
+ | <input type=" | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | === PHP Version simple : données connues === | ||
+ | Si l’on souhaite récupérer les informations d’un formulaire dont on connaît exactement le nombre de données qu’il renvoie et leur nom, il suffit d’interroger les données transférées. La page trait.php pourrait alors être la suivante. | ||
+ | |||
+ | __Illustration__ | ||
+ | <code php> | ||
+ | <?php | ||
+ | $leNom=$_POST[' | ||
+ | $lePrenom=$_POST[' | ||
+ | $dateNaiss=$_POST[' | ||
+ | $leSexe=$_POST[' | ||
+ | echo(" | ||
+ | if ($leSexe==" | ||
+ | {echo(" | ||
+ | else | ||
+ | {echo(" | ||
+ | echo($lePrenom." | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | === PHP Version complexe : nombre de données inconnu === | ||
+ | Dans le cas où le nombre d’informations transmises ou que les noms des zones du formulaire ne sont pas connus a priori, on va devoir récupérer les informations en parcourant le tableau des informations renvoyées. La page pourrait alors être la suivante | ||
+ | |||
+ | __Illustration__ | ||
+ | <code php> | ||
+ | <? | ||
+ | foreach( $_POST as $Nom => $Valeur) { | ||
+ | echo(" | ||
+ | } | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | ===== IV La relation avec une base de données ===== | ||
+ | En tant que langage côté serveur, PHP autorise l’interaction avec une base de données. PHP a la particularité d’être étroitement lié avec le SGBD MySQL et de proposer directement les outils de dialogue avec cette base particulière. Toutefois, pour interagir avec tout type de base, on pourra aussi passer par une source ODBC (Open DataBase Connectivity) dont la mise en œuvre est décrite en fin de document. | ||
+ | |||
+ | === Principes === | ||
+ | Dans les deux cas, on procèdera selon les trois étapes suivantes pour dialoguer avec le SGBD : | ||
+ | 1. Etablissement de la connexion | ||
+ | 2. Actions sur la base | ||
+ | 3. Fermeture de la connexion | ||
+ | |||
+ | On gèrera les erreurs en ajoutant l’instruction or die(" | ||
+ | |||
+ | === Connexion === | ||
+ | La connexion à une base renvoie un pointeur qui servira par la suite à indiquer sur quelle connexion s’effectue l’échange. La particularité de MySQL est de nécessiter d’indiquer le nom de la base au sein du SGBD (ce qui est fait par la source ODBC dans l’autre cas). | ||
+ | |||
+ | __MySQL__ | ||
+ | <code php>$cnx = mysqli_connect(" | ||
+ | mysqli_select_db(" | ||
+ | |||
+ | __ODBC__ | ||
+ | <code php>$cnx = odbc_connect(" | ||
+ | |||
+ | === Interrogation === | ||
+ | Pour interroger une base de données, on doit lui fournir la requête à exécuter (un SELECT), qui retourne un curseur ou resultset qu’il faudra ensuite parcourir. | ||
+ | |||
+ | En PHP, on procèdera à l’interrogation grâce à : | ||
+ | * Le texte de la requête (qu’il est préférable de renseigner dans une variable chaîne pour la lisibilité) | ||
+ | * Le pointeur résultant de l’exécution de la requête | ||
+ | * Le curseur de parcours du résultat. | ||
+ | |||
+ | __MySQL__ | ||
+ | <code php> | ||
+ | // chaine de caractère pour requête SQL | ||
+ | $reqProduits=" | ||
+ | // | ||
+ | $resLesProd=mysqli_query($reqProduits) or die (" | ||
+ | //variable curseur pour le parcours de la table des produits. Tant qu’il est possible de progresser dans ce curseur | ||
+ | while ($cursLesProd=mysqli_fetch_array($resLesProd)) { | ||
+ | echo("< | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | __ODBC__ | ||
+ | <code php> | ||
+ | // chaine de caractère pour requête SQL | ||
+ | $reqProduits=" | ||
+ | // | ||
+ | $resLesProd=odbc_exec($cnx, | ||
+ | //variable curseur pour le parcours de la table des produits. Il n’y a pas de variable résultat | ||
+ | while ($cursLesProd=odbc_fetch_array($resLesProd)) { | ||
+ | echo("< | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | === Requête exécution (insertion, suppression, | ||
+ | A la différence de la manipulation précédente, | ||
+ | |||
+ | __MySQL__ | ||
+ | <code php>// chaîne de caractère pour requête SQL | ||
+ | $reqProduits=" | ||
+ | // | ||
+ | $execLesProd=mysqli_query($reqProduits) or die (" | ||
+ | </ | ||
+ | |||
+ | __ODBC__ | ||
+ | <code php>// chaîne de caractère pour requête SQL | ||
+ | $reqProduits=" | ||
+ | $execLesProd=odbc_exec($cnx, | ||
+ | </ | ||
+ | |||
+ | === Déconnexion === | ||
+ | Dans les deux cas, la déconnexion de la base est une nécessité. En effet, l’ouverture d’une connexion monopolise des ressources sur le serveur (mémoire, nombre d’accès simultané à la base), et il faut les libérer pour ne pas le saturer ou empêcher d’autres interrogations. | ||
+ | |||
+ | La syntaxe est identique dans les deux cas : | ||
+ | <code php> | ||
+ | </ | ||
+ | |||
+ | === Comparaison MySQL et ODBC === | ||
+ | On voit que la syntaxe diffère très peu entre les deux manipulations. | ||
+ | * L’avantage de MySQL est son lien étroit et direct avec le langage PHP (les deux ont été conçus en parallèle). On peut donc supposer que l’interpréteur PHP est optimisé pour interroger une base PHP. D’ailleurs, | ||
+ | * ODBC (ou d’autres technologies équivalentes) offre un avantage de compatibilité et d’universalité (y compris vers une base MySQL). Cependant, en ajoutant un intermédiaire, | ||
+ | |||
+ | ===== V La gestion des informations tout au long de la navigation : variables de session ===== | ||
+ | Avec les formulaires HTML, il est possible de récupérer côté serveur un ensemble d’information fournies du côté du poste client. | ||
+ | |||
+ | Pour pouvoir conserver des informations au delà de cette page de récupération, | ||
+ | On utilise alors la technique des variables de session qui sont initialisées dans le code PHP et conservées tant que le même utilisateur continue d’interagir avec le serveur (tant que cet utilisateur garde sa session ouverte). | ||
+ | |||
+ | === Démarche === | ||
+ | Avant toute manipulation d’une variable de session dans une page (en lecture comme en écriture), on devra utiliser la commande | ||
+ | <code php> | ||
+ | |||
+ | Les variables de session sont définies dans l’objet $_SESSION | ||
+ | <code php> | ||
+ | $_SESSION[' | ||
+ | </ | ||
+ | |||
+ | Pour savoir si une variable de session existe, on la testera ainsi : | ||
+ | <code php>if (isset($_SESSION[' | ||
+ | |||
+ | === Illustration === | ||
+ | Formulaire Page qui récupère les données et les met en session | ||
+ | |||
+ | |||
+ | |||
+ | ===== VI La réutilisation de code : fonctions et include | ||
+ | Dans tout programme, on cherche à optimiser le code en factorisant les éléments récurrents, | ||
+ | |||
+ | ==== Fonctions ==== | ||
+ | En programmation, | ||
+ | En PHP, seule la dénomination de fonction existe. Une procédure sera alors une fonction qui ne retourne pas de valeur. | ||
+ | |||
+ | __Illustration__ | ||
+ | <code php>// | ||
+ | function plusGrand($p1, | ||
+ | if ($p1> | ||
+ | else | ||
+ | return $result ; | ||
+ | } | ||
+ | // | ||
+ | function affTabloListe($ptablo ,$pNbCases) { | ||
+ | echo("< | ||
+ | for ($cpt=1 ; | ||
+ | echo("< | ||
+ | } | ||
+ | echo("</ | ||
+ | } | ||
+ | // | ||
+ | $tabUtil[1]=" | ||
+ | $tabUtil[2]=" | ||
+ | $tabUtil[3]=" | ||
+ | $tabUtil[4]=" | ||
+ | $tabUtil[5]=" | ||
+ | //appel de la procédure | ||
+ | affTabloListe($tabUtil, | ||
+ | // | ||
+ | $valeur=$_POST[‘NombreSaisi’] ; | ||
+ | $nombre=rand(1, | ||
+ | // | ||
+ | if (plusGrand($valeur, | ||
+ | echo(" | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Les fonctions sont donc un moyen pratique de factoriser le code pour pouvoir le réutiliser en lui fournissant en paramètre effectif les informations propres au contexte d’exécution. | ||
+ | |||
+ | ==== Include ==== | ||
+ | Pour éviter de réécrire une portion de code dans plusieurs pages, on peut l’extraire dans une page indépendante à laquelle on fera appel par le biais de la commande include. | ||
+ | Le serveur prendra alors la page appelante, y ajoutera le contenu de la page incluse, puis exécutera l’ensemble comme s’il s’était agi d’une page unique. | ||
+ | |||
+ | Cette technique permet notamment de constituer une bibliothèque de fonctions (par exemple la gestion des échanges avec une base de données, depuis la connexion jusqu’à la fermeture en passant par l’interrogation) à laquelle on fera appel à tout instant. | ||
+ | |||
+ | __Illustration__ | ||
+ | |||
+ | Fichier de fonction (biblioFct.php) | ||
+ | <code php> | ||
+ | <?php | ||
+ | // retourne le plus grand des deux paramètres | ||
+ | | ||
+ | if ($p1> | ||
+ | else | ||
+ | return $result ; | ||
+ | } | ||
+ | // affiche le contenu d’un tableau en liste à puce | ||
+ | | ||
+ | echo("< | ||
+ | for ($cpt=1 ; | ||
+ | echo("< | ||
+ | } | ||
+ | echo("</ | ||
+ | } | ||
+ | ?> | ||
+ | |||
+ | Fichier utilisateur de la bibliothèque | ||
+ | <code php> | ||
+ | <? | ||
+ | //demande l’incorporation de la bibliothèque | ||
+ | include(" | ||
+ | //autre code | ||
+ | $tabUtil[1]=" | ||
+ | $tabUtil[2]=" | ||
+ | $tabUtil[3]=" | ||
+ | $tabUtil[4]=" | ||
+ | $tabUtil[5]=" | ||
+ | //appel de la procédure | ||
+ | affTabloListe($tabUtil, | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | ===== VII Connexion à un annuaire ===== | ||
+ | PHP autorise la connexion avec un annuaire via la bibliothèque **// | ||
+ | |||
+ | ==== Installation ==== | ||
+ | Pour cela, il faut installer le module correspondant : < | ||
+ | |||
+ | On active ensuite le module pour Apache que l'on redémarre ensuite : < | ||
+ | systemctl restart apache2</ | ||
+ | |||
+ | ==== Code PHP pour LDAP ==== | ||
+ | La connexion passe par deux étapes : | ||
+ | - connexion à l' | ||
+ | - interrogation de la base d' | ||
+ | |||
+ | Cela donne par exemple : | ||
+ | <code php> | ||
+ | <?php | ||
+ | // Fichier de configuration pour l' | ||
+ | // | ||
+ | | ||
+ | $port = " | ||
+ | | ||
+ | | ||
+ | | ||
+ | echo " | ||
+ | // | ||
+ | | ||
+ | //si la connexion a réussi | ||
+ | if ($ds) | ||
+ | { // on s' | ||
+ | | ||
+ | if ($r){ //si les informations sont correctes, $r vaut ' | ||
+ | // Ici les opérations à effectuer | ||
+ | } | ||
+ | echo " | ||
+ | | ||
+ | } | ||
+ | else { | ||
+ | | ||
+ | } | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Éléments du langage PHP ===== | ||
+ | Voici quelques éléments du langage. On trouvera de nombreux sites de référence présentant tous les détails du langage, des scripts prêts à l’emploi, des tutoriaux complets. Notamment : | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | ==== Syntaxe de base ==== | ||
+ | Pour écrire du PHP, il faut respecter quelques principes : | ||
+ | * Tout code PHP est compris entre <?php et ?> | ||
+ | * Toute ligne de code est terminée par un ; | ||
+ | * PHP est sensible à la casse (majuscule et minuscule) | ||
+ | * Les commentaires s’écrivent derrière deux '/' | ||
+ | * Toute variable commence par un $ | ||
+ | * Les variables ne doivent pas être déclarées, | ||
+ | * Les tableaux sont notés avec des crochets : $tablo[] ou $tablo[' | ||
+ | * Les conditions (dans un si ou une boucle) s’écrivent entre parenthèses : if (condition) … | ||
+ | * Une portion de code dépendante (qui concerne un si ou une boucle) s’écrit entre accolades : if (condition) {…} | ||
+ | * La concaténation de chaînes de caractères (mise bout à bout) se fait par le caractère « . » | ||
+ | * La comparaison d’égalité utilise = = | ||
+ | * La négation s’écrit ! ( != ... !(condition)) | ||
+ | * L’affichage d’informations sur le fichier de sortie se fait par la commande echo | ||
+ | |||
+ | === Astuces === | ||
+ | * L’incrémentation (ajout de 1 à une valeur numérique) s’écrit ++ (exemple $i++) | ||
+ | * On peut combiner l’affectation ( = ) avec une autre opération (concaténation, | ||
+ | |||
+ | Exemple : plutôt que d’écrire $texte=$texte." | ||
+ | |||
+ | ==== Conditions ==== | ||
+ | Les conditions utilisent les éléments de comparaison et de logique suivant : | ||
+ | * = = : retourne vrai en cas d’égalité entre deux éléments | ||
+ | * != : retroune vrai si les deux éléments sont différents | ||
+ | * >, >= : comparaison de supériorité | ||
+ | * <, <= : comparaison d’infériorité | ||
+ | * AND ou && : conjonction de conditions (condition1 && condition2) | ||
+ | * OR ou || : disjonction de conditions (condition1 OR condition2) | ||
+ | * !(condition) : test l’inverse de la condition ( ! est le caractère de négation) | ||
+ | |||
+ | ==== Structures de contrôle ==== | ||
+ | Les principales opérations de contrôle (alternatives, | ||
+ | ^ ^ Syntaxe | ||
+ | |Alternative |if (condition) \\ {code_du_alors} \\ [elseif (condtion2) {code_deuxième_condition ;}] \\ [else {code_du_sinon)] | <code php>if ($age< | ||
+ | | ||
+ | | ||
+ | | ||
+ | else {$trancheAge=" | ||
+ | |Pour |for (initialisation ; test_continuation ; pas évolution) { \\ code_de_boucle \\ } \\ $tabloMois=array(" | ||
+ | echo( ($indice+1)." | ||
+ | } </ | ||
+ | |Tant que | while (condition_continuation) { \\ code_boucle \\ } | <code php> while (...) { | ||
+ | | ||
+ | } </ | ||
+ | |Répéter | do { \\ code_boucle \\ } \\ while (condition_continuation) | <code php> do { \ | ||
+ | | ||
+ | while (...) </ | ||
+ | |Pour chaque | #boucle qui parcourt le contenu d’un tableau \\ foreach ($tableau as $valeur) { \\ code_boucle \\ } | <code php> | ||
+ | | ||
+ | | ||
+ | } </ | ||
+ | |Selon | switch ($variable) { \\ case valeur1 : code_1 ; break ; \\ case valeur2 : code_2 ; break ; \\ … \\ default : code_pour_autres_valeurs ; \\ } | <code php> switch ($trancheAge) { | ||
+ | case ‘senior’ : $reduction=" | ||
+ | case ‘adulte’ : $reduction=" | ||
+ | case ‘junior’ : $reduction=" | ||
+ | default : $reduction=" | ||
+ | } </ | ||
+ | |||
+ | |||
+ | === Quelques commandes === | ||
+ | Renvoi vers une autre page : une page PHP peut rediriger vers n’importe quelle page, sous réserve qu’elle n’ait pas déjà commencé à construire une page à retourner vers l’utilisateur (il ne doit pas y avoir de code HTML ou d’utilisation de la commande echo). | ||
+ | On utilise la syntaxe | ||
+ | |||
+ | |||
+ | |||
+ | ===== ANNEXE 2 : MISE EN PLACE D’UNE SOURCE DE DONNEES ODBC ===== | ||
+ | Middleware et ODBC | ||
+ | Pour ne pas limiter l' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | __Création d’une source__ | ||
+ | |||
+ | Dans le panneau de Configuration, | ||
+ | * Ajoute, supprime ou définit des sources de données avec des DSN utilisateur. Ces sources de données sont spécifiques à un ordinateur (locales) et ne peuvent être utilisées que par l' | ||
+ | * Ajoute, supprime ou définit des sources de données avec des DSN fichier. Il s'agit de sources de données basées sur des fichiers qui peuvent être partagées par tous les utilisateurs disposant des mêmes pilotes installés et qui ont donc accès à la base de données. Il n'est pas nécessaire que ces sources de données soient associées (dédiées) à un utilisateur ou spécifiques à un ordinateur (locales). | ||
+ | * Ajoute, supprime ou définit des sources de données avec des DSN système. Ces sources de données sont spécifiques à un ordinateur (locales), et non associées (dédiées) à un utilisateur. Le système, ou tout utilisateur disposant d' | ||
+ | |||
+ | |||
+ | En cliquant sur , on obtiendra l' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | Une fois le pilote choisi, on devra localiser la base correspondante et donner un nom à notre DSN. L’écran est sensiblement différent selon le SGBD auquel on accède, et le pilote qui est utilisés. Toutefois, en plus du nom de la source qui sera appelé lors de l’utilisation de cette connexion, on pourra être amené à fournir aussi le nom de la base (cas pour MySQL ou Oracle) ainsi que les coordonnées d’un utilisateur autorisé à accéder aux informations. | ||
+ | |||
+ | Nom générique de la source que l'on utilisera par la suite | ||
+ | Descriptif textuel qui explicite le rôle de la source (quelle base, son type, le compte utilisé, etc) | ||
+ | |||
+ | |||
+ | Permet de sélectionner une base existante ou d'en créer une nouvelle | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | Il est dès lors possible d' | ||
+ | |||
+ | |||