Chargement...

Symfony : Comment se connecter à Sage 100C avec un odbc Php PDO natif (Windows)

Besoin de connecter une application Symfony à Sage 100C ? Je te montre un exemple de connexion avec un odbc Php PDO natif sur Windows !

Salut c'est encore moi ! Je fais cet article car on vient tout juste de mettre en production une application Symfony pour un client qui est directement connectée à leur logiciel de gestion Sage 100C. On reprend l'ensemble du système d'information du client pour repasser sur des technologies un peu plus robustes mais le choix du connecteur odbc php pdo est maintenu pour ne pas tout recoder.

 

Pour faire simple nous avons d'un coté une application Symfony qui va executer des requêtes (select), le but étant de récuperer les documents et les informations stockés dans Sage 100C pour les déporter sur une plateforme web disponible à ses propre clients.

 

Pour les requêtes d'insert ou d'update nous avons utilisé un connecteur odbc sage qui nous permet d'insérer plus facilement les données.

Par exemple l'insertion d'un document revient à renseigner une dizaine de champs alors que la table en fournit plus d'une cinquantaine. Cette odbc permet de pré-remplir pas mal de données et de simplifier les insertions en base de données. Je réaliserais un article très prochaine sur ce sujet !

 

Derrière Sage 100C on retrouve logiquement une base de donnée stockée sur SQL Seveur.

 

Voici l'exemple de mon service qui me sert de classe de connexion pour la base de données SQL Serveur de Sage 100C :

 

 


namespace ConnexionBundle\Service\Sage;

class BddPdo {

    private $cnx;

    public function __construct($bdd) {
        try {
            $this->cnx = new \PDO($bdd, null,null);
        }
        catch(\PDOException $exception){}
    }

    public function testConnexion() {
        return $this->cnx instanceof \PDO;
    }

    public function findOne($select) {
        try {
            $sth = $this->cnx->query($select);
            $sth->execute();
            $result = $sth->fetch();
            return $result;
        }
        catch(\PDOException $e) {
            return false;
        }
    }

    public function findAll($select) {
        try {
            $sth = $this->cnx->query($select);
            $sth->execute();
            $result = $sth->fetchAll(\PDO::FETCH_ASSOC);
            return $result;
        }
        catch(\PDOException $e) {
            return false;
        }
    }

    public function execute($sql) {
        try {
            $sth = $this->cnx->prepare($sql);
            $res = $sth->execute();
            return $res;
        }
        catch (\PDOException $e) {
            return false;
        }
    }


}

Le premier paramètre $bdd de mon constructeur est un paramètre stocké dans mon parameters.yml et voici le code du service qui va avec :

 

 


services:

    connexion.sage.pdo:
            class: ConnexionBundle\Service\Sage\BddPdo
            arguments: [%sage_sqlserver_bdd%]

Et voici le paramètre stocké dans mon parameters.yml :

 

sage_sqlserver_bdd: odbc:tonlogin

 

Pour finir il faut suivre ces étapes pour ajouter une source de données sur l'environnement :

  1. Ouvrir le gestionnaire de source de données 32 bits (l'odbc ne fonctionne pas avec un système en 64bits)
  2. Onglet : Sources de données utilisateur cliquez sur le bouton Ajouter
  3. Ajouter une source de données de type SQL Server
  4. Choisir un nom et choisir le serveur SQL Server dans la liste déroulante proposée
  5. Valider et terminer la création de la source de données
  6. Revenez sur votre fichier parametres.yml et modifier la variable  de l'odbc en changeant "tonlogin" par le nom de votre source de données en étape 4.

 

Vous avez maintenant une connexion persistante vers votre base de données SQL Server qui vous permettra de récupérer l'ensemble des données telles que les documents, les données clients, les produits & stock.

 

J'espère que cet article vous a plu, n'hésitez pas à laisser un commentaire ou une question je me ferai un plaisir de vous répondre et de vous aider ! A bientôt :)


Tags sur l'article

Commentaires (0)

Laisser nous un commentaire