plusieurs images aleatoires

louyoulou
Invité n'ayant pas de compte PHPfrance

31 mai 2012, 16:01

Ok je te remercie, je vais me pencher sur la doc que tu m'as donné et je mettrais en ligne ce que j'aurais fait. Si j'ai un soucis je reviendrais vers toi.
En tout cas merci pour ton aide.

kny
Eléphanteau du PHP | 47 Messages

31 mai 2012, 16:09

Avec plaisir!

Sinon j'oubliais:
Tu peux également exploiter les metadatas de tes fichiers images pour parvenir à un équivalent de "l'avantage XML", et ce en restant dans la lecture du dossier, SEULEMENT cela présume que tes fichiers soient de même encodage, car les extractions des metadatas sont différentes entre les .jpeg et les .png pour exemple.

louyoulou
Invité n'ayant pas de compte PHPfrance

01 juin 2012, 10:46

Voila mon code, j'ai préféré la technique scandir parce que je n'avais pas le temps nécessaire pour me pencher sur le XML, cela fonctionne bien, pas de doublon et pas de soucis si j'ai 60 images ou 10, tout va bien. Je pense que je testerais avec le XML quand j'aurais plus de temps devant moi. Kny je te remercie beaucoup pour ton aide, car sans toi je serais encore à m'arracher les cheveux.

<?php
		$path = 'images/'; // chemin vers le dossier contenant tes images (ne pas oublier le slash final)
	$tab = scandir($path); // Place tes images dans un tableau
	$tab = array_slice($tab, 2); // J'avais oublier que scandir listait . et .. donc on les vires aussi
	shuffle($tab); // Mélange le tableau
	$tab = array_slice($tab, 0, 3); // Garde les 3 premières images				

    $imageA = array_shift ( $tab ); // Pour chacune de mes div
    $imageB = array_shift ( $tab );
    $imageC = array_shift ( $tab );
	
	?>

<div id="bandeau_banniere_flottante" style="display: block;">
		
		
				<div class="container_pub_flottante">
					<?php   echo    "<div id='pub_flottante_main_container_1'>" .
            "<a href='' title='' alt=''>" .
            "<img src='images/" . $imageA . "' alt='Random Image' />" .
            "</a>" .
            "</div>" ?>

Eléphant du PHP | 267 Messages

02 juin 2012, 10:23

salut,

les 4 lignes suivantes sont inutiles et alourdissent ton code :
$tab = array_slice($tab, 0, 3); // Garde les 3 premières images                               

$imageA = array_shift ( $tab ); // Pour chacune de mes div
$imageB = array_shift ( $tab );
$imageC = array_shift ( $tab );
Tu peux donc les enlever.
En conséquence de quoi, tu dois modifier le code d'insertion des images comme suit :
<div id="bandeau_banniere_flottante" style="display: block;">
    <div class="container_pub_flottante">
<?php
for ( $i = 0; $i < 3; $i++ ) {
    echo ( "<div id='pub_flottante_main_container_".$i."'>" );
    echo ( "<a href='' title='' alt=''><img src='images/" . $tab[$i] . "' alt='Random Image' /></a>" );
    echo ( "</div>" );
}
?>
    </div>
</div>
@+
dix2

ViPHP
xTG
ViPHP | 7331 Messages

02 juin 2012, 10:38

Le array_slice est tout ce qui est inutile.
Je ne vois pas en quoi les trois autres instructions le sont.
Aurais-tu un benchmark pour prouver tes dires ? =P~

Eléphant du PHP | 267 Messages

02 juin 2012, 11:21

en fait, je ne comprends pas pourquoi stocker les 3 images dans 3 variables $imageA, $imageB et $imageC
alors qu'on peut utiliser le tableau $tab directement avec $tab[0], $tab[1] et $tab[2]

dix2

ViPHP
xTG
ViPHP | 7331 Messages

02 juin 2012, 11:28

L'auteur du sujet a besoin d'unicité (peut être pas assez détaillé sur ce forum, la faute au multi-postage ça...), donc pour ne pas les retirer une seconde fois il faut bien les enlever du tableau. ;)

Eléphant du PHP | 267 Messages

02 juin 2012, 11:40

si on prend les 3 images $tab[0], $tab[1] et $tab[2], l'unicité est respectée

ViPHP
xTG
ViPHP | 7331 Messages

02 juin 2012, 11:47

Pas pour un traitement ultérieur, à moins que tu gardes le dernier index tiré. ;)

Eléphant du PHP | 267 Messages

02 juin 2012, 11:50

ok, j'ai compris
je ne pensais pas qu'il y avait un autre traitement par la suite
dans ce cas, ok pour les array_shift()

dix2