Affichage d'une donnée récupérée d'un fichier [Résolu]

Signaler
Messages postés
12
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
30 juin 2006
-
Messages postés
12
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
30 juin 2006
-
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

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
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...
Messages postés
239
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
3 juin 2010
1
il manque le '$' devant [nb-1]
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
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???"
Messages postés
239
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
3 juin 2010
1
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].
Messages postés
12
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
30 juin 2006

bien vu, mais meme quand le $ est rajouté, j'ai le meme soucis...
:(
Messages postés
12
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
30 juin 2006

L'ouverture du fichier est déjà traitée dans mon programme de la maniere suivante :

  if ($handle) {
..
...
..
 }else{echo "ouverture impossible
";}
Messages postés
12
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
30 juin 2006

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);"
Messages postés
239
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
3 juin 2010
1
 <?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";
}
?>
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
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???"
Messages postés
239
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
3 juin 2010
1
C'est quoi cette bétise ?
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
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???"
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
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.
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
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...
Messages postés
12
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
30 juin 2006

La solution était :

$playlist = array ();

merci à tous pour votre aide !!!