Image aléatoire !

rezan16000 Messages postés 13 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 17 février 2005 - 16 févr. 2005 à 01:10
rezan16000 Messages postés 13 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 17 février 2005 - 16 févr. 2005 à 22:26
Bonjour, voila j'aurais aimé avoir une image qui apparaît
aléatoirement. Cependant j'aimerais que cette image soit tiré d'un des
multiples dossiers et ayant comme préfixe _thb_ et comme extension jpeg
ou jpg.



Les dossiers :

http://www.monsite.com/images/Chevaux/

http://www.monsite.com/images/Canaris/

http://www.monsite.com/images/Chats/

http://www.monsite.com/images/Chiens/



En conclusion, je cherche a trouver un script php qui permettrai d'afficher aléatoirement une seule image ayant pour préfixe _thb_ et .jpg ou .jpeg comme extension, tiré d'un des multiples dossiers, cités ci-dessus.



Merci d'avance à tous les volontaires !

17 réponses

JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
16 févr. 2005 à 02:24
Euh, j'ai posté un script dans les forums. Mais qui liste les musiques, aller je modifie un peut ...

Et ...


<?php



$mus = array();

$debut = '_thb_';

$ext_aut = array('.jpg', '.jpeg', '.gif'); // extension autorisées

$rep=@opendir('./musique/'); // On ouvre le repertoire musique

while ($file = @readdir($rep)){ // On liste le repertoire

$debut_fichier = substr($select, 0, strlen($debut));

if($file != '..' && $file !='.' && $file !='' && $debut_fichier == $debut) {



$ext = substr($file, strrpos($file, '.')-strlen($file)); // On prend l'extension du fichier

if(in_array($ext, $ext_aut)) { // On verifie que c'est un format accepté

$img[] = htmlentities($file); // Des accents et les caracteres 'chiant', il n'y en a plus !

}

}

}





if(count($img) == 0) { // Il y a aucune musique

echo 'Aucune images
';

} else {

$select_musique = rand(0, count($img)-1); // On selectonne au hasard

echo '
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
16 févr. 2005 à 08:37
Et après quelques correction, on obtient ca :


<?php

function liste_dir($ou) {

$debut = '_thb_';

$ext_aut = array('.jpg', '.jpeg', '.gif'); // extension autorisées

$rep=@opendir($ou); // On ouvre le repertoire musique

while ($file = @readdir($rep)){ // On liste le repertoire

$debut_fichier = substr($select, 0, strlen($debut));

if($file != '..' && $file !='.' && $file !='' && $debut_fichier == $debut) {



$ext = substr($file, strrpos($file, '.')-strlen($file)); // On prend l'extension du fichier

if(is_dir($file)) {

liste_dir($ou . '/' . $file);

} else if(in_array($ext, $ext_aut)) { // On verifie que c'est un format accepté

$img[] = htmlentities($file); // Des accents et les caracteres 'chiant', il n'y en a plus !

}

}

}

return $img;

}



$img = liste_dir('./img/');



if(count($img) == 0) { // Il y a aucune musique

echo 'Aucune images
';

} else {

$select_musique = rand(0, count($img)-1); // On selectonne au hasard

echo '
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
16 févr. 2005 à 08:38
Oups, je n'ai pas remplacé musique par image !

<hr size="2" width="100%">Si ma reponse te conviens, accepte la. Merci.

Je suis né pour aider, et non pour vivre. Aidez moi !

Attention, L'abus de PHP n'est pas dangeureux pour la santé, à consommer sans moderation !
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
16 févr. 2005 à 13:02
Salut


Heu je pense pas que ça fonctionnera ton système à la fin...



ça devrait être mieux :



echo 'src="', $img[$select_musique], '" />';




Ensuite le htmlentities est inutile vu qu'il peut modifier le nom d'un fichier, l'image sera ainsi inaccessible.



a +


Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique

Forum d'entraide informatique (14 catégories)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
16 févr. 2005 à 13:03
Salut


Heu je pense pas que ça fonctionnera ton système à la fin...



ça devrait être mieux :



echo 'src="', $img[$select_musique], '" />';




Ensuite le htmlentities est inutile vu qu'il peut modifier le nom d'un fichier, l'image sera ainsi inaccessible.



a +


Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique

Forum d'entraide informatique (14 catégories)
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
16 févr. 2005 à 13:54
Oups, merci !



<hr style="width: 100%; height: 2px;">ATTENTION, L'abus de PHP, n'est pas dangereux. !! A consommer sans moderation !! Et a consommer de preference avant la fin du monde ...
0
rezan16000 Messages postés 13 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 17 février 2005
16 févr. 2005 à 15:24
Merci à tous mais le script me trouve une erreur à la ligne 18 :






Notice: Undefined variable: img in c:\program files\easyphp-1.7\www\site\images\aleatoire.php on line 18


Aucune Images
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
16 févr. 2005 à 16:36
Bonjours, alors, ajoute ca :

$img = '';

apres

$debut = '_thd_';




Et voila !




<hr>
0
rezan16000 Messages postés 13 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 17 février 2005
16 févr. 2005 à 18:14
Vous allez me prendre pour un débutant, mais aucune images ne s'affiche ! Tenez prenez mon url pour exemple :



URL d'exemple : http://membres.lycos.fr/rezan16000/images/aleatoire.php

Code Source de aleatoire.php : http://membres.lycos.fr/rezan16000/images/source.txt

Explications :



Le répertoire images (http://membres.lycos.fr/rezan16000/images/)
contient 2 dossiers nommés "chats"
(http://membres.lycos.fr/rezan16000/images/chats/) et "chiens"
(http://membres.lycos.fr/rezan16000/images/chiens/) contenant chacun
des fichiers images ayant pour début _thb_ et pour extension .gif



Ce que je demande par ce message c'est pourquoi le script php ne
fonctionne pas ? Merci d'avance à tous les volontaires qui veulent bien
m'aider à réaliser mon projet.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
16 févr. 2005 à 18:18
C'est normal, dans ce cas faut faire une fonction récursive qui ouvre les sous dossiers ;-)



Car cette fonction ne peut pour l'instant que scanner les fichiers contenus dans un dossier mais pas ses sous dossiers.



a ++


Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique

Forum d'ent
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
16 févr. 2005 à 18:25
Deja tu peux remplacer :
htmlentities($file);

par :
$ou . htmlentities($file);

et
$img = '';
par
$img = array();

Euh Anthomicro, elle le fait ! lol


<HR>
ATTENTION, L'abus de PHP, n'est pas dangereux. !! A consommer sans m</html>
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
16 févr. 2005 à 18:46
Ah ouais, le problème est que les fonctions (je sais pas si chez vous
ça le fait ou non) is_file et is_dir déconnent (sur mon hébergement ça
foire aussi)...

Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique

Forum d'ent
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
16 févr. 2005 à 18:49
a ! moi non ! Ca fontionne parfaitement, mais alors y'a t-il une solution ?



<hr>
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
16 févr. 2005 à 18:58
Bah ta fonction fonctionne normalement, mais pas sur tous les hébergements (saleté de fonction is_file et is_dir...)

Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique

Forum d'ent
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
16 févr. 2005 à 22:05
Ou sinon, on peut tester si on trouve un point dans le fichier, alors c'est un fichier, sinon c'est un dossier ! non ?



<hr>
0
rezan16000 Messages postés 13 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 17 février 2005
16 févr. 2005 à 22:14
Pour vous aider, voici un code que j'ai trouvé sur www.nexen.net :



function imagerep_aleatoire(){

// Configuration

$nbrep=6; // doit être impérativement égal aux nombres de répertoires

total !

$nomrep[1]="photos/photos_lan_01"; // Répertoire 1 | Vous pouvez rajouter

des répertoires..

$nomrep[2]="photos/photos_lan_02"; // Répertoire 2 | ..mais n'oubliez pas

de rajouter +1..

$nomrep[3]="photos/photos_lan_03"; // Répertoire 3 | ..à $nbrep sinon

votre répertoire ne..

$nomrep[4]="photos/photos_lan_05"; // Répertoire 4 | ..sera pas générer

aléatoirement..

$nomrep[5]="photos/photos_lan_06"; // Répertoire 5 | ..et donc ne servira

à rien dans ce..

$nomrep[6]="photos/photos_lan_07"; // Répertoire 6 | ..code >;o). Ne

mettez pas de slash à la fin.

$typefichiers="jpg|jpe|jpeg|gif|png"; // Extensions de fichiers à lister,

séparer par "|"

$urlfile="?page=photos"; // Lien ou mène l'image lorsqu'on clique dessus (

exemple : "http://www.site.com" ou "../photos" ou "photos.php" ou etc... )

//## Fin de la configuration



// Génére un répertoire aléatoirement

$repgeneralea=rand(1, $nbrep);

$repgener="$nomrep[$repgeneralea]/petit/";

//## Fin de la génération du répertoire



// Ouverture puis listing du répertoire

$repopen=opendir($repgener);



while ($filesource=readdir($repopen))

{

if (eregi("\.($typefichiers)$", $filesource)) $filelist[]=$filesource;

}

closedir($repopen);

//## C'est listé, on ferme le répertoire



// Création du chemin et de l'image aléatoire ( chemin/image.ext ; exemple :

"rep_01/alea_49_petit.gif" )

$filealeatoire=$repgener.$filelist[floor(rand(0, count($filelist)-1))];

// Fin de la création



// On affiche le résultat

echo ( '[' . $urlfile . ' ]' ) ;

//## The end >;o)

}



Ce script gére apparemment les multiples dossiers, mais encore faut-il
ajouter à chaque fois un dossier puis le nombre total de dossiers, ...
Enfin à ne plus en finir et de plus il ne gére pas les débuts de
fichiers (_thb_). Si ce script peut vous aider à réaliser mon projet
qui jusqu'ici ne fonctionne pas. Merci d'avance.
0
rezan16000 Messages postés 13 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 17 février 2005
16 févr. 2005 à 22:26
J'ai trouvé aussi un script pour afficher les images d'un répertoire si ça peut aider quelqu'un :

http://www.nexen.net/scripts/details.php?scripts=988
0
Rejoignez-nous