Affichage d'une donnée récupérée d'un fichier

Résolu
blue_jim Messages postés 12 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 30 juin 2006 - 28 juin 2006 à 11:23
blue_jim Messages postés 12 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 30 juin 2006 - 30 juin 2006 à 09:08
J'ai un probleme d'affichage ou de stockage de donnée que je n'arrive pas à résoudre :
mes données sont récupérées de 10 fichiers différents et stockées dans un tableau "$playlist[]"

Le probleme est que je n'arrive pas à afficher mes données à certains endroits du programme :

  <?php
//BOUCLE D'OUVERTURE ET DE LECTURE DES FICHIERS



For ($nb=1; $nb<=10; $nb++){



 $nomfichier[$nb-1]="pos".$nb.".txt";
 $handle = @fopen($nomfichier[$nb-1],"r");
 $playlist[nb-1] = "";



echo $nomfichier[$nb-1]."
";
 if ($handle) {
  while (!feof($handle)) {
    $playlist[nb-1] = fgets($handle, 4096);
  echo $playlist[nb-1]."
"; // ICI L'AFFICHAGE MARCHE
  }
 fclose($handle);
 }else{echo "ouverture impossible
";}
}



For ($nb=1; $nb<=10; $nb++){
  echo $playlist[nb-1]."
"; //ICI L'AFFICHAGE NE MARCHE PAS
}
?>

14 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 juin 2006 à 12:57
Hello,

avant le 1er for (), définis ton tableau :
$playlist = array ();

Parce que là, tu le définis la première fois dans ton 1er for (). Tu n'as jamais entendu parlé de la portée des variables...? ;-)
Bref, $playlist est une variable INTERNE à ton 1er for ().
Une fois sorti de ce for(), cette variable n'existe plus...
3
DiGhan Messages postés 239 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 3 juin 2010 1
28 juin 2006 à 11:32
il manque le '$' devant [nb-1]
0
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
28 juin 2006 à 11:35
Yop!
Tu n'as pas tenu compte de ma remarque sur la vérification de l'ouverture du fichier:
if( !$handle )
  // ici le fichier n'est pas ouvert, pas la peine d'essayer de le lire

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
DiGhan Messages postés 239 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 3 juin 2010 1
28 juin 2006 à 11:36
D'ailleurs le '$' de nb est manquant un peu partout dans ton script.
Petite remarque, initialiser $nb à 0 dans ta boucle for() t'eviteras de faire [$nb-1].
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
blue_jim Messages postés 12 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 30 juin 2006
28 juin 2006 à 11:37
bien vu, mais meme quand le $ est rajouté, j'ai le meme soucis...
:(
0
blue_jim Messages postés 12 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 30 juin 2006
28 juin 2006 à 11:39
L'ouverture du fichier est déjà traitée dans mon programme de la maniere suivante :

  if ($handle) {
..
...
..
 }else{echo "ouverture impossible
";}
0
blue_jim Messages postés 12 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 30 juin 2006
28 juin 2006 à 11:49
mes fichiers sont "pos1.txt" à "pos10.txt", or je stocke mes valeurs dans un tableau allant de playlist[0] à playlist[9],
voila le pourquoi du comment de mon "$nb-1"

cf :

$nomfichier[$nb-1]="pos".$nb.".txt";

ainsi, d'apres mon programme, la valeur de fichier pointée par "$nomfichier[$nb-1]" est "playlist[$nb-1]"

d'ou la valeur de playlist[0] qui renvoi à pos1.txt.

En ayant corrigé les erreurs que vous m'avez annoncées, je ne trouve toujours pas l'erreur.

Ma premiere ligne    echo $playlist[$nb-1]."
";m'affiche bien le contenu de mes fichiers

Mais la deuxieme qui est identique n'affiche rien.

On croirait que le tableau playlist[] est vidé quand je ferme mes fichiers : " fclose($handle);"
0
DiGhan Messages postés 239 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 3 juin 2010 1
28 juin 2006 à 12:12
 <?php
for ($nb=0; $nb<10; $nb++){
   $nomfichier[$nb]="pos".($nb+1).".txt";
   $handle = fopen($nomfichier[$nb],"r");
   echo "$nomfichier[$nb]
";
 
   if ($handle) {
      while (!feof($handle)) {
      $playlist[] = fgets($handle,4096);
      }
      fclose($handle);
   } else {
      echo "ouverture impossible
";
   }
}
// affichage des données
foreach ($playlist as $buffer) {
 echo "$buffer
\n";
}
?>
0
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
28 juin 2006 à 12:38
dsl, je n'avais pas vu pr $handle...
Et si tu remplaces:
$playlist[$nb-1] = fgets($handle, 4096);

Par:
$playlist[$nb-1] .= fgets($handle, 4096);

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
DiGhan Messages postés 239 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 3 juin 2010 1
28 juin 2006 à 13:07
C'est quoi cette bétise ?
0
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
28 juin 2006 à 13:23
Mmmmh, et vive les l'error_reporting à E_ALL

www.allpotes.ch: Photos, humour, vidéos, gags, ...
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 juin 2006 à 13:31
Heu oups, j'étais entrain de coder dans un autre langage et je me suis emporté en confondant le fonctionnement des 2, désolé!
ceci dit, error_reporting à E_ALL serait une bonne idée ouais.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 juin 2006 à 13:47
En plus, je viens de tester, et ça :
<?php


for ($i = 1; $i <= 10; $i++) {
 file_put_contents ('pos'.$i.'.txt', 'blabma'.$i."\r\n".'blibli'.$i);
}
//BOUCLE D'OUVERTURE ET DE LECTURE DES FICHIERS


For ($nb=1; $nb<=10; $nb++){


 $nomfichier[$nb-1]="pos".$nb.".txt";
 $handle = @fopen($nomfichier[$nb-1],"r");
 $playlist[$nb-1] = "";


echo $nomfichier[$nb-1]."
";
 if ($handle) {
  while (!feof($handle)) {
    $playlist[$nb-1] .= fgets($handle, 4096);
  echo $playlist[$nb-1]."
"; // ICI L'AFFICHAGE MARCHE
  }
 fclose($handle);
 }else{echo "ouverture impossible
";}
}


For ($nb=1; $nb<=10; $nb++){
  echo $playlist[$nb-1]."
"; //ICI L'AFFICHAGE NE MARCHE PAS
}
?>

ça marche chez moi...
0
blue_jim Messages postés 12 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 30 juin 2006
30 juin 2006 à 09:08
La solution était :

$playlist = array ();

merci à tous pour votre aide !!!
0
Rejoignez-nous