Jdatabase

Le mois dernier, les éditeurs de magazines m'ont demandé d'arrêter d'écrire des séries d'articles pour les non-techniciens, car ils ont estimé que l'objectif avait été atteint.

L'article suivant est destiné à un public ayant de bonnes connaissances techniques. L'idée de cet article est née après avoir parlé à l'équipe du magazine Spanish à propos de la rédaction d'articles qui facilitent l'accès pour les développeurs aux classes qui permettent de développer Joomla en utilisant Joomla. Je vais donc essayer d'écrire pour les développeurs qui ont déjà de bonnes connaissances.

Mon collègue, Daniel Hernandez, a contribué à rendre cet article lisible et présentable, et je l'encourage à écrire pour la revue à l'avenir afin que tous puissent profiter de ses connaissances et ses travaux.

Allons droit au but ... aujourd'hui nous allons parler de JDatabase :

PHP permet différents modes de connexion et d'interaction avec une base de données. Joomla! contient des fonctions puissantes dans son API capables d'extraire la couche de la base de données propre à des développements tiers, permettant d'amplifier la connectivité à de nouveaux serveurs de bases de données, tout en donnant aux développeurs une plus grande facilité et simplicité d'utilisation de SQL. Cela évite d'avoir à trouver et modifier chacune des méthodes où une instance est trouvée lors d'une modification de la base de données.

Pour cela, nous conseillons l'utilisation de la bibliothèque JDatabase. Cette bibliothèque permet d'instancier un appel à la base de données en quelques lignes et sans avoir besoin de connaître le nom de la base de données ou le préfixe des tables à utiliser, car toutes ces valeurs sont contenues dans le fichier configuration.php :

$db = JFactory::getDbo();
$query = $db->getQuery(true);

Avec PHP, nous aurions dû spécifier les données de connexion, le nom de la base de données et le nom de la table :

$host = "host";
$user = "user_name";
$pass = "password";
$dbname = "data_base_name";
$connection = mysqli_connect($host,$user,$pass);
mysqli_select_db($dbname,$connection);

Une autre amélioration offerte par JDatabase est la création de requêtes enchaînées aux fonctions permettant une plus grande lisibilité du code et permet de cacher la syntaxe de la requête sans compromettre la portabilité du code.

// Instancier la connexion.

$db = JFactory::getDbo();

// Créer l'objet de la requête.

$query = $db->getQuery(true);

// Préparer le nom des colonnes de notre insert.

$columns = array('column1', 'column2', 'column3', 'column4');

// Insertion des valeurs.

$values = array('value1', 'value2', 'value3', 'value4');

// Préparer la requête d'insertion.

$query
   ->insert($db->quoteName('#__table_withoutprefix'))
   ->columns($db->quoteName($columns))
    ->values(implode(',', $values));

// Établir la requête avec notre objet et exécuter la requête.

$db->setQuery($query);
$db->query();

Maintenant, si nous devions utiliser l'option la plus facile, également valable, nous enverrions complètement la syntaxe de la requête.

// Instancier la connexion.

$db = JFactory::getDbo();

// Créer l'objet de la requête.

$query = $db->getQuery(true);

// Préparer le nom des colonnes de notre insert.

$columns = array('column1', 'column2', 'column3', 'column4');

// Insertion des valeurs.

$values = array('value1', 'value2', 'value3', 'value4');
$query = 'INSERT INTO #__table_withoutprefix ('. $columns. ') VALUES('.$values.')' ;
$db->setQuery($query);
$db->query();

L'une des améliorations les plus fortes qui ont été faites dans Joomla! 3.x est l'implémentation des transactions SQL, telles que TransactionStart de JDatabaseDriver, TransactionCommit et TransactionRollback, toujours lorsque celles-ci sont compatibles avec le moteur de base de données. Cela remplace la méthode queryBatch que nous utilisions depuis Joomla! 2.5.

$db = JFactory::getDbo();
try
{
$db->transactionStart();
$query = $db->getQuery(true);
$columns = array('column1', 'column2', 'column3', 'column4');
$values = array('value1', 'value2', 'value3', 'value4');
        $query
    ->insert($db->quoteName('#__table_withoutprefix'))
    ->columns($db->quoteName($columns))
    ->values(implode(',', $values));
$db->setQuery($query);
$result = $db->execute();
$db->transactionCommit();
}
catch (Exception $e)
{

    // Capturer l'erreur et effectuer une restauration d'exécution.

    $db->transactionRollback();
    JErrorPage::render($e);
}

Si une exception se produit, nous pouvons annuler les modifications en utilisant la méthode TransactionRollback. Cela nous permet de remettre la base de données dans son état d'origine en cas de problème.

N'oublions pas, par exemple, que nous pouvons rendre notre extension indépendante de la technologie du moteur de la base de données si nous nous efforçons d'apprendre à utiliser les classes qui s'offrent à nous dans Joomla.

Le tableau suivant présente les bases de données prises en charge pour Joomla dans ses différentes versions :

Avec cet article, j'espère avons suscité votre intérêt de sorte que vous commenciez à découvrir comment faire plus avec moins d'effort.

Cet article est une libre traduction de l'article de Pedro F. Vidal Lopez intitulé Using Joomla to Make Joomla! Starting with JDatabase publié dans le Magazine Joomla officiel

L'auteur : un expert à votre service
Jean-Charles Gautard
Nom : Jean-Charles Gautard
Consultant, formateur et intégrateur web depuis plus de 10 ans, je mets mon expertise digitale au service des professionnels amorçant leur transformation digitale. A la recherche d'une stratégie digitale avec le CMS Joomla ? Besoin de conseils ? d'une formation ? d'un site Internet ou Intranet ? Contactez-nous

Articles qui devraient vous intéresser

Phoca Gallery 3.2.4 : une galerie Joomla pour vos photos Phoca Gallery 3.2.4 : une galerie Joomla pour vos photos
Résumé du test Intuitivité : Stabilité : Support : Sécurité : Mises à jour : Interropérabilité :...
Réussir votre entreprise sur Internet grâce à Joomla Réussir votre entreprise sur Internet grâce à Joomla
Ce guide aurait pu aussi s'intituler « Développer l'entreprise de mes clients sur Internet grâce à Joomla», «...

Commentaires (0)

Il n'y a pas encore de commentaire pour cet article.

Ajouter vos commentaires

  1. Insérer un commentaire en tant qu'invité.
Pièces jointes (0 / 3)
Share Your Location
Contact

Scoop.It de NosyWeb

Twitter de NosyWeb

YouTube de NosyWeb

Facebook de NosyWeb

Google+ de NosyWeb

Flux RSS de NosyWeb

Inscription newsletter de NosyWeb

Dernier article sur la même thématique
Migration vers Joomla4 : avantages et bénéficesMigration vers Joomla4 : avantages et bénéfices
Nous considérons chez NosyWeb que la migration vers Joomla4 est une nouvelle étape pour la vie de votre site, bien plus largement que la simple évolution de version du CMS. En effet, la migration...