Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Trier les images d'un dossier par leur nom (datés) [ résolu ]


Messages recommandés

Posté(e) (modifié)

Bonjour à tous,

 

Suite à un upload, je voudrais que ma page m'affiche les 10 dernières images uploadées dans le dossier, pour cela j'utilise un script bien pratique mais malheureusement il ne tri pas par date, En sachant que mes fichier sont enregistrés sous cette forme ( 180609_collage.jpg ) soit -> " $date."_".$name;" .Comment faire ?

 

Voici le script :

 

<?php

$dir="../images_general/img_news/img_news_original"; //dossier de recherche 
$imax = 10; //nb d'images à afficher
$i = 0; 

$dossier=opendir($dir);
while($fichier=readdir($dossier) AND $i < $imax){
	$berk=array('.', '..');
		if(!in_array($fichier,$berk)){
		$lien=$dir.'/'.$fichier;
		$i=$i+1;
		print '<div style="float:left;min-height:75px;">';
			if(file_exists($lien)){
				print '<img src="'.$lien.'" alt="'.$fichier.'"  style="padding: 10 10 10 10;width:100px;height:100px;"/><br />';
			}
		print '</div>';
	}
}
?>

 

Donc je pense qu'il faut prendre les 6 premiers caractères, puis les trier, mais je ne sais pas comment faire :s

 

Merci d'avance pour vos réponses :P

Modifié par julien88

  • Modérateurs
Posté(e)

Salut Julien,

 

Pour commencer, si tu veux trier sur une date, il va falloir qu'elle se présente dans le bon format, c'est-à-dire AAMMJJ (et non pas JJMMAA comme le laisse penser ton exemple 180609). Donc, si tes noms de fichiers sont imposés, il te faudra fabriquer le critère de tri en inversant la date.

 

Ensuite, il te reste à chercher s'il existe en PHP une fonction de tri d'un tableau, genre $berktri=sort($berk). Sinon, tu devras le programmer, ce tri...

 

Excuse-moi d'être assez général, mais je connais très mal PHP.

Posté(e) (modifié)

Voila j'ai changé mon mode de nomage en date("ymd"), mais pour la suite je sais pas comment faire :P

Merci beaucoup dylav d'essayer de m'aider, c'est très sympa :P

----------------------------------------------------------------------------------------------------------------

 

Petit test du nouveau code :

 

<?php

$dir="../images_general/img_news/img_news_original"; //dossier de recherche 
$imax = 10; //nb d'images à afficher
$i = 0; 

$dossier=opendir($dir);
while($fichier=readdir($dossier) AND $i < $imax){
	$berk = array('.', '..');
	$berktri=sort($berk);
		if(!in_array($fichier,$berktri)){
		$lien=$dir.'/'.$fichier;
		$i=$i+1;
		print '<div style="float:left;min-height:75px;">';
			if(file_exists($lien)){
				print '<a href="?vwimg='.$lien.'"><img src="'.$lien.'" alt="'.$fichier.'"  style="border:0;padding: 10 10 10 10;width:100px;height:100px;"/></a><br/>';
			}
		print '</div>';
	}
}
?>
<a href="#" Onclick="document.location.reload();"><img style="float:right;border:0;margin-right:20px" src="../structure/images/actualiser.png" alt="actualiser"/></a>

 

Résultat :

 

une vrai image du dossier
Warning: in_array() [function.in-array]: Wrong datatype for second argument in /var/www/admin/affimage.php on line 11
[.] "<- image avec . dedans"

Warning: in_array() [function.in-array]: Wrong datatype for second argument in /var/www/admin/affimage.php on line 11
[..] "<- image avec .. dedans"

Warning: in_array() [function.in-array]: Wrong datatype for second argument in /var/www/admin/affimage.php on line 11

une autre vrai image du dossier

 

------------------------------------------------------------------------------------------------------

 

Je viens de me rendre compte que trier $berk servait complètement à rien :P

Modifié par julien88
Posté(e)

C'est tout à fait normal : la fonction sort() retourne un booléen.

Le tri est effectué sur le tableau (car le tableau est passé par adresse et non par valeur), donc les données triées sont à aller chercher dans $berk (quel super nom de variable, au passage !)

Posté(e)
http://us2.php.net/manual/en/function.sort.php :P

Tu fais sort($tonTableau) et les éléments de $tonTableau sont triés !

 

Je n'y comprend plus rien, j'ai pris mon script sur un site et je l'ai légèrement modifié mais je ne sais pas quoi trier et comment ! :P

 

S'il te plait si tu pouvais me donner la solution ça serait cool car je suis paumé :P

 

 

<?php

$dir="../images_general/img_news/img_news_original"; //dossier de recherche 
$imax = 10; //nb d'images à afficher
$i = 0; 

$dossier=opendir($dir);
while($fichier=readdir($dossier) AND $i < $imax){
	$berk = array('.', '..','Thumbs.db');
		if(!in_array($fichier,$berk)){
		$lien=$dir.'/'.$fichier;
		$i=$i+1;
		print '<div style="float:left;min-height:75px;">';
			if(file_exists($lien)){
				print '<a href="upload/img.php?rdimg='.$fichier.'"><img src="'.$lien.'" alt="'.$fichier.'"  style="border:0;padding: 10 10 10 10;width:100px;height:100px;"/></a><br/>';
			}
		print '</div>';
	}
}
?>
<a href="#" Onclick="document.location.reload();"><img style="float:right;border:0;margin-right:20px" src="../structure/images/actualiser.png" alt="actualiser"/></a>

Posté(e)

...
$tab_fichier = array();
$berk = array('.', '..','Thumbs.db');   //définition du tableau des éléments interdits

while($fichier=readdir($dossier) ){

  //si $fichier n'est pas un élément interdit, on l'ajoute au tableau
  if(!in_array($fichier,$berk)){
array_push($tab_fichier,$fichier);
  }
}

//tri du tableau par ordre décroissant, non conservation des index
rsort($tab_fichier):

//parcours du tableau trié
foreach($tab_fichier as $key=>$fichier) {
  //affichage des 10 premiers éléments du tableau
if ($key<10) {
	$lien=$dir.'/'.$fichier;
	echo '<div style="float:left;min-height:75px;">';
	if(file_exists($lien)){
		echo '<a href="upload/img.php?rdimg='.$fichier.'"><img src="'.$lien.'" alt="'.$fichier.'"  style="border:0;padding: 10 10 10 10;width:100px;height:100px;"/></a><br/>';
	}
	echo '</div>';
	}
}
...

 

http://www.php.net/manual/fr/array.sorting.php

Posté(e) (modifié)

Merci pour ta réponse greywolf :P

 

J'en ai même profité pour ajouter un bouton pour en voir plus et pour en voir moins :P

 

Si sa peu servir à quelqu'un :

 

<div style="width:90%;float:left">
<?php

$keyplus=5;

if(isset($_GET['key'])){

	if($_GET['key'] == "10"){
	$keyplus=10;
	}
	elseif($_GET['key'] == "5"){
	$keyplus=5;
	}

}

$tab_fichier = array();
$dir="../images_general/img_news/img_news_original"; //dossier de recherche 
$dossier=opendir($dir);
$berk = array('.', '..','Thumbs.db');

while($fichier=readdir($dossier) ){

  if(!in_array($fichier,$berk)){
array_push($tab_fichier,$fichier);
  }
}

//tri du tableau par ordre décroissant, non conservation des index
rsort($tab_fichier);

//parcours du tableau trié
foreach($tab_fichier as $key=>$fichier) {
  //affichage des 10 premiers éléments du tableau
if ($key<$keyplus) {
	$lien=$dir.'/'.$fichier;
	echo '<div style="float:left;min-height:75px;">';
	if(file_exists($lien)){
		echo '<a href="upload/img.php?rdimg='.$fichier.'"><img src="'.$lien.'" alt="'.$fichier.'"  style="border:0;padding: 10 10 10 10;width:100px;height:100px;"/></a><br/>';
	}
	echo '</div>';
	}
}

?>
</div>
<a href="#" Onclick="document.location.reload();"><img style="float:right;border:0;margin-right:20px" src="../structure/images/actualiser.png" alt="actualiser"/></a>
<br/><br/><br/>
<a href="?key=10"><img style="float:right;border:0;margin-right:25px" src="../admin/images/plus.jpg" /></a>
<br/><br/>
<a href="?key=5"><img style="float:right;border:0;margin-right:25px" src="../admin/images/moins.jpg" /></a>

Modifié par julien88

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...