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 -
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
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:
- Manipulation des fichiers en php
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Explorateur de fichiers - Guide
- Fichiers bin - Guide
7 réponses
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
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
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
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
bonsoir,
une ligne du fichier est lue dans un buffer.
charge ensuite à nous de le découper avec des substring ou un explode
une ligne du fichier est lue dans un buffer.
charge ensuite à nous de le découper avec des substring ou un explode
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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.
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.
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
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