Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/07/2008, 08h58   #1
Invité de passage
 
Inscription : juillet 2008
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5
Points : 1
Points : 1
Par défaut Lire le contenu de plusieurs fichiers .txt

Bien le bonjour,

Je poste ici cars ca fait depuis le début de la semaine que je n'arrive pas à avancer d'un pas (on est mercredi )

Alors voila:

On m'a demandé de créer une page php qui va se rendre dans un dossier spécifique (c:/wamp/test/ pour mon cas). Et lire tous les fichiers .txt à la suite et mettre le contenu dans un tableau pour l'afficher.

Les fichiers textes sont sous forme :serveur08;true;true;false;true;...

J'ai pensé à lister en premier les fichiers dans ce dossier, Mon script:

Code :
1
2
3
4
5
6
7
<?php
$dir = opendir("c:/wamp/test/");
while($file = readdir($dir)) {
echo "$file\n";
}
closedir($dir);
?>
A ce moment la variable $file contient : ". .. texte.txt text1.txt etc..."

J'aimerais utiliser cette variable pour lire tout les fichiers qu'elle a enregistré pour les ouvrir et compléter mon tableau.

Le problème c'est que je ne sais pas comment prendre juste "texte.txt" "texte1.txt" dans cette variable.

Mon code pour afficher le contenu du .txt dans un tableau :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$ouvre=fopen("texte.txt","r");  // ouverture du fichier
while (!feof ($ouvre))          // tant que pas en fin de fichier
	{
 
$lecture = fgets($ouvre, 4096); // stockage dans $lecture
$donnee=explode(";",$lecture);  // parsing des données basé sur ";")
 
$combien=count($donnee)-1; // nbre d'éléments séparés par "*"
echo "<b>Ce fichier contient ",$combien," données : </b><br><br>";
 
?><table border=1 width="100%" ><?php
 
for ($i=0;$i<=$combien;$i++)
	{
echo"<td ALIGN=center>";
echo $donnee[$i];  // affichage des données	
echo"</td><td ALIGN=center>";
	}
 
	}
fclose($ouvre);		// fermeture
?>
Comment je pourrais utilisé ma variable pour ouvrir chaque fichier un par un et les afficher dans un tableau?

Le résultat devrait ressembler à ça (dans un tableau):

serveur08 true true ...
serveur54 false true ...
... ... ...

J'espère avoir été assez explicite et pas trop long. Les réponses pourrait aider plusieurs personnes je pense, cars on ne trouve pas de tuto qui explique mon problème, Je vous l'assure j'ai chercher

En tout cas merci pour votre attention.
brainbowsix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 09h29   #2
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Bonjour,

$file ne contiens pas ". .. texte.txt text1.txt etc...". En fait, tu fais une boucle sur la liste des inodes (fichiers et répertoires) situés dans ton répertoire. Au premier passage, ta variable vaut '.' (= répertoire courant), au deuxième '..' (= répertoire parent), au troisième 'texte.txt', etc... Tu peux t'en assurer en changeant ton echo "$file\n"; par echo "$file<br />"; par exemple.

Donc pour ouvrir tes fichiers, dans ta boucle il faut vérifier s'il s'agit bien d'un fichier (is_file) puis l'ouvrir et l'afficher...
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 10h33   #3
Invité de passage
 
Inscription : juillet 2008
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5
Points : 1
Points : 1
Ok, donc j'aurais donc un code comme ceci?
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
<?php
 
if(is_file('./test/' .$fichier. '.txt'))
   {
    ...
   }
else 
   {
    ...
   }
?>
Ce dont je ne suis pas sur pour le code, c'est que je dois mettre mon code qui affichera le tableau après le if?

Et ci je mets tout ceci dans une boucle chaque fichiers .txt seront traité et ajouté au tableau?

ps. merci pour la réponse
brainbowsix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 11h05   #4
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Oui, c'est ça.

Par exemple,e en reprenant ton code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$dirname = "c:/wamp/test/";
$dir = opendir($dirname);
while($file = readdir($dir))
{
    $file =  $dirname.$file;
    if (is_file($file))
    {
        $ouvre = fopen($file, "r");  // ouverture du fichier
        while (!feof ($ouvre))          // tant que pas en fin de fichier
        {
            ...
        }
        fclose($ouvre);		// fermeture
    }
}
closedir($dir);
?>
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 11h18   #5
Invité de passage
 
Inscription : juillet 2008
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5
Points : 1
Points : 1
Merci pour ton aide

Dernière petite question et c'est tout bon.

j'ai juste une erreure dans ce code :

Parse error: syntax error, unexpected T_IF in C:\wamp\www\inventaire systems\texte1.php on line 7

la ligne 7 correspond à

J'ai chercher sur le net mais il me semble que la syntaxe est juste, de plus j'ai bien les bon droits sur les fichiers.

Dsl, de n'avoir pas trouvé seule la réponse, je débute. Je ne vois vraiment pas le problème sur cette ligne. j'ai tester plusieurs solutions.
brainbowsix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 11h23   #6
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
il manque un ; à la ligne d'avant.
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 11h29   #7
Invité de passage
 
Inscription : juillet 2008
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5
Points : 1
Points : 1
Merci beaucoup, c'est nickel

ps. J'ai un peut honte d'avoir croché sur cette erreur de "débutant" ;
brainbowsix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 15h09   #8
Invité de passage
 
Inscription : juillet 2008
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5
Points : 1
Points : 1
Voila voila j'ai terminé,

Voici le code final et fonctionnel;

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
$dirname = "C:/wamp/test/";
$dir = opendir($dirname);
?><table border=1 width="100%" ><?php
while($file = readdir($dir))
{
 
   $file =  $dirname.$file;
 
   if(is_file($file))
    {
	$ouvre=fopen($file,"r");  // ouverture du fichier
	while (!feof ($ouvre))          // tant que pas en fin de fichier
		{
		$lecture = fgets($ouvre, 4096); // stockage dans $lecture
		$donnee=explode(";",$lecture);  // parsing des données basé sur ";")
		$combien=count($donnee)-1; // nbre d'éléments séparés par ";"
 
		for ($i=0;$i<=$combien;$i++)
			{
			echo"<td ALIGN=center>";
			echo $donnee[$i];  // affichage des données
			echo"<td ALIGN=center>";
			}
		}
	}
	echo "</tr>";
}
closedir($dir);
?>
Le code php vérifie tous les fichier présents dans "C:/wamp/test/", les enregistres dans la variable $file.

Puis dans ma boucle if, le code affiche le contenu de tous les fichiers dans un tableau.

Merci à Eusebe pour ton aide
brainbowsix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h40.


 
 
 
 
Partenaires

Hébergement Web