Manipulation des fichiers en php

qosmio Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -  
giheller Messages postés 1882 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je voudrais effectuer les opérations suivantes sur un fichier en txt, mais je dois programmer ces opérations avec des scripts php.

-ouverture du fichier en lecture.
-pour chaque ligne, créer un enregistrement dans un tableau.
- Découper chaque ligne suivant le fichier de description des lignes en un tableau de cellule (nom du champs=valeur)
-afficher les valeurs du tableau dans un formulaire (modifiable).
-un bouton enregistrement(sauvegarde des modifications)
- écriture du fichier avec le meme format que celui ouvert au début

Si vous avez des solutions ou des tuto à me proposer. Je suis preneur.

A bientot et de votre aide
A voir également:

7 réponses

giheller Messages postés 1882 Date d'inscription   Statut Membre Dernière intervention   142
 
bonsoir,
une petite recherche google point par point peut solutionner le problème.
réponse à la première question :
https://www.google.fr/search?hl=fr&source=hp&q=php+lire+un+fichier&meta=cr%3DcountryFR&aq=1&oq=php+lire&gws_rd=ssl

après on continue
0
qosmio
 
Bonjour,

Voici, mon fichier texte qui est organisé en champs avec des blancs, j'ai tronqué les lignes et les colonnes car elles sont longues:

E 055804561LIBRAIRIE PAPETERIE D ENDOUME 244 RUE D'ENDOUME
XAA +000000000000000000AB +000000000000000000AC +000000000000000000AD +000000000000000000
XAK +000000000000000000AL +000000000000000000AM +000000000000000000AN +000000000000000000
XAU +000000000000018673AV +000000000000000000AW +000000000000000000AX +00000000000000000
XBC +000000000000000000BD +000000000000000000BE +000000000000000000BF +000000000000000000

Le fichier de description (voir-ci-dessous) concerne le découpage de chaque ligne suivant le fichier de description des lignes en un tableau de cellule (nom du champs=valeur). Le fichier est très long.

Num ligne Désignation Colonne Calcul Longueur position Début position Fin
1 Entete - Lettre E + 10 blancs 11 1 11
1 Numero siren 9 12 20
1 Raison sociale 60 21 80


L'ouverture du fichier en lecture, j'ai compris et je peux la coder, mais je bloque aux questions suivantes citées-dessus dans le message précédent. Alors girlher, google ne suffit pas, je n'ai pas trouvé e je ne sais pas comment m' prendre.

Merci et a bientot
0
giheller Messages postés 1882 Date d'inscription   Statut Membre Dernière intervention   142
 
bonsoir,

une ligne du fichier est lue dans un buffer.
charge ensuite à nous de le découper avec des substring ou un explode

0
qosmio
 
Bonsoir,

Voilà, pour l'ouverture du fichier et l'enregistrement de chaque ligne dans un tableau, en utilisant file().

<?php

$Fichier="Analyse.txt";

if (is_file($Fichier)){

if($TabFich=file($Fichier)){

for($i=0; $i<count($TabFich); $i++)



}

else{

echo "Le fichier ne peut pas etre lu..<br>";

}

} else {

echo "Désolé le fichier n'est pas valide <br>";

}

?>

Tu m'as écris "à nous de le découper avec des substring ou un explode". Alors c'est à vous de la cécouper. Je vais vous préciser comment vous allez la découper d'après la description du fichier qui est mal affiché.

1 Entete - Lettre E + 10 blancs 11 1 11 E .
Cela veut dire que 1 c'est le numéro de la ligne. Entete - Lettre E + 10 blancs est la désignation. Le premier 11 est la longueur de la première chaine qui est composée de la lettre E+10 blancs. Le chiffre 1 est la position de début de la lettre E. Le deuxième 11 est la position finale de la première chaine (E+10 blancs). La lettre E désigne la vleur du champs. Merci de votre aide
@+ et à bientot
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
giheller Messages postés 1882 Date d'inscription   Statut Membre Dernière intervention   142
 
bonsoir,

1 Entete - Lettre E + 10 blancs 11 1 11 E .
Cela veut dire que 1 c'est le numéro de la ligne. Entete - Lettre E + 10 blancs est la désignation. Le premier 11 est la longueur de la première chaine qui est composée de la lettre E+10 blancs. Le chiffre 1 est la position de début de la lettre E. Le deuxième 11 est la position finale de la première chaine (E+10 blancs). La lettre E désigne la vleur du champs.

si c'est toujours ainsi

on peut faire (si $buffer contient la ligne lue)
$a = explode(" ",$buffer);

alors
$a[0] contient 1 si il existe un espace entre 1 ert entête
$a[1] contient Entete
$a[2] contient -
$a[3] contient lettre
$a[4] contient E
$a[5] contient 11
$a[6] contient 1
$a[7] contient 11
$a[8] conteine E
$designation = $a[1]." ".$a[2]." ".$a[3]." "$a[4];
etc


0
qosmio
 
Bonsoir, je pense que tu n'as pas compris comment est décrit le fichier. J'ai deux fichiers l'un en txt et l'autre en excel. Ce dernier (le fichier excel) décrit le fichier txt

Voici Le fichier txt
E 055804561LIBRAIRIE PAPETERIE D ENDOUME 244 RUE D'ENDOME

Voici le fichier excel
Num ligne Désignation Longueur position Début position Fin VALEURS
1 Entete - Lettre E + 10 blancs 11 1 11 E
1 Numero siren 9 12 20
1 Raison sociale 60 21 80

Je t'explique ce que je veux : Entete - Lettre E + 10 blancs a une longueur 11, la lettre E est à une position de début qui est à 1 et la position finale est à 11 car il y a 10 blancs+E.

Le numéro de SIREN (055804561) a une longueur 9, sa position de début est 12 et sa position finale est 20 car sa longueur est 9+ 10 blans+la position de E qui est 1.

La raison sociale (LIBRAIRIE PAPETERIE D ENDOUME) a une longuer de 60 car il faut ajouter les blancs, sa position de début est à 21 et sa position finale est à 80. Il faut compter meme les blancs. La ligne n° 1 est longue. Il y a au moins 15 lignes. Le fichier excel est aussi long. Je ne sais pas pourquoi tu as écris entete, designation, lettre. Je n'étais pas très clair. Il me semble que je suis clair maintenant.
0
giheller Messages postés 1882 Date d'inscription   Statut Membre Dernière intervention   142
 
quel fichier veut tu lire ?
le fichier txt je suppose

si tu es capable de récupérer la position de début d'uen zone et sa longueur, il faut alors utiliser la fonction substr
si $buffer contient une ligne du fichier txt

$siren = substr($buffer,position, longueur);

quant au fichier excel c'est la première fois que tu en parles. pour le lire il fudra peut être avant le transformer en csv
0