include dans un array [resolu]

include dans un array [resolu] - PHP - Programmation

Marsh Posté le 18-05-2005 à 11:01:59    

Bonjour :)
 
Je voudrais inclure dynamiquement le contenu d'un array, un peu comme ceci :
 

Code :
  1. $bla = array ( 1 =>
  2. include('bla.txt');
  3. );


 
et dans le bla.txt créé dynamiquement on a :
 

Code :
  1. 'blabla',
  2. 'blablabla',
  3. 'etc...',


 
Bien sur l'include casse le code et on a une erreur.
y'a t'il un moyen de faire ca correctement ?
 
Merci.


Message édité par gihel le 19-05-2005 à 13:17:30
Reply

Marsh Posté le 18-05-2005 à 11:01:59   

Reply

Marsh Posté le 18-05-2005 à 11:05:47    

Code :
  1. $bla = array(1=>"bla.txt", 2=>"pouet.txt" );
  2. include $bla[x];


 
 
C'est ca que tu veux ?
J'ai pas tout compris je crois

Reply

Marsh Posté le 18-05-2005 à 11:11:31    

En fait mon bla.txt ne contient que les entrées du tableau, mais pas le code autour pour le définir.
 
Alors je voudrais, dans ma page finale de présentation, inclure les entrée dans le $bla = array(ICI)

Reply

Marsh Posté le 18-05-2005 à 11:13:28    

gihel a écrit :

En fait mon bla.txt ne contient que les entrées du tableau, mais pas le code autour pour le définir.
 
Alors je voudrais, dans ma page finale de présentation, inclure les entrée dans le $bla = array(ICI)


 
 :heink:  
 
J'ai rien compris, donne un exemple c'est le mieux
 

Reply

Marsh Posté le 18-05-2005 à 11:13:52    

Rien compris non plus ...

Reply

Marsh Posté le 18-05-2005 à 11:14:34    

GaSPaRD77 a écrit :

Rien compris non plus ...


 Ca me rassure de pas être seul  

Reply

Marsh Posté le 18-05-2005 à 11:20:22    

en gros :
 

Code :
  1. $bla = array ( 1 =>
  2. ********ici mon bla.txt - je sais pas comment l'inclure sans casser la fonction array()****
  3. );


 
qui me donnera ce que je veux :
 

Code :
  1. $bla = array ( 1 =>
  2. 'blabla',
  3. 'blablabla',
  4. 'etc...',
  5. );

Reply

Marsh Posté le 18-05-2005 à 11:21:35    

en tu veux associer à un numéro, le contenu d'un fichier?

Reply

Marsh Posté le 18-05-2005 à 11:27:40    

Non je veux juste avoir cet array tout simple avec ses entrées.
En fait c'est juste un problème de "concaténation" de code, je sais pas comment dire ca...

Reply

Marsh Posté le 18-05-2005 à 11:29:38    

Comprend tjrs pas ...
 
Tu donnes un exemple où ton contenu de fichier est dans ton array, et après tu nous dis que tu veux pas associer le contenu d'un fichier au numéro...
 
Là je suis perdu ...

Reply

Marsh Posté le 18-05-2005 à 11:29:38   

Reply

Marsh Posté le 18-05-2005 à 11:33:12    

Tu ouvres ton fichier bla.txt et tu récupères son contenu que tu ajouteras dans ton tableau :
(je te mets le code issu de la doc php)
 

Code :
  1. <?php
  2.   $fd = fopen ("/tmp/inputfile.txt", "r" );
  3.   while (!feof ($fd)) {
  4.     $buffer = fgets($fd, 4096);
  5.     echo $buffer;
  6.   }
  7.   fclose ($fd);
  8. ?>

Reply

Marsh Posté le 18-05-2005 à 11:36:00    

GaSPaRD77 a écrit :

Comprend tjrs pas ...
 
Tu donnes un exemple où ton contenu de fichier est dans ton array, et après tu nous dis que tu veux pas associer le contenu d'un fichier au numéro...
 
Là je suis perdu ...


 
 
Moi non plus, toujours pas compris.
 

Reply

Marsh Posté le 18-05-2005 à 11:50:12    

GaSPaRD77 a écrit :

Comprend tjrs pas ...
 
Tu donnes un exemple où ton contenu de fichier est dans ton array, et après tu nous dis que tu veux pas associer le contenu d'un fichier au numéro...
 
Là je suis perdu ...


 
Désolé j'ai sans doute mal compris alors.
Bien sur que je veux que mes entrées soient associées à un numéro, c'est le but de mon array(). Mais mon problème n'est pas là.
 
Mon fichier texte est créé dynamiquement, les lignes sont construites toujours de la même manière (voir le premier post). Comme je sais pas rajouter le  * $bla = array ( etc * autour de mes données classées dans ce fichier texte, je veux le rajouter après coup, d'où l'idée de l'include() (voir toujours le premier post) mais ca casse la fonction.

Reply

Marsh Posté le 18-05-2005 à 11:52:12    

gihel a écrit :

Désolé j'ai sans doute mal compris alors.
Bien sur que je veux que mes entrées soient associées à un numéro, c'est le but de mon array(). Mais mon problème n'est pas là.
 
Mon fichier texte est créé dynamiquement, les lignes sont construites toujours de la même manière (voir le premier post). Comme je sais pas rajouter le  * $bla = array ( etc * autour de mes données classées dans ce fichier texte, je veux le rajouter après coup, d'où l'idée de l'include() (voir toujours le premier post) mais ca casse la fonction.


 
 
Lol toujours pas compris  :pt1cable:

Reply

Marsh Posté le 18-05-2005 à 11:54:00    

robbyone a écrit :

Tu ouvres ton fichier bla.txt et tu récupères son contenu que tu ajouteras dans ton tableau :
(je te mets le code issu de la doc php)


 
Merci de me mettre sur une piste ! :)
J'avais déjà penser à quelque chose comme ca, mais le même problème se posera quand je voudrai afficher la variable echo $buffer;  ca cassera la tableau  :(
J'ai fouiné du coté de eval() mais même problème...

Reply

Marsh Posté le 18-05-2005 à 12:00:13    

il faut pas 'afficher' ta variable mais la mettre dans ton tableau ..........

Reply

Marsh Posté le 18-05-2005 à 12:03:25    

Je ne sais pas si j'ai bien compris mais voici une solution :  
Il te suffit de parser ton fichier.
Tu lis d'abord ton fichier comme indiquer dans un post précédent.
ensuite tu utilises la fonction explode avec l'élément séparateur \n sur la variable qui a reçu le contenu du fichier
 
en espérant que ca puisse t'aider

Reply

Marsh Posté le 18-05-2005 à 12:16:24    

Merci pour votre aide ! Vous l'aurez compris je n'ai que des notions de progs  :sweat:  
 

denzz a écrit :

il faut pas 'afficher' ta variable mais la mettre dans ton tableau ..........


 
Ha, ca je sais pas faire.  :(  
 

ukyo81 a écrit :

Je ne sais pas si j'ai bien compris mais voici une solution :  
Il te suffit de parser ton fichier.
Tu lis d'abord ton fichier comme indiquer dans un post précédent.
ensuite tu utilises la fonction explode avec l'élément séparateur \n sur la variable qui a reçu le contenu du fichier
 
en espérant que ca puisse t'aider


 
Merci ! Mais je pense pas que ca puisse fonctionner. Dans mon fichier j'ai plusieurs retours chariots par entrée. C'est pour classer de petits textes.

Reply

Marsh Posté le 18-05-2005 à 12:17:13    

Pour rappel, pas besoin de explode sur le retour à la ligne puisque fgets le fait tout seul.
Il stoppe en fin de ligne et en fin de fichier
 
Par ailleurs, il y d'autre méthodes pour forcer l'index d'un tableau :
 

Code :
  1. $bla[1] = $buffer;
  2. $bla[3] = $buffer;


 
Si l'indice importe peu, il suffit de commencer à 1 et d'incrémenter.
Si tu as besoin d'un ordre précis, indique-le dans une liste que tu utiliseras dans le while ...
 

Code :
  1. while()
  2. { $bla[$order[$i]] = $buffer;
  3.   $i++;
  4. }


 
D'une manière générale : ne cherche pas à ne pas casser la fonction array !
Au contraire casse là : à partir de là, tu te sentiras beaucoup mieux et plus à l'aise.  :D

Reply

Marsh Posté le 18-05-2005 à 12:24:44    

robbyone a écrit :

Pour rappel, pas besoin de explode sur le retour à la ligne puisque fgets le fait tout seul.
Il stoppe en fin de ligne et en fin de fichier


 
Oui mais explode lui met directement les informations dans un tableau indexé.
 
Sinon pour le problème de plusieurs entrées avant le retour chariot, je te suggère de déterminer un élément séparateur lors de la génération de ton fichier dynamique.  

Reply

Marsh Posté le 18-05-2005 à 12:34:50    

Ha oui je comprends.
Récupérer les données du fichier texte, les tronçonner ligne par ligne, et rentrer chaque ligne dans une entrée du tableau.
 
Sauf que mes données ne sont pas ligne par ligne. C'est pour ca que dans mon fichier texte j'ai rajouté les quotes et la virgule pour différencier chaque entrée.
 
(Oui je sais, c'est une manière très... "personnelle" de faire  :whistle:)
 
Avec une fonction utilisateur peut être ? qui me crééra mon tableau avec les entrées du fichier texte dedans ?

Reply

Marsh Posté le 18-05-2005 à 12:37:32    

gihel a écrit :

Ha oui je comprends.
Récupérer les données du fichier texte, les tronçonner ligne par ligne, et rentrer chaque ligne dans une entrée du tableau.
 
Sauf que mes données ne sont pas ligne par ligne. C'est pour ca que dans mon fichier texte j'ai rajouté les quotes et la virgule pour différencier chaque entrée.
 
(Oui je sais, c'est une manière très... "personnelle" de faire  :whistle:)
 
Avec une fonction utilisateur peut être ? qui me crééra mon tableau avec les entrées du fichier texte dedans ?


 
ben tu prendles quotes et la virgule comme element sépérateur

Reply

Marsh Posté le 18-05-2005 à 12:39:54    

ukyo81 a écrit :

Oui mais explode lui met directement les informations dans un tableau indexé.
 
Sinon pour le problème de plusieurs entrées avant le retour chariot, je te suggère de déterminer un élément séparateur lors de la génération de ton fichier dynamique.


 
Haa oui merci :)
Ca me permettrait de générer un fichier sans les quotes et la virgule, ce serait plus propre en même temps.
 
Merci à tous pour toutes ces pistes, je vais essayer de plancher là dessus :).

Reply

Marsh Posté le 18-05-2005 à 15:18:09    

Tu dis avoir essaye l'eval, et ce dernier n'a pas fonctionne ? T'es sur ?
Parceque ce serait la methode la plus facile a metre en oeuvre :

Code :
  1. var $bla = file_get_contents("bla.txt" );
  2. var $test = eval('array('.$bla.');');
  3. print_r($test);


Le "1=>" n'est pas indispensable, a moins que tu en ai besoin pour autre chose.


Message édité par cerel le 18-05-2005 à 15:20:44
Reply

Marsh Posté le 18-05-2005 à 18:16:59    

cerel a écrit :

Tu dis avoir essaye l'eval, et ce dernier n'a pas fonctionne ? T'es sur ?
Parceque ce serait la methode la plus facile a metre en oeuvre :

Code :
  1. var $bla = file_get_contents("bla.txt" );
  2. var $test = eval('array('.$bla.');');
  3. print_r($test);


Le "1=>" n'est pas indispensable, a moins que tu en ai besoin pour autre chose.


 
Haaa, génial, c'est ce que je voulais faire à la base.
le "1=>" j'en ai besoin oui, j'ai codé la présentation en commençant par 1 (il affiche les entrées 1 à 5, puis les suivantes etc)
J'avais mal utilisé eval()  :(
 
Sinon, je viens d'essayer ca (mon code mis en situation) :
 

Code :
  1. $bla = file_get_contents("log.txt" );
  2. $article = eval('array( 1=>'.$bla.');');
  3. echo $article[1];


 
et il ne m'affiche rien... Si j'affiche $bla tout seul ca fonctionne.
Aucun message d'erreur  :??:
 
(Je sens que je suis près du but en tout cas, merci)

Reply

Marsh Posté le 19-05-2005 à 12:05:01    

Tel qu'est écrit mon fichier texte, le eval() est censé me donner ca :
 

Code :
  1. array( 1 => 'pommes', 'poires', 'scoubidou',);


 
Comme j'ai défini $article = eval('array etc...,  echo $article[1] doit me renvoyer pommes non ?
Là le eval() ne renvoit rien du tout.
 
Faut il utiliser une autre fonction, un return() ou autre ?
Pour récupérer le contenu de mon fichier texte j'ai utilisé file_get_contents() (merci Cerel :)). Ca a l'air de marcher puisque si j'affiche $bla (la variable qui récupère le contenu du fichier) je vois bien ce qu'il faut...
 
Je suis perdu, j'oublie surement quelque chose mais quoi ?

Reply

Marsh Posté le 19-05-2005 à 12:08:09    

fait un print_r sur ton tableau et post le résultat.

Reply

Marsh Posté le 19-05-2005 à 12:17:02    

Il ne m'affiche absolument rien justement  :(
 
Voilà exactement mon code :
 

Code :
  1. <?
  2. $bla = file_get_contents("log.txt" );
  3. $article = eval('array( 1 => '.$bla.');');
  4. print_r($article);
  5. ?>


 
et le log.txt :
 

Code :
  1. 'un deux trois',
  2. 'un deux trois',
  3. etc


 
Aucun résultat, page blanche, rien dans la source.

Reply

Marsh Posté le 19-05-2005 à 13:16:42    

Haaaa, enfin !
J'ai bataillé, j'ai fait plein d'essais... et apparemment on ne peut pas passer le résultat du eval() dans une variable (bizarre).
 
Bref, voilà le code valide :
 

Code :
  1. <?
  2. $bla = file_get_contents("log.txt" );
  3. eval('$article = array( 1 => '.$bla.');');
  4. print_r($article);
  5. ?>


 
Merci à tous  :hello:

Reply

Marsh Posté le 19-05-2005 à 14:43:04    

Verifie que ta derniere virgulle ne pose pas de problemes.

Reply

Marsh Posté le 19-05-2005 à 14:56:52    

Ca pose aucun problème.
J'avais déjà fait l'essai sur un array "statique"  :jap:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed