Raccourcis : Contenu - rubriques - sous rubriques
EN FR
La page correspondant à la dernière version stable est consultable dans le Manuel Jelix 1.6

Pour pouvoir accéder à une base de données, il faut d'abord indiquer les paramètres de connexion dans le fichier de profils. Voir le chapitre sur l'utilisation de ce fichier profiles.ini.php. Vous pouvez définir plusieurs connexions, que l'on nomme "profiles". Ainsi vous pouvez définir des connexions pour la base de production, la base de développement par exemple, ou encore les différentes bases sur lesquelles s'appuie votre application.

Voici un exemple de profile dans profiles.ini.php :



[jdb:default]
driver="mysqli"
database="jelix"
host= "localhost"
user= "jelix"
password= "jelix"
persistent= on
force_encoding=true

Le type de connexion à indiquer dans les noms des sections de profiles.ini.php est jdb.

Dans la section, vous voyez un certain nombre de paramètres, dont quelques-un sont utilisables pour tous les drivers :

  • driver indique le driver à utiliser. Le nombre et le nom des autres paramètres diffèrent en fonction du driver utilisé.
  • table_prefix : permet d'indiquer un préfixe de table. Lors de l'utilisation d'un DAO avec un profil spécifiant ce paramètre, les tables indiquées dans le DAO sont préfixées dynamiquement par cette valeur. Lors de l'écriture manuelle de requêtes pour jDb, vous pouvez préfixer vos tables en fonction du profil utilisé grâce à la méthode prefixTable() de jDbConnection. Cette méthode prend en paramètre le nom de la table à préfixer.

Profil pour MySQL

Paramètres possibles :

  • driver : doit valoir "mysqli" (l'API PHP mysqli est utilisée)
  • database : le nom de la base de données à utiliser
  • host : le nom du serveur mysql sur lequel se connecter
  • user et password : le login/mot de passe pour la connexion
  • persistent : indique si la connexion est persistante (on) ou pas (off)
  • force_encoding : indique s'il faut spécifier le charset utilisé dans l'application, de manière à récupérer les données avec le bon charset. En effet, certains serveurs sont configurés par exemple par défaut avec une connexion en iso-8859-1, même si les données stockées sont en utf-8. Mettez à true si vous voyez que vous n'arrivez pas à afficher les données correctement.

Il est aussi possible de configurer l'accés en SSL :

  • ssl : 0 ou 1. Active ou pas la connexion en SSL
  • ssl_key_pem : chemin vers la clé privée SSL
  • ssl_cert_pem : chemin vers le certificat SSL
  • ssl_cacert_pem : chemin vers le certificat de l'autorité de certification

Profil pour Postgresql

Paramètres possibles :

  • driver : doit valoir "pgsql"
  • database : le nom de la base de données à utiliser
  • host : le nom du serveur postgresql sur lequel se connecter. Si vous le mettez à vide, la connexion se fera via une socket unix.
  • port : indique le port de connexion. N'indiquez pas ce paramètre si vous voulez utiliser le port par défaut.
  • user et password : le login/mot de passe pour la connexion. Ne mettez pas ces paramètres si vous voulez utiliser le login/mot de passe par défaut (indiqués par exemple dans les variables d'environnement du système).
  • service : nom du service Postgresql. Les paramètres database, host, port, user et password sont alors ignorés.
  • persistent : indique si la connexion est persistante (on) ou pas (off)
  • force_encoding : indique s'il faut spécifier le charset utilisé dans l'application, de manière à récupérer les données avec le bon charset. même explication que pour mysql.
  • timeout : Nombre de secondes autorisées pour l'établissement de la connexion au serveur avant de générer un timeout
  • single_transaction : Toutes les requêtes d'une même page seront envoyées au serveur au sein d'un même transaction (entre un BEGIN; et un COMMIT;) (on) ou non (off). Défaut: off
  • search_path : indiquer la liste des schémas dans lequel il faut chercher les tables, si le schéma par défaut pour la connexion ne correspond pas à celui dans lequel l'application va chercher.

Profil pour SQLite

Paramètres possibles :

  • driver : doit valoir "sqlite3"
  • database : le nom du fichier de base de données à utiliser.
  • persistent : indique si la connexion est persistante (on) ou pas (off)
  • extensions: liste des extensions sqlite à charger, séparé par des virgules
  • busytimeout: un entier pour le paramètre busytimeout de Sqlite

Pour le fichier de base de données, vous avez plusieurs syntaxes :

  • un simple nom de fichier (ex: mybase.sqlite). Le fichier se trouvera alors dans le dossier var/db/sqlite/ (pour sqlite2) ou var/db/sqlite3/ (pour sqlite3) de votre application
  • Un nom de fichier (avec éventuellement un chemin de sous répertoire), avec en prefix un raccourcis "app:", "lib:", ou "var:" pour indiquer un chemin à partir de celui de l'application, de lib/ ou du répertoire var de l'application. Ex: "app:../db/mybase.sqlite".
  • un chemin complet sur le disque. Ex: /opt/foo/bar.sqlite.

Notez que le dossier et le fichier de base de données sqlite doivent avoir les droits de lecture/écriture adéquats (ceux du serveur web).

Profil pour PDO

Il est possible de spécifier PDO pour se connecter sur une base de donnée dans un profil mysql, postgresql, etc. Il faut alors ajouter le paramètre usepdo=on. Vous devez avoir alors au moins les paramètres suivants, qui sont quasiement identiques pour les drivers jDb :

  • driver: le nom du driver PDO à utiliser ("mysql", "pgsql"...)
  • host, user, password (sauf pour sqlite bien entendu)
  • database : le nom de la base de donnée. Pour sqlite, vous pouvez utiliser les raccourcis "app:", "lib:", ou "var:" pour indiquer un chemin à partir de celui de l'application, de lib/ ou du répertoire var/ de l'application
  • force_encoding : indique s'il faut spécifier le charset utilisé dans l'application, de manière à récupérer les données avec le bon charset. Même explication que pour mysql, et ce paramètre n'est pour le moment valable que pour mysql et postgresql.

jDb construira le DSN correspondant.

Si vous avez besoin de spécifier un DSN avec des paramètres particuliers, il va falloir utiliser une autre notation, sans utiliser le paramètre usepdo :

  • driver : doit valoir "pdo"
  • dsn : contient les informations de connexion (type de base de données, serveur, nom de la base..). Le format doit être celui attendu par PDO (voir la doc de pdo sur php.net).
  • user et password : le login/mot de passe pour la connexion. Ne mettre ces paramètres que si nécessaire.
  • force_encoding

Exemple:


[jdb:bar]
driver=pdo
dsn= "mysql:host=localhost;dbname=test"
user=
password=

Profil pour SQLServer

Paramètres possibles :

  • driver : doit valoir "sqlsrv" ("mssql" est déprécié et n'est plus maintenu)
  • database : le nom de la base de données à utiliser
  • host : le nom du serveur sur lequel se connecter.
  • port : indique le port de connexion.
  • user et password : le login/mot de passe pour la connexion.
  • force_encoding : indique s'il faut spécifier le charset utilisé dans l'application, de manière à récupérer les données avec le bon charset. même explication que pour mysql.

Profil pour Oracle

Paramètres possibles :

  • driver : doit valoir "oci"
  • persistent : indique si la connexion est persistante (on) ou pas (off)
  • user et password : le login/mot de passe pour la connexion.
  • force_encoding : indique s'il faut spécifier le charset utilisé dans l'application, de manière à récupérer les données avec le bon charset. même explication que pour mysql.

Pour indiquer le serveur et la base, soit vous indiquez une chaine de connexion :

  • dsn : la chaine de connexion reconnu par oracle

Soit vous indiquez les paramètres séparément :

  • database : le nom de la base de données à utiliser
  • host : le nom du serveur sur lequel se connecter.
  • port : indique le port de connexion.