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 :
Resultat :
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"; ...
alors que sur la premiere colonne (0) je dois avoir lenght=8, format=%8scolonnes 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
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 :
comment peut on modifier la structure du fichier? (forcer les longueurs et offset de colonnes)Notice: Undefined index: DATE in C:\www\traitement_quotidien.php on line 215
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]
Partager