Mysql et ofx

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. 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
    1. Le sujet est-il donc si inconnu ?
      0
      1. 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
    2. 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. 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
      2. @csttrouver 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
      3. @tifiDésolé, il manquait un mot dans la phrase et ça change tout :

        Visiblement tu vas PAS trouver un outil tout prêt
        0
    3. Oui, j'avais remarqué. Mais ton idée me semble bonne. Je développerai un peu plus tard.
      Merci.
      0