Piste : • config-base
Chapitre : Configuration de la base de données
« Création d'une première action simple | Utilisation d'un DAO » |
Ceci est une ancienne révision du document !
Avant de continuer plus loin avec du code, il nous faut configurer Jelix pour pouvoir accéder à une base de données et alimenter cette base un minimum. Nous allons en effet stocker nos news dans une table.
Jelix prend en charge MySQL, PostgreSQL, SQLite et PDO. Par son système de driver, il est possible d'ajouter d'autres types de bases de données (pour le cas où on ne veuille pas utiliser PDO).
Fichier de configuration d'accès ¶
L'accès à une base de données est configuré dans le fichier actu.org/var/config/profiles.ini.php. Ce fichier regroupe tous les profils de connexion (pour jDb, jKVDb, jCache etc). Dans ce fichier, on peut spécifier un ou plusieurs profils de connexion, donc une ou plusieurs connexions, mais il faudra spécifier le type de connexion (ici jDb).
Chaque profil a un nom et est spécifié comme suit :
[jdb:NomProfil] driver="mysql" ; nom du driver à utiliser database="foo" ; nom de la base à utiliser host= "localhost" ; nom de la machine du serveur de base de données user= "john" ; utilisateur de connexion password="doo" ; mot de passe persistent= on ; indique si la connexion est persistante ; à activer si vous avez des problèmes de caractères bizarres avec vos données : ; force_encoding = on
Mis à part le paramètre driver qui est obligatoire, le reste des paramètres dépend du driver utilisé. En général, vous aurez toutefois les paramètres database, host, user et password. Changez le contenu de ce fichier en fonction de votre configuration. Nous prendrons comme nom de profil “actu.org” par exemple, et nous allons définir ce profil par défaut en l'indiquant avec le paramètre “default”.
[jdb] ; name of the default profile to use for any connection default = actu.org [jdb:actu.org] driver="mysql" database="actu" host= "localhost" user= "actu" password="actu" persistent= on ; à activer si vous avez des problèmes de caractères bizarres avec vos données : ; force_encoding = on
Création de la table ¶
Dans la base “actu”, nous allons maintenant créer une table news. Exécutez ce script SQL (adaptez-le si vous utilisez une autre base que MySQL) dans phpmyadmin par exemple :
CREATE TABLE `news` ( `id_news` INT NOT NULL AUTO_INCREMENT , `sujet` VARCHAR( 255 ) NOT NULL , `texte` TEXT NOT NULL , `news_date` DATE NOT NULL , PRIMARY KEY ( `id_news` ) );
Et alimentons cette table avec deux news (nous ferons un formulaire plus tard).
INSERT INTO `news` VALUES (1, 'première news', 'Ceci est une première news. In commodo, neque sit amet laoreet accumsan, neque velit rutrum augue, a fringilla nibh lorem nec est. Cras eleifend eros. Sed vehicula. Donec vel enim at nunc tincidunt pellentesque. Donec malesuada. Praesent volutpat orci ut leo. Donec dictum tortor quis odio. Aliquam pulvinar justo eu eros.', '2006-01-15'); INSERT INTO `news` VALUES (2, 'Lorem Ipsum', 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse enim elit, luctus in, rhoncus quis, facilisis in, nulla. Nam eu dolor vel erat semper porta. Phasellus pellentesque nulla a urna. Phasellus nonummy diam id risus. Donec faucibus mi sed nisi. Sed et lectus at ligula scelerisque tempus. Proin justo nibh, consectetuer porta, accumsan ac, consectetuer id, dui. Morbi at mi auctor urna elementum convallis. Etiam et massa porta risus imperdiet ullamcorper. Aenean a metus at tortor ultrices accumsan. Mauris luctus.', '0000-00-00');
Nous sommes maintenant prêts à utiliser ces données dans notre application.