ninho44
Messages postés86Date d'inscriptionvendredi 18 janvier 2008StatutMembreDernière intervention19 juin 2009
-
12 juin 2008 à 14:37
ninho44
Messages postés86Date d'inscriptionvendredi 18 janvier 2008StatutMembreDernière intervention19 juin 2009
-
12 juin 2008 à 17:49
Bonjour a tous,
Voila alors j'ai un petit souci en PHP et n'étant pas encore très doué je fais appel à vos talents.
Mon problème est que sur une de mes pages de mon site, j'affiche le contenu de tous les fichiers d'un répertoire. Mais ces fichiers s'affcihe par ordre alphabétique et non pas par ordre de date de création comme je le souhaite...Je sais qu'il fat faire un tableau pour trier les fichiers mais le prblème est que je n'y arrive vraiment pas ...
voici ma fonction qui me permet de parcourir le dossier et de connaitre les fichiers contenu:
function ParcourRepertoire($Chemin, $ProfondeurMax -1 , $Mode "TOUT", $P = 0)
{
if(substr($Chemin, strlen($Chemin) - 1) != '/')
$Chemin .= '/';
$ListeRep = array();
if($Mode != "FICHIERS")
$ListeRep[] = $Chemin;
if($handle = opendir($Chemin))
{ while(false !($Fichier readdir($handle)))
{
if($Fichier != '.' && $Fichier != '..')
{
$Fichier = $Chemin . $Fichier;
if(! is_dir($Fichier))
{
if($Mode != "REPERTOIRES")
$ListeRep[] = $Fichier;
}
elseif($P >=0 && ($P < $ProfondeurMax || $ProfondeurMax < 0))
{
$result = ParcourRepertoire($Fichier . '/', $ProfondeurMax, $Mode, $P + 1);
$ListeRep = array_merge($ListeRep, $result);
}
}
}
closedir($handle);
}
if($P == 0 )
natcasesort($ListeRep);
return($ListeRep);
}
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20102 12 juin 2008 à 16:27
L'ordre ? Tu veux dire c'est du plus vieux au plus recent, ou du plus recent au plus vieux ?
Sinon, tu faits un :
$result = array_reverse($result);
qui va tout retourner ^^
<hr />Si ma reponse te convient, merci de l'accepter !
//$TailleTab = count($resultat);
// plus obligatoire avec un foreach (regarde la doc ;)), seulement sit u veux afficher le nombre de fichier
foreach( $resultat as $editTime
{
if( !is_dir($resultat[$i]))
{
/* Debut du script d'affichage du contenu du fichier */
$fichier = file($file); // Nom du fichier à afficher
// Pas la peine de faire "$var", un simple $var suffit
$total = count($fichier); // Nombre total des lignes du fichier
// Départ de la boucle
// Ici aussi, tu peux mettre une boucle foreach
foreach( $fichier as $line => $text )
echo '
----
', $line, ',
', $text, ',
';
// On affiche ligne par ligne le contenu du fichier
}
echo '
';
// Fin de la boucle
/* Fin du script d'affichage du contenu du fichier */
}
}
Après, je vois aps d'autres erreurs !
<hr />Si ma reponse te convient, merci de l'accepter !
ninho44
Messages postés86Date d'inscriptionvendredi 18 janvier 2008StatutMembreDernière intervention19 juin 2009 12 juin 2008 à 15:08
Salut..
Ben en fait non,ca ne marche pas!! Ca ma fait une fausse joie!!
je viens de tester ça:
function cmp($a,$b) {
if ($a[1] == $b[1])
return 0;
return ($a[1] < $b[1]) ? -1 : 1;
}
usort($ListeRep, "cmp");
Ca ma changer l'ordre mais c'est toujours pas le bon ... Saurais-tu m'expliquer le plus simplement possible comment mettre tous les fichiers dans un tableau et les trier en fonction de leur date ensuite ? STP..
Vous n’avez pas trouvé la réponse que vous recherchez ?
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20102 12 juin 2008 à 15:47
Re,
as tu essayé avec mon script ? (je l'ai testé, il marche)
Sinon, le principe c'est d'explorer ton dossier.
Tu récupère donc les fichiers. Mais tu dois utiliser la fonction filemtime() pour connaitre leur date d'édition. Donc on crée un Array() avec comme nom le fichier et comme valeur la date de modification (pas l'inverse car plusieurs fichiers peuvent être édités en même temps).
Ensuite, on trie le tableau en fonction de la valeur, c'est à dire avec la fonction asort() (ou autre)
<hr />Si ma reponse te convient, merci de l'accepter !
ninho44
Messages postés86Date d'inscriptionvendredi 18 janvier 2008StatutMembreDernière intervention19 juin 2009 12 juin 2008 à 16:03
Oui ton script je l'ai bien testé...mais il y a un probleme. Je t'explique:
J'enregistre toutes mes pages de script de mon site dans un répertoire (ton script scan ce répertoire en fait), et dans ce répertoire, il y a un dossier avec des fichiers que je veux afficher selon leur date de création.
Ton script me scan pas le bon répertoire...
ninho44
Messages postés86Date d'inscriptionvendredi 18 janvier 2008StatutMembreDernière intervention19 juin 2009 12 juin 2008 à 16:54
Arf..je vais ravoir besoin d'aide... Tout à l'heure quand les fichiers n'étaient pas triés, et avec ma fonction ParcourRépertoire, ce code marchait pour l'affichage mais la avec ton scrpt je crois que ça ne s'adapte pas...
for($i= 0;$i<$TailleTab;$i++)
{
if(! is_dir($ resultat [$i]))
{
/* Debut du script d'affichage du contenu du fichier */
$fichier = file("$resultat[$i]"); // Nom du fichier à afficher
$total = count($fichier); // Nombre total des lignes du fichier
for($j = 0; $j < $total; $j++)
{ // Départ de la boucle
echo (' ----
'.$fichier[$j].',
'); // On affiche ligne par ligne le contenu du fichier
} // Fin de la boucle
/* Fin du script d'affichage du contenu du fichier */
}
}/* Fin de la boucle */
Tu peux encore m'aider sur ce coup là ?? lerreur renvoyer concerne tous ce qu'il y a en gras.
//$TailleTab = count($resultat);
// plus obligatoire avec un foreach (regarde la doc ;)), seulement sit u veux afficher le nombre de fichier
foreach( $resultat as $file )
{
if( !is_dir($resultat[$i]))
{
/* Debut du script d'affichage du contenu du fichier */
$fichier = file($file); // Nom du fichier à afficher
// Pas la peine de faire "$var", un simple $var suffit
$total = count($fichier); // Nombre total des lignes du fichier
ninho44
Messages postés86Date d'inscriptionvendredi 18 janvier 2008StatutMembreDernière intervention19 juin 2009 12 juin 2008 à 17:22
Alors je viens de tester ca...il y a tout plein de jolie erreur...en anglais -_-'
je te les montre:
Notice: Array to string conversion
Warning: file(1213280941): failed to open stream: No such file or directory
Warning: Invalid argument supplied for foreach()
//$TailleTab = count($resultat);
// plus obligatoire avec un foreach (regarde la doc ;)), seulement sit u veux afficher le nombre de fichier
foreach( $resultat as $file => $editTime )
{
if( !is_dir($resultat[$i]))
{
/* Debut du script d'affichage du contenu du fichier */
$fichier = file($file); // Nom du fichier à afficher
// Pas la peine de faire "$var", un simple $var suffit
$total = count($fichier); // Nombre total des lignes du fichier