Php: probleme de lecture de fichier
Résolu
vincearoo
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
vincearoo Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
vincearoo Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Dans une page web j'utilise le code php suivant :
Le fichier "sequence.dat.php" contient une simple liste du type :
Chaque fichier "fichier_i.dat.php" comporte de multiple informations. La premiere ligne de chacun de ces fichiers est du type :
Ce code retourne :
En fait, quelle que soit l'ordre de la séquence ou le nombre d'éléments, seul le titre associé au dernier fichier de la liste est affiché ! Je ne comprends pas pourquoi...
Merci de votre aide !
Dans une page web j'utilise le code php suivant :
<?php $seq = fopen("albums/sequence.dat.php", "r"); while (!feof($seq)) { $album = fgets($seq); echo $album; $dat = fopen("albums/$album.dat.php", "r"); list($type,$titre,$nombre,$date) = explode('|',fgets($dat)); echo "($titre)"; fclose($dat); } fclose($seq); ?>
Le fichier "sequence.dat.php" contient une simple liste du type :
fichier_1 fichier_2 ... fichier_n
Chaque fichier "fichier_i.dat.php" comporte de multiple informations. La premiere ligne de chacun de ces fichiers est du type :
photo|peloche-i|36|jj-mm-aaaa
Ce code retourne :
fichier_1 ()fichier_2 ()fichier_3 () ... fichier_n(peloche-n)
En fait, quelle que soit l'ordre de la séquence ou le nombre d'éléments, seul le titre associé au dernier fichier de la liste est affiché ! Je ne comprends pas pourquoi...
Merci de votre aide !
A voir également:
- Php: probleme de lecture de fichier
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
3 réponses
Je ne pense pas que cela vienne de sa, mais il faut toujours séparé les variables, certe cela fonctionne dans les quotes, mais pas au top... Très mauvaise habitude
A part sa c'est le seul truc qui pour moi, pourrait ne pas marcher
Essaie avec les "or die" aussi
<?php $seq = fopen("albums/sequence.dat.php", "r"); while (!feof($seq)) { $album = fgets($seq) or die('Bug 5'); echo $album; if (!is_file('albums/'.$album.'.dat.php')) die('Bug 6'); $dat = fopen("albums/".$album.".dat.php", "r") or die('Bug 1'); $c_dat = fgets($dat) or die('Bug 2'); list($type,$titre,$nombre,$date) = explode('|', $c_dat) or die('Bug 3'); echo "(".$titre.")"; fclose($dat) or die('Bug 4'); } fclose($seq); ?>
A part sa c'est le seul truc qui pour moi, pourrait ne pas marcher
Essaie avec les "or die" aussi
Je crois avoir trouvé l'origine du problème ! Mais toujours pas la solution...
Lorsque le script lit le fichier "sequence.dat.php" il voit un espace a la fin de chaque ligne sauf la dernière. Du coup ma variable $album prend tour à tour la valeur "fichier_1 ", "fichier_2 ", ... , "fichier_n" et ma variable $dat pointe vers les fichiers "albums/fichier_1 .dat.php", "albums/fichier_2 .dat.php", ... , "albums/fichier_n.dat.php". Seul ce dernier existe.
Quelqu'un saurait-il comment contourner ce problème ? Mon éditeur de texte (wordpad /XP ou Kate /linux) ne voit bien sur aucun espace en fin de ligne.
Lorsque le script lit le fichier "sequence.dat.php" il voit un espace a la fin de chaque ligne sauf la dernière. Du coup ma variable $album prend tour à tour la valeur "fichier_1 ", "fichier_2 ", ... , "fichier_n" et ma variable $dat pointe vers les fichiers "albums/fichier_1 .dat.php", "albums/fichier_2 .dat.php", ... , "albums/fichier_n.dat.php". Seul ce dernier existe.
Quelqu'un saurait-il comment contourner ce problème ? Mon éditeur de texte (wordpad /XP ou Kate /linux) ne voit bien sur aucun espace en fin de ligne.
<?php $seq = fopen("albums/sequence.dat.php", "r"); while (!feof($seq)) { $album = fgets($seq); echo $album; for ($i = 0; $i < 2; $i = 0) { $c1 = (substr($album, -2) == "\r"); $c2 = (substr($album, -2) == "\n"); $c3 = (substr($album, -2) == "\t"); if (substr($album, -1) == ' ') $album = substr($album, 0, -1); elseif ($c1 || $c2 || $c3) $album = substr($album, 0, -2); else $i = 5; } $dat = fopen("albums/".$album.".dat.php", "r"); list($type,$titre,$nombre,$date) = explode('|',fgets($dat)); echo "(".$titre.")"; fclose($dat); } fclose($seq); ?>