Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1424 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  récupération d'un fichier txt en tableau php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

récupération d'un fichier txt en tableau php

n°1906058
calvin51
Posté le 17-07-2009 à 10:14:22  profilanswer
 

Après de nombreuses recherches je n'ai malheureusement pas obtenu les réponses adéquates, donc je viens vers vous pour obtenir plus d'aide.
 
J'ai un fichier txt issu d'un tableau excel ayant en séparateur un tabulation :
 
image1   nom1     url1
image1   nom2     url2
image2   nom3     url3
image3   nom4     url4
...
 
 
En php, je dois afficher dans un tableau :
 
IMAGE1    NOM1
            NOM2
 
IMAGE2    NOM3
 
IMAGE3   NOM4
 
Le nom doit être associé à l'url (<a href="$url">$nom</a> )
 
Pour le moment je débute en php et j'ai donc peu de maîtrise dans la réalisation de lecture en boucle dans un fichier
 
<?php
$fichier = fopen("edito.txt","r" );
$file = explode("\n", $fichier);
 
est mon début de fichier.
 
Merci pour votre aide à venir.

mood
Publicité
Posté le 17-07-2009 à 10:14:22  profilanswer
 

n°1906066
Profil sup​primé
Posté le 17-07-2009 à 10:22:20  answer
 

Il s'agit d'un fichier CSV ou bel et bien d'un TXT ?

n°1906067
calvin51
Posté le 17-07-2009 à 10:23:56  profilanswer
 

La page actuelle est en html : http://www.weddingdresses.com/editorial.html
 
La liste globale est issue d'un fichier excel que j'ai retranscrit manuellement dans l'html (faute de temps pour le développer en php à l'époque).
Aujourd'hui on souhaite passer ça en dynamique en permettant à nos collègues US de mettre à jour leur listing sans notre intervention.

n°1906069
calvin51
Posté le 17-07-2009 à 10:24:37  profilanswer
 

Il s'agit d'un fichier .txt issu d'un fichier excel, enregistré avec comme séparateur : tabulation.

n°1906070
Profil sup​primé
Posté le 17-07-2009 à 10:25:11  answer
 

oui mais le fichier d'origine sera un .txt ou un .csv ?

n°1906071
Hermes le ​Messager
Breton Quiétiste
Posté le 17-07-2009 à 10:25:28  profilanswer
 

la tabulation, c'est \t hein... et puis vérifie que tu n'a pas de saut de ligne, sinon, le dernier de chaque ligne sortira avec le premier de la ligne suivante.


---------------
Expert en expertises
n°1906072
calvin51
Posté le 17-07-2009 à 10:26:14  profilanswer
 

un petit exemple de contenu :
 
r_cover.gif Dev Valencia www.devvalencia.com
r_cover.gif Ines Di Santo www.inesdisanto.com
r_cover.gif Krikawa www.krikawa.com
r_cover.gif L'ezu Atelier www.lezu.com
r_cover.gif Nelson Jewellery www.nsbring.com
r_cover.gif Sasha Primak www.sashaprimak.com

n°1906075
calvin51
Posté le 17-07-2009 à 10:28:11  profilanswer
 

ce n'est pas un .csv
c'est un fichier appelé edito.txt.
 
Donc déjà si je comprends, dans mon $file = explode("\n", $fichier); c'est pas un \n mais un \t ?

n°1906082
Profil sup​primé
Posté le 17-07-2009 à 10:35:21  answer
 

Bon, puisque tu ne réponds pas à ma question, voici un bout de code basé sur la doc de PHP

Code :
  1. <?php
  2. /* Lecture */
  3. $fp = fopen("edito.txt", "r" );
  4. $lines = array();
  5. while ($lines[] = fscanf($fp, "%s\t%s\t%s\n" )) ;
  6. fclose($fp);
  7.  
  8. /* Affichage */
  9. $previous_line = array(null, null, null);
  10. foreach($lines as $line) {
  11.    if($line[0] != $previous_line[0]) {
  12.        echo '<img src="' . $line[0] . '" />';
  13.    }
  14.    $previous_line = $line;
  15.    
  16.    echo '<a href="' . $line[2] . '">' . $line[1] . '</a>';
  17. }
  18. ?>


Pas testé, surement plein de fautes, mais çà te donne une idée du truc.


Message édité par Profil supprimé le 17-07-2009 à 10:43:09
n°1906086
calvin51
Posté le 17-07-2009 à 10:43:45  profilanswer
 

effectivement ça se rapproche de ce que je cherche :)
 
Pour ta question, je n'ai pas saisi ce que tu voulais savoir.
Ma situation d'origine est :
- edito.txt (données séparées par tabulation)
- edito.php (affiche le tableau issu de edito.txt)
 
edito.txt a été créé à partir de edito.xls en l'enregistrant au format TEXTE avec séparateur: tabulation.
Je ne vois pas quoi dire d'autre ^^
 
Dans le code que tu viens de me donner, il faut à présent que j'affiche l'image une seule fois :
 
pour plusieurs nom+url, j'ai la même image (cf http://www.weddingdresses.com/editorial.html --> titre Cover, Q&A etc.)
 
pour Cover, j'ai r_cover.gif, pour Q&A j'ai r_q-a.gif...

mood
Publicité
Posté le 17-07-2009 à 10:43:45  profilanswer
 

n°1906089
calvin51
Posté le 17-07-2009 à 10:46:45  profilanswer
 

Après quelques modifs, j'ai trouvé pour n'afficher l'image qu'une seule fois par groupe de nom.
Je continue mes investigations mais en tout cas tu m'as bien aidé lucas :)

n°1906091
Profil sup​primé
Posté le 17-07-2009 à 10:48:16  answer
 

en fait au moment ou j'ai écris tu n'avais pas encore répondu :D mais tu as bien répondu ;)
 
Pour ton problème d'images, je n'ai pas bien compris :/  
Tu veux éviter d'afficher 2 fois la même image c'est çà ?
EDIT :  [:grilled]


Message édité par Profil supprimé le 17-07-2009 à 10:48:57
n°1906093
calvin51
Posté le 17-07-2009 à 10:48:49  profilanswer
 

Ah! petit souci.
Quand il rencontre un espace dans le nom, il tronque la donnée.
 
En gros, j'ai le nom "Dev Valencia" et il ne m'affiche que Dev
 
Any idea ?

n°1906096
calvin51
Posté le 17-07-2009 à 10:51:27  profilanswer
 

Pour que tu vois ce que ça donne :
http://www.weddingdresses.com/editorial.php
 
autre pb : en bas j'ai une image inexistante qui s'affiche. Y a moyen qu'il n'affiche pas ça ?

n°1906098
Profil sup​primé
Posté le 17-07-2009 à 10:53:36  answer
 

Source probable du problème :

doc de PHP a écrit :

Tous les caractères blancs de la chaîne de formatage correspondent à autant d'espaces dans le flux d'entrée. Cela signifie qu'une tabulation \t dans la chaîne de format peut remplacer un espace simple dans le flux d'entrée.


Essaye çà : Remplace la ligne 5 par

Code :
  1. while ($lines[] = fscanf($fp, "%s    %s    %s\n" ));

Si çà ne marche pas, je ne vois qu'une chose : ne pas autoriser les espaces, les remplacer par des underscores (_) dans le nom (puis de les transformer en espaces à la lecture).


Message édité par Profil supprimé le 17-07-2009 à 10:54:16
n°1906100
calvin51
Posté le 17-07-2009 à 10:54:44  profilanswer
 

et dernier pb, quand je regarde les url associées aux noms, ca ne va pas car elles ne sont pas bonnes :
 
Pour le premier lien il contient "http://www.weddingdresses.com/Valencia" au lieu de www.devvalencia.com (même pb pour tous les liens)

n°1906101
Profil sup​primé
Posté le 17-07-2009 à 10:56:44  answer
 

c'est pas lié au code mais au fichier source on est d'accord ? :heink:

n°1906102
calvin51
Posté le 17-07-2009 à 10:59:43  profilanswer
 

oui effectivement. Le fichier source n'est pas adapté. Toujours ces foutus espaces (j'ai les mêmes soucis en perl)
 
Donc, malgré le remplacement de la ligne 5, le 'bug' persiste.
 
Donc, il faut vraisemblablement remplacer l'espace par un _ puis le retransformer à l'affichage.
 
L'espace présent dans le nom fait qu'à la lecture, il met dans l'url le 2e mot du nom... d'où les erreurs ensuite.
 
Je t'embête encore avec ça mais si tu peux m'aider là dessus je t'en serais très reconnaissant :)

n°1906103
calvin51
Posté le 17-07-2009 à 11:03:04  profilanswer
 

Je présume qu'il me faut utiliser ceci  
str_replace(" ",'_', ...);

n°1906121
Profil sup​primé
Posté le 17-07-2009 à 11:43:43  answer
 

faut faire l'inverse pour l'affichage

n°1906127
calvin51
Posté le 17-07-2009 à 11:55:15  profilanswer
 

c'est à dire ?
Ce que je ne comprends pas c'est pourquoi l'espace génère cette 'coupure' dans la lecture du fichier alors qu'on spécifie bien que la tabulation est le critère pour passer à la colonne suivante.

n°1906173
Profil sup​primé
Posté le 17-07-2009 à 14:47:11  answer
 

à mon avis il va falloir procéder autrement :/
avec des expressions régulières et tout :/
(file + expression régulière sur chaque ligne du fichier)
Sinon le fichier source ne pourra pas contenir d'espace :/


Message édité par Profil supprimé le 17-07-2009 à 14:47:28
n°1906178
calvin51
Posté le 17-07-2009 à 15:05:06  profilanswer
 

j'ai effectué la modif dans le fichier source en virant les espaces dans les noms. De toute façon, la mise à jour sera faite par mes collègues aux US. Si je leurs dis de mettre des _ dans les noms ca ira. J'ai fait la modif pour remplacer les _ par des espaces ensuite et ça marche.
Il me reste juste un pb de div qui déconne et ce sera bon.
 
En tout cas, je te remercie sincèrement pour le gros coup de main.

n°1906179
Profil sup​primé
Posté le 17-07-2009 à 15:06:15  answer
 

:jap:

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  récupération d'un fichier txt en tableau php

 

Sujets relatifs
Importer fichier csv dans une tablerecuperation d'une session a partir d'un fichier pcap
Batch : Numéroté fichier d'un répertoireShellExecute pour imprimer un fichier
[VBA] créer fichier excel à partir d'ongletPetites images et grandes images...
lecture/écriture fichier texte et conversion en données numériquesInserer un tableau dans du php, probleme
Problème image dans tableau 
Plus de sujets relatifs à : récupération d'un fichier txt en tableau php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR