récupération d'un fichier txt en tableau php - PHP - Programmation
Marsh Posté le 17-07-2009 à 10:23:56
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.
Marsh Posté le 17-07-2009 à 10:24:37
Il s'agit d'un fichier .txt issu d'un fichier excel, enregistré avec comme séparateur : tabulation.
Marsh Posté le 17-07-2009 à 10:25:28
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.
Marsh Posté le 17-07-2009 à 10:26:14
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
Marsh Posté le 17-07-2009 à 10:28:11
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 ?
Marsh Posté le 17-07-2009 à 10:35:21
Bon, puisque tu ne réponds pas à ma question, voici un bout de code basé sur la doc de PHP
Code :
|
Pas testé, surement plein de fautes, mais çà te donne une idée du truc.
Marsh Posté le 17-07-2009 à 10:43:45
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...
Marsh Posté le 17-07-2009 à 10:46:45
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
Marsh Posté le 17-07-2009 à 10:48:16
en fait au moment ou j'ai écris tu n'avais pas encore répondu 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 :
Marsh Posté le 17-07-2009 à 10:48:49
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 ?
Marsh Posté le 17-07-2009 à 10:51:27
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 ?
Marsh Posté le 17-07-2009 à 10:53:36
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 : |
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).
Marsh Posté le 17-07-2009 à 10:54:44
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)
Marsh Posté le 17-07-2009 à 10:56:44
c'est pas lié au code mais au fichier source on est d'accord ?
Marsh Posté le 17-07-2009 à 10:59:43
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
Marsh Posté le 17-07-2009 à 11:03:04
Je présume qu'il me faut utiliser ceci
str_replace(" ",'_', ...);
Marsh Posté le 17-07-2009 à 11:55:15
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.
Marsh Posté le 17-07-2009 à 14:47:11
à 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
Marsh Posté le 17-07-2009 à 15:05:06
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.
Marsh Posté le 17-07-2009 à 10:14:22
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.