Page 1 sur 1

Fichier txt dans un tableau

Posté : 14 avr. 2013, 18:01
par Dutienne
Bonjour à tous.
Après plusieurs tentatives de codes qui ne me conviennent pas. Pourriez-vous m'expliquer comment obtenir ce que je souhaite..

Sur une page html, je souhaiterais obtenir un tableau de 3 ou 4 colonnes selon mes besoins.
Les informations que doivent contenir le tableau se situent dans un fichier .txt ; sachant que sur chaque ligne, une dizaine d'informations y figurent séparaient par des virgules. Seules 2 ou 3 informations m'intéressent pour remplir mon tableau.

Dans ma page html, je fais appel à ma feuille de style.
Dans la balise body, j'écris mon php.
J'ai testé quelque chose, de ce style là, mais cela ne me convient pas. Je n'ai pas pas de tableau qui apparaît. Et j'ai des erreurs dans mon php. Pourriez-vous m'aider à comprendre mes erreurs et à les résoudre.

<?php 
$tab = array();
$fichier = fopen("fichier.txt", "r"); //on ouvre le fichier en lecture
$i=0;

while(!feof($fichier))
	{
		//On verifie que la fin du fichier n'est pas atteinte
		$ligne = fgets($fichier, 4096); //On lit la ligne courante
		$informations = explode(',' , $fichier[$i]); //On sépare les différents éléments constituant une ligne
		$tab[$i] = $informations[1]; // Je souhaite obtenir la deuxième information de mon fichier
		$tab[$i]= $informations[2]; // Je souhaite obtenir la troisième information de mon fichier
		$i = $i+1;
	}
	
echo "<tr><th> 1ère colonne </th><th> 2ème colonne </th></tr><br/>";
foreach($tab as $untab)
	{
		echo $untab;// afficher le nouveau tableau
	}
?>	
Je vous remercie d'avance pour votre aide. Bonne journée.

Re: Fichier txt dans un tableau

Posté : 14 avr. 2013, 21:25
par moogli
salut,

utilise :
  • file : pour avoir un tableau avec une ligne du tableau == une ligne du fichier (simple et rapide ;) )
  • foreach : pour parcourir le tableau
  • str_getcsv : pour obtenir un tableau correspondant à ta ligne (qui est du csv) un élément par ligne de tableau
  • echo : pour afficher le tableau :mrgreen: (mais ça tu t'en doutais ;) )
essai de faire une truc avec ça et revient si tu as des soucis.


@+

Re: Fichier txt dans un tableau

Posté : 14 avr. 2013, 22:02
par Dutienne
D'abord, merci pour le temps que vous me consacrez.
Déjà, est-ce que ceci est correct, afin d'avoir un affichage tableau ?
<div class="tableau">
<table>
	<thead>
		<th>Colonne 1</th>
		<th>Colonne 2</th>
		<th>Colonne 3</th>
	</thead>
        <?php
		//Code php à faire
		foreach($blabla as $unblabla=>$ahah=>$ihihi)
	        // Entête du tableau HTML
		echo "<tr><td>$unblabla</td><td>$ahah</td><td>$ihih</td></tr><br/>";
	?>
</table>
</div>
Ensuite, pour mon code php. Dois-je repartir de ce que j'ai commencé ? Ou reprendre tout à zéro ?
Sachant que je vais devoir faire ceci pour plusieurs pages, ne serait-ce pas mieux de faire des fonctions ? Mais selon les pages, j'aurais 2 ou 3 colonnes; est-ce faisable ?
De plus, dans la dernière colonne de mes tableaux, une croix devra s'afficher pour effectuer une suppression de ligne et suppression dans le fichier. Donc, pour cela, faut-il que je traite cette colonne en même temps que ma lecture dans le fichier ?

Encore merci.

Re: Fichier txt dans un tableau

Posté : 14 avr. 2013, 23:10
par moogli
il te manque les <tr></tr> dans le thead, la déclaration de ligne est obligatoire ;)

Pour le corps de tableau il te manque le <tbody> et tu n'as pas besoin du <br /> (un tableau change de ligne tous seul entre les tr ;) )


pour le reste effectivement tu peux faire une fonction pour éviter de dupliquer le code.

tu peux passer en paramètre les colonnes à afficher.

pour ce qui est de la suppression, cela dépend comment prévois la chose.
Avec seulement du php il faut que tu pense a embarque le code de validation du formulaire sur toute les pages (et donc le code de suppression dans le fichier, je te conseil aussi une fonction pour cela).

Après tu peux utiliser du javascript (et une requête ajax) vers un fichier unique.

Attention si le fichier est différent pense le passer en paramètre de la requête ajax !


@+

Re: Fichier txt dans un tableau

Posté : 21 avr. 2013, 20:54
par Dutienne
Merci pour l'aide.
Je n'ai jamais fais de fonction. Comment fais-t-on ? Pour la créer et pour pouvoir sans servir sans problème dans mes pages.
De plus, il faudra que je l'appelle dans mes pages. Est-ce que require("functions.php") est correct ?

Je bloque vraiment pour que chaque élément séparé par , dans fichier.txt apparaisse dans une colonne différente.

Fichier.txt du style :
Dupont,Jean,15/12/1234,,
Zola,Emile,,,
etc

J'ai fais un formulaire pour remplir mon fichier. Rien ne s'écrit après les virgules, si aucune information n'est rempli ; logique.
Imaginons, que ce sont les deux premiers éléments que je souhaite afficher sur ma page html dans un tableau avec en dernière colonne, ma colonne suppression où je me chargerais de la suppression ultérieurement. Pourriez-vous m'aider ?
De plus, j'ai un autre soucis. A chaque fois que je remplis un formulaire, je souhaiterais que le compteur augmente de 1 à chaque fois afin que chaque id soit différent. Comment pourrais-je faire pour que Fichier.txt devienne de ce style là :
1,Dupont,Jean,15/12/1234,,
2,Zola,Emile,,,
etc

Je vais essayer d'obtenir mon tableau, avant de m'occuper de la suppression. Ce sera plus simple, chaque chose en son temps.
 <div class="tableau">
<table>
        <thead>
                <tr> 
                <th>Colonne 1</th>
                <th>Colonne 2</th>
                <th>Colonne 3</th>
                </tr>
        </thead>
        <tbody>
        <?php
                //Code php à faire
                foreach($blabla as $unblabla=>$ahah=>$ihihi)
                // Entête du tableau HTML
                echo "<tr><td>$unblabla</td><td>$ahah</td><td>$ihih</td></tr><br/>";
        ?>
        </tbody>
</table>
</div>

Je vous remercie d'avance pour le temps que vous me consacrez.

Re: Fichier txt dans un tableau

Posté : 21 avr. 2013, 23:05
par moogli
as tu songé à utiliser une base de données afin de simplifier la chose ?

Si tu gère le fichier d'un bout à l'autre je te conseillerais d'utiliser un fichier plus structuré (comme sérialiser un tableau php, ou du JSON).

quand a ton problème, as tu essayé quelque chose avec les fonctions que j'ai indiqué ?

commence par créer un fichier avec des données et de le lire et l'afficher avec les fonctions ? (aide toi des exemples de la doc des fonctions).

si tu ne comprend pas une fonction demande.


@+

Re: Fichier txt dans un tableau

Posté : 08 mai 2013, 17:44
par Dutienne
Bonjour,
Après plusieurs tentatives.
J'ai réussi à obtenir ce que je souhaitais mais quelques erreurs apparaissent.. Sauriez-vous m'aider à les retirer?
Dans ma page php, j'ai le code suivant :
	<table border=6 bordercolor="#660000" width="30%" cellpadding="4" cellspacing="3" bgcolor="#FFCC66">
			<thead>
					<th>Pseudo</th>
					<th>Nom</th>
					<th>Prénom</th>
					<th>X</th>   // Colonne pour ma suppression disponible seulement pour un administrateur
			</thead>
			<tbody >
			<?php
				$file = fopen('fichier.txt','r');   // Ouverture du fichier concerné
				while(!feof($file))
				{
					$lignefile = fgets($file,100);
					$infos = explode(',',$lignefile);
					if($_SESSION['admin'] == 1)
					{
						if ($infos[0] == "") // Cela correspond à la dernière ligne vide
						{
							// Afficher le + pour un ajout à la fin du tableau dans la première colonne
							echo '<tr><td>' . '<a href = "formulaire-ajout.php"> + </a>' . '</td><td>' . " " . '</td><td>' . " " . '</td></tr>';
						}
						else
						{
							echo '<tr><td>' . $infos[2] . '</td><td>' . $infos[0] . '</td><td>' . $infos[1] . '</td><td>' . '<a href = "suppression.php"> X </a>' . '</td></tr>';
						}
					}
					else
					{
						echo '<tr><td>' . $infos[2] . '</td><td>' . $infos[0] . '</td><td>' . $infos[1] . '</td><tr>';
					}
				}
				fclose($file);
			?>
			</tbody>
		</table>

Mon tableau s'affiche avec les informations que je souhaite. Or 1 erreur s'affiche !
Notice: Undefined offset: 2 in D:\Site\fichier.php on line 42 (ligne : echo '<tr><td>' . $infos[2] . '</td><td>' . $infos[0] . '</td><td>' . $infos[1] . '</td><td>' . '<a href = "suppression.php"> X </a>' . '</td></tr>';)
Après cette erreur, s'affiche quelques caractères provenant de la fin de mon fichier avec X + or je ne souhaiterais avoir que le + mais dans la dernière ligne du tableau.

Merci d'avance.

Re: Fichier txt dans un tableau

Posté : 08 mai 2013, 17:55
par moogli
cela veux dire que ton csv n'est pas bien formé, si l'index 2 n'existe pas c'est qu'il manque une virgule sur certaines lignes.

Vérifie le fichier ou traite ce cas de façon a ce que cela n'arrive pas.


@+

Re: Fichier txt dans un tableau

Posté : 08 mai 2013, 19:05
par Dutienne
J'ai examiné l'erreur de plus près.
Ce qui me provoque une erreur est l'adresse mail stockée dans une ligne du fichier.txt

Fichier.txt
Dupont,Jean,Jdupont,jean,12/12/1234,13 rue des Roses,80000,Amiens,,,1
Jean-Yves,Gerer,Gjy,Aze12-,12/12/1234,12 Rue des Comères,12343,Amiens,0344044545,[email protected],1


Dans mon tableau, j'affiche le 3e champ dans la 1 ere colonne, puis le 1e dans la 2 e colonne et le 3e champ dans la 3 e colonne.
soit, j'obtiens (en tant qu'administrateur) :
Pseudo Nom Prénom X
Jdupont Dupont Jean X
Gjy Jean-Yves Gérer X
Affichage de l'erreur
otmail.fr1 X +

Comment puis-je régler ce problème ?