Mysql et ofx

tifi Messages postés 101 Statut Membre -  
tifi Messages postés 101 Statut Membre -
Bonjour,
Je cherche le moyen d'intégrer les données banques en fichier .ofx dans une base de donnée mysql. Je ne trouve pas de tuto à ce sujet. Je suis un peu étonné, car il me semble que ce que je cherche n'est pas un scoop.

Je peux le faire en quelques lignes de PHP mais je ne sais pas lire les balises OFX
<curdef> <status> .... Ce serait simple de mettre par exemple toutes les valeurs de balise <TRNAMT> dans la colonne "montant" de mysql

La function foreach() ne lit apparemment pas les balises ??? Ça m'embête bien. Il doit y avoir quelque chose que je ne sais pas... php.net ne parle des fichiers OFX

Une petite aide serait bienvenue.
Configuration: Linux Mandriva
Firefox 3.0.10

4 réponses

  1. tifi Messages postés 101 Statut Membre 78
     
    Personne ? Je me suis peut-être mal exprimé.
    Les fichiers .ofx sont générés par les banques au profit des logiciels de comptabilité.

    Pour mon application je souhaiterais importer un tel fichier dans une base mysql.

    Est-ce possible?
    Des scripts existeraient-ils ?

    Merci.
    0
  2. tifi Messages postés 101 Statut Membre 78
     
    Le sujet est-il donc si inconnu ?
    0
    1. cst
       
      Bonjour,

      Toujours d'actualité ?
      Ne pouvez vous pas essayer les fonctions XML de PHP ? Le format OFX y ressemble beaucoup bien que des balises soient ouvertes et jamais fermées.

      Il me semble donc qu'il faut chercher du coté du parse XML.

      Comment récupérez vous le fichier OFX ? en téléchargement sur votre disque puis import formulaire ?

      En fait, moi j'ai utilisé le format CMI du credit mutuel qui est simple à utiliser avec des substr.
      J'aimerais faire comme Money en connexion directe avec le site de banque mais je ne sais pas par où commencer.

      A bientot
      0
  3. tifi Messages postés 101 Statut Membre 78
     
    Oui. En fait j'ai essayé un truc en php:
    Voila le genre de fichier que j'ai:

    OFXHEADER:100
    DATA:OFXSGML
    VERSION:102
    SECURITY:NONE
    ENCODING:USASCII
    CHARSET:1252
    COMPRESSION:NONE
    OLDFILEUID:NONE
    NEWFILEUID:

    <OFX>
    <SIGNONMSGSRSV1>
    <SONRS>
    <STATUS>
    <CODE>0
    <SEVERITY>INFO
    </STATUS>
    <DTSERVER>20090613123545
    <LANGUAGE>ENG
    </SONRS>
    </SIGNONMSGSRSV1>
    <BANKMSGSRSV1>
    <STMTTRNRS>
    <TRNUID>132590218612694800300EUR
    <STATUS>
    <CODE>0
    <SEVERITY>INFO
    </STATUS>
    <STMTRS>
    <CURDEF>EUR
    <BANKACCTFROM>
    <BANKID>13259
    <BRANCHID>02186
    <ACCTID>12694800300
    <ACCTTYPE>CHECKING


    Ce serait simple si j'arrivais à controler les balises.....
    0
    1. cst
       
      Euh, une réponse basique du genre :

      Tu fais une boucle par ligne,
      Si substr (ltrim(ligne,0,8))=<BANKID> --> $Rib1 = la suite
      Si substr (ltrim(ligne,0,8))=<BRANCHID> --> $Rib2 = la suite
      Si substr (ltrim(ligne,0,8))=<ACCTID> --> $Rib3 = la suite
      Si substr (ltrim(ligne,0,8))=<DTPOSTED> --> $date= la suite
      Si substr (ltrim(ligne,0,8))=<TRNAMT> --> $montant= la suite
      Si substr (ltrim(ligne,0,8))=<FITID> --> $reference = la suite
      Si substr (ltrim(ligne,0,8))=<NAME> --> $libelle= la suite

      Si substr (ltrim(ligne,0,8))=</STMTTRN> --> INSERT mysql SET compte=$Rib1+$rib2+$Rib2, date=$date, ...

      C'est un peu brut mais après tu peux ajouter des recherches automatique de catégorie analytiques...

      Visiblement tu vas trouver un outil tout prêt
      0
      1. tifi Messages postés 101 Statut Membre 78 > cst
         
        trouver un outil tout prêt n'est pas si évident, C'était l'objet de ce post, mais on peut toujours se le faire à la mano.
        0
      2. cst > tifi Messages postés 101 Statut Membre
         
        Désolé, il manquait un mot dans la phrase et ça change tout :

        Visiblement tu vas PAS trouver un outil tout prêt
        0
  4. tifi Messages postés 101 Statut Membre 78
     
    Oui, j'avais remarqué. Mais ton idée me semble bonne. Je développerai un peu plus tard.
    Merci.
    0