Bien le bonjour,
J'ai un petit soucis pour un projet.
Je vais tenter d'expliquer mon cas
Donc en gros, j'ai déjà créer toute la partie pour uploader des images dans différents dossiers et mon objectif serait de récupérer toutes les images des dossiers (déjà fait le code va suivre) mais d'en sélectionner 3 mais aléatoirement (pour le moment je récupère les 3 premiers dans l'ordre alphabétique).
Note: désolé pour l'indentation de mon code, c'est du copier/coller
Petite explication du code :
- je vais dans le dossier gallery (qui contient plusieurs dossiers contenant des images [ex: test.jpg] et leur thumbail [ex: thumb_test.jpg] )
- je récupère toutes les images qui commencent par 'thumb_'
- à partir de la variable qui contient le chemin et le nom d'image (thumb), je fais en sorte de retirer les caractère 'thumb_' et donc d'avoir l'adresse de son image originale.
- enfin je fais une boucle pour afficher le tout (note j'ai utilisé un tableau pour tester)
Rappel de ce que je voudrais en plus :
- lorsque je récupère toutes adresses d'images, je voudrais en sélectionnez 3 aléatoirement.
- ou alors une solution alternative qui consomme moins de performance parce que là, j'ai fait à l'arrache mais j'ai pas d'autres solutions
Merci d'avance et bonne journée
Modifié par stunty (20 Apr 2009 - 11:17)
J'ai un petit soucis pour un projet.
Je vais tenter d'expliquer mon cas

Donc en gros, j'ai déjà créer toute la partie pour uploader des images dans différents dossiers et mon objectif serait de récupérer toutes les images des dossiers (déjà fait le code va suivre) mais d'en sélectionner 3 mais aléatoirement (pour le moment je récupère les 3 premiers dans l'ordre alphabétique).
Note: désolé pour l'indentation de mon code, c'est du copier/coller
<div class="bloc_right">
<h1>Images aléatoires</h1>
<div id="slider">
<?
function preg_ls ($path=".", $rec=false, $pat="/.*/") {
$pat=preg_replace ("|(/.*/[^S]*)|s", "\\1S", $pat);
while (substr ($path,-1,1) =="/") $path=substr ($path,0,-1);
if (!is_dir ($path) ) $path=dirname ($path);
if ($rec!==true) $rec=false;
$d=dir ($path);
$ret=Array ();
while (false!== ($e=$d->read () ) ) {
if ( ($e==".") || ($e=="..") ) continue;
if ($rec && is_dir ($path."/".$e) ) {
$ret=array_merge ($ret,preg_ls($path."/".$e,$rec,$pat));
continue;
}
if (!preg_match ($pat,$e) ) continue;
$ret[]=$path."/".$e;
}
return (empty ($ret) && preg_match ($pat,basename($path))) ? Array ($path."/") : $ret;
}
foreach ( preg_ls ("gallery", true, "/thumb/") as $file ) {
if ($cpt<3) {
$img_file = strstr($file, 'thumb_');
$img_file = substr($img_file, 6);
$needle = 'thumb_';
$l_path = substr($file, 0, strpos($file, $needle));
$img_file = $l_path . $img_file;
?>
<table border='0' cellspacing='0' cellpadding='0' align='center' style="float:left; width:150px; height:150px;"><tr><td valign="middle">
<a rel="random_img" class="open_fancy" href="<? echo $img_file; ?>"><img src="<? echo $file; ?>" /></a>
</td></tr></table>
<?
$cpt += 1;
}
else {
break;
}
}
?>
</div>
</div>
Petite explication du code :
- je vais dans le dossier gallery (qui contient plusieurs dossiers contenant des images [ex: test.jpg] et leur thumbail [ex: thumb_test.jpg] )
- je récupère toutes les images qui commencent par 'thumb_'
- à partir de la variable qui contient le chemin et le nom d'image (thumb), je fais en sorte de retirer les caractère 'thumb_' et donc d'avoir l'adresse de son image originale.
- enfin je fais une boucle pour afficher le tout (note j'ai utilisé un tableau pour tester)
Rappel de ce que je voudrais en plus :
- lorsque je récupère toutes adresses d'images, je voudrais en sélectionnez 3 aléatoirement.
- ou alors une solution alternative qui consomme moins de performance parce que là, j'ai fait à l'arrache mais j'ai pas d'autres solutions
Merci d'avance et bonne journée
Modifié par stunty (20 Apr 2009 - 11:17)