IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Structure d'un fichier dbase


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de arcane
    Inscrit en
    Avril 2003
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 313
    Par défaut Structure d'un fichier dbase
    Bonjour,

    j'ai un fichier dbase que je ne peux pas lire via php, et en fait en regardant l'entete du fichier,
    je constate que les offset et la longueur du premier champ est incorrect :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    $colonnes = dbase_get_header_info($base_BIL_FAB);
      echo "colonnes 0 name : " . $colonnes[0]['name'] . " <br />\n";
      echo "colonnes 0 type : " . $colonnes[0]['type'] . " <br />\n";
      echo "colonnes 0 length : " . $colonnes[0]['length'] . " <br />\n";
      echo "colonnes 0 precision : " . $colonnes[0]['precision'] . " <br />\n";
      echo "colonnes 0 format : " . $colonnes[0]['format'] . " <br />\n";
      echo "colonnes 0 offset : " . $colonnes[0]['offset'] . " <br />\n";
      echo "colonnes 1 name : " . $colonnes[1]['name'] . " <br />\n";
      echo "colonnes 1 type : " . $colonnes[1]['type'] . " <br />\n";
      echo "colonnes 1 length : " . $colonnes[1]['length'] . " <br />\n";
      echo "colonnes 1 precision : " . $colonnes[1]['precision'] . " <br />\n";
      echo "colonnes 1 format : " . $colonnes[1]['format'] . " <br />\n";
      echo "colonnes 1 offset : " . $colonnes[1]['offset'] . " <br />\n";
    ...
    Resultat :

    colonnes 0 name : DATE
    colonnes 0 type : date
    colonnes 0 length : 5384
    colonnes 0 precision : 0
    colonnes 0 format : %5384s
    colonnes 0 offset : 1
    colonnes 1 name : LIBELLE
    colonnes 1 type : character
    colonnes 1 length : 7
    colonnes 1 precision : 0
    colonnes 1 format : %-7s
    colonnes 1 offset : 5385
    alors que sur la premiere colonne (0) je dois avoir lenght=8, format=%8s
    et la 2eme colonne (1) : l'offset à 9 (1+8) (début de colonne)

    du coup, je ne peux pas lire ce fichier.
    si je l'ouvre sous excel et que je l'enregistre, ca marche. (j'ai d'autres fichiers qui n'ont pas ce pb)
    mais ce fichier est recréé chaque jour avec ces erreurs.
    et je voudrais le lire sans avoir à l'ouvrir.

    les fonctions dbase_get_record_with_names et dbase_get_record me retournent une erreur :
    Notice: Undefined index: DATE in C:\www\traitement_quotidien.php on line 215
    comment peut on modifier la structure du fichier? (forcer les longueurs et offset de colonnes)

    ou alors, définir l'offset de la colonne à lire (apres, par ex. pour la 2eme colonne je ne sais pas si elle commence à 9 ou 5385)
    pour les fonctions dbase_get_record_with_names et dbase_get_record

    ou alors, serait il possible dans le script php d'ouvrir excel, d'ouvrir ce fichier dedans, et de l'enregistrer au format dbase? (sans rien modifier)

    Merci

    [edit]
    si j'ouvre ce fichier avec un autre outil, (DBF Viewer par ex.) les descriptions du fichier sont correctes
    [/edit]

  2. #2
    Membre chevronné Avatar de johweb
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 342
    Par défaut
    Juste pour info, en regardant la doc php, la fonction dbase_get_header_info renvoi :
    length : Le nombre d'octets que cette colonne peut contenir
    Le nombre d'octets, pas de caractères...

    Je sais pas si ça peut t'aider...

  3. #3
    Membre éclairé Avatar de arcane
    Inscrit en
    Avril 2003
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 313
    Par défaut
    Bonjour,

    je n'avais effectivement pas vu ce détail.

    En fait, je ne peux pas le lire en tant que dbf, donc ce que je fais, je lis un fichier binaire,
    par octets justement, et je recalcule mon offset pour chaque ligne (qui lui est correct)
    et je recrée un fichier lisible à coté.

    Merci

    [edit]
    l'offset dont je parle est celui calculé manuellement correspondant au fichier binaire
    [/edit]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XP] structure d'un fichier UDF ?
    Par sali dans le forum Windows XP
    Réponses: 1
    Dernier message: 16/02/2006, 09h24
  2. structure recursive et fichier
    Par KrusK dans le forum C
    Réponses: 4
    Dernier message: 04/01/2006, 13h08
  3. structure d'un fichier c'est quoi
    Par ilyassou dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 09/09/2005, 21h00
  4. structure d'un fichier .ttf
    Par OutOfRange dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 22/08/2005, 12h52
  5. Problème de rangement de structure dans un fichier ...
    Par Freeze dans le forum C++Builder
    Réponses: 8
    Dernier message: 16/12/2003, 16h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo