Une image au hasard parmi toutes les images d'un répertoires php/javascript

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 606 fois - Téléchargée 28 fois

Contenu du snippet

se code explore le dossier choisie (dossier comtenant les images) puit dresse une listes des fichiers ayant l'extention gif jpg, png, bmp (donc des images) dans le dossier puis combiner au javascript il affichie une image au hasard

Source / Exemple :


<?php

$nb_T = 0;

$opdir = opendir("./img/");
while ($T = readdir($opdir)) 
{
   if (!is_dir($T)) $nb_T++;
}

closedir($opdir);

?>
<script language='javascript'>
function alleatoire() {

// le nombre suivant correspond au nombre d'images total répertorier dans le répertoire
var nombre_images = <?=$nb_T?>;

// on demande un nombre alleatoire a l'ordinateur
var nombre_alleatoire = Math.random();
var numero = Math.round( ( nombre_images - 1 ) * nombre_alleatoire ) + 1;

images = new Array;

<?php
	
function trouverExt ($fichier)
   {
   // coupe le nom du fichier 
   $tableau = explode(".",$fichier);   
   
   // retourne les caractere apres le dernier .
   return $tableau[count($tableau)-1];
   }

	// open directory
	$myDirectory = dir("./img/");
			$nb_T = 1;
	// get each entry
	while($entryName = $myDirectory->read())
	{
	if($entryName  != '.')
	{
	if($entryName  != '..')
	{
	if($entryName  != 'thumbs.db')
	{
	if (!is_dir($entryName))
	{
	$extention = trouverExt($entryName);
	
	if($extention = 'gif' or $extention = 'jpg' or $extention = 'bmp' or $extention = 'png'){
	{
	
			print("images[$nb_T] = '$entryName';");
			$nb_T++;

	
	}
	}
	}
	}
	}
	}
	}
	// close directory
	$myDirectory->close();

?>

var image = images[numero];

document.write("<img src='./img/" + image + "'>");
}

alleatoire();
</script>

Conclusion :


merci de bien vouloir m'indiquer les bug éventuelle

la fonction trouveExt() n'est pas de moi, merci a romuluslepunk pour cette fonction

A voir également

Ajouter un commentaire

Commentaires

master dje
Messages postés
4
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
17 avril 2010
-
Je suis vraiment pas doué car aucune image ne s'affiche chez moi... j'ai inséré le code entier à l'endroit ou l'aperçut doit être, j'ai changé le dossier racine.
Le script ne m'affiche aucune erreur, il y a juste rien qui se passe xD

L'erreur vient d'ou ? j'ai re re re regardé aux chemins de mes images et c'est bon théoriquement.
Pascail
Messages postés
47
Date d'inscription
jeudi 17 octobre 2002
Statut
Membre
Dernière intervention
24 mars 2007
-
Je ne comprends pas l'utilisation du javascript.
Moi j'utilise un script du genre pour faire alterner des images, il est aussi simple que ça :

$y=0 ;
$handle = dir("./images/headers/");
while ($file = $handle->read()) {
if (($file != ".") && ($file != "..") && (strpos($file, ".jpg")!=false)) {
$y = $y+1 ;
$imag[$y] = $file ;
}
}
$handle->close();
$numb = rand(1,$y) ;

Et l'appel de l'url de l'image se fait de cette manière :
'./images/headers/'.$imag[$numb]
Ce n'est pas le script parfait, loin de là, incrémentations douteuses, vérifications mineures, mais il a le mérite d'être un peu moins compliqué ... Un peu.
cs_garfield90
Messages postés
389
Date d'inscription
lundi 7 juillet 2003
Statut
Webmaster
Dernière intervention
10 février 2009
-
# <?php
#
# $nb_T = 0;
#
# $opdir = opendir("./img/");
# while ($T = readdir($opdir))
# {
# if (!is_dir($T)) $nb_T++;
# }
#
# closedir($opdir);
#
#
# ?>

$nb_T te donne le nombre de fichier qui ne sont pas des repertoires, et tes fichiers qui ne sont pas des images seront pris en compte ( genre .htaccess, index.html, titi.php, ...)

ta verif est fausse au niveau du test sur les extensions:
if($extention 'gif' or $extention 'jpg' or $extention = 'bmp' or $extention = 'png')
or ca marcherai mieux avec des tu ouvres 2 fois ton dossier ( avec 2 parcours du contenu> mauvais algorithme) alors que tu aurais pu le faire qu'une fois ( en plus tu utilises 2 méthodes de parcours, ca au moins le mérite de montrer que ca existe)


Pour stroubinou, ce code est inutile, il suffit de rechercher les extensions qu'ils l'interessent et de faire ces opérations.

# if($entryName != '.')
# {
# if($entryName != '..')
# {
# if($entryName != 'thumbs.db')
# {
# if (!is_dir($entryName))
# {

Je ne parlerai pas ici du probleme de l'utilisation de l'extension ( car ce n'est pas de l'upload, mais le coeur y est , oups, c'est fait ;) )
stroubinou
Messages postés
95
Date d'inscription
mercredi 27 octobre 2004
Statut
Membre
Dernière intervention
1 décembre 2007
-
Salut!

Pourquoi
# if($entryName != '.')
# {
# if($entryName != '..')
# {
# if($entryName != 'thumbs.db')
# {
# if (!is_dir($entryName))
# {

Ca ne serait pas plus simple d'utiliser une seule condition, avec des and ?
Autre chose, ca n'aurait pas été plus simple de tout faire en php? parce que il y a quand meme des utilisateurs qui n'autorisent pas le javascript.

+++

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.