IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Afficher plusieurs images aléatoirement dans des endroits différents


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Afficher plusieurs images aléatoirement dans des endroits différents
    Salut,
    Débutant en PHP j'ai besoin de votre aide.
    J'aimerais afficher 3 images différentes de manière aléatoire, ces trois images proviennent d'un même dossier, et je ne veux pas trouver 2 fois la même image en même temps.

    J'ai trouvé ce code qui marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?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
    ?>
     
    <div id="Espace_foto">
    	<div id="SMEspace_foto">
    		<?php
    		// Enfin on fait une boucle du tableau pour l'affichage	
    		//echo '<div class="float_foto">';
    		foreach($tab as $img)
    		echo '<div class="float_foto"><img src="'.$path.$img.'" alt="" /> ';
    		echo '</div>';
    		?>
    	</div>
    </div>
    Cependant il m'affiche mes images à la suite, alors que j'aimerais que ces trois images s'affichent dans trois endroits bien différent, car je souhaite que chacune de ces images ai un style CSS bien particulier.

    Merci d'avance pour votre aide.

  2. #2
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 69
    Points : 94
    Points
    94
    Par défaut
    Selon moi :
    tu mets tes images en position:absolute et en javascript tu fais une fonction qui qui renseigne leurs coordonnée css de manière aléatoire ( random() ) en faisant attention à ce qu'il n'y ai pas de recouvrement et en définissant des bords etc..

  3. #3
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Je ne suis pas sur qu'on ce soit compris, et il est vrai qu'il est difficile de se faire comprendre lorsqu'on a un problème comme celui ci ^^, mais je vais réessayer. Avant tout merci de porter une oreille attentive à mon problème.

    En fait ces 3 images seront toujours positionner au même endroit sur ma page, elles auront chacune une rotation différente. Et donc j'aurais aimé pouvoir afficher chacune de ces 3 images dans 3 div différentes.

    Est ce que je suis clair dans mes propos? Est ce que c'est possible de faire ça, et surtout comment faire?

    Merci d'avance

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Si je comprends bien, la partie "sélection aléatoire" fonctionne bien, c'est l'affichage proprement dit qui pose problème. C'est bien ça ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Oui c'est bien ça, est ce que tu peux m'aider à trouver la solution à mon problème Celira?

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Si tu veux un rendu différent par image, le plus simple serait de faire une classe CSS par image, et ensuite de jouer avec le css pour obtenir l'effet souhaité.
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #image_1{
        border: 1px solid red;
    }
    #image_2{
        border: 1px solid green;
    }
    #image_3{
        border: 1px solid blue;
    }
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $cpt = 1;
    foreach($tab as $img) {
        echo '<div id="image_'.$cpt.'"><img src="'.$path.$img.'" alt="" /></div>';
        $cpt++;
    }
    (bon là j'ai juste mis des bordures pour différencier les images, mais après il faut adapter le css à ce que tu veux faire)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Merci, Merci bien de m'aider, ce que tu m'as donné comme réponse faisait exactement ce que je voulais. Mais je crois que mon cas est plus compliqué que ça.

    Voici le début de mon code pour que tu comprenne mieux ce que j'ai besoin de faire (j'aurais du commencer par là) :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <div id="bandeau_banniere_flottante" style="display: block;">
     
    				<div class="container_pub_flottante">
    					<div id="pub_flottante_main_container_1">
    						<a href="" title "" alt "">
    						<img src="images/<?php echo rand(1,6);?>.jpg" alt="Random Image" /></a>
     
    					</div>
    					<div id="pub_flottante_entete_1"></div>
    				<div id="pub_flottante_prix_1">
    					<span class="prix_pub_flottante">
    					<?php echo _PRIX1; echo _MONNAIE;?></span></br>
    					<span class="convertisseur"><?php echo _CONVERTISSEUR; echo _MONNAIE2;?></span>
    				</div>
    				</div>
     
     
    				<div class="container_pub_flottante">
    					<div id="pub_flottante_main_container_2">
    						<a href="" title "" alt "">
    							<img src="images/<?php echo rand(1,6);?>.jpg" alt="Random Image" /></a>
    					</div>
    					<div id="pub_flottante_entete_2"></div>
    				<div id="pub_flottante_prix_2">
    					<span class="prix_pub_flottante"><?php echo _PRIX2; echo _MONNAIE;?></span></br>
    					<span class="convertisseur"><?php echo _CONVERTISSEUR2; echo _MONNAIE2;?></span>
    				</div>
    				</div>
     
    			<div class="container_pub_flottante">
    					<div id="pub_flottante_main_container_3">
    						<a href="" alt "">
    							<img src="images/<?php echo rand(1,6);?>.jpg" alt="Random Image" /></a>
    					</div>
    					<div id="pub_flottante_entete_3"></div>
    				<div id="pub_flottante_prix_3">
    					<span class="prix_pub_flottante"><?php echo _PRIX3; echo _MONNAIE;?></span></br>
    					<span class="convertisseur"><?php echo _CONVERTISSEUR3; echo _MONNAIE2;?></span>
    				</div>
    				</div>
     
    			<div id="pub_flottante_entete_4"></div>
    		</div>

    En fait je souhaite faire un module de publicité verticale, qui affiche donc trois images différentes à partir d'un même dossier, comme c'est trois images doivent être indépendante le soucis c'est qu'il y a des doublons avec la technique j'ai écris ici.

    Elles doivent vraiment se trouver dans les trois div que j'ai crée plus haut parce que dessus ces images s'affiche un prix, et un badge de réduction.
    Et ce prix doit afficher le prix de l'image qu'il montre.

    Il me faudrait un tableau avec une boucle qui prend une image au hasard dans le fichier vérifie qu'elle n'est pas déjà affiché, si elle est déjà afficher il en prend une autre sinon il l'affiche. Tout ça c'est bien beau mais je ne sais pas comment faire.

    Je suis vraiment dépassée là dessus et ce serait vraiment cool si toi Celira tu pourrais m'aider ou même quelqu'un d'autre parce que moi j'ai pas la solution et je commence a désespérer.

    Merci d'avance

  8. #8
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Je suis pas fan du multi-posting mais bon... Autant te poster ici aussi la réponse cela en aidera sans doute d'autres.

    Tu créés un array d'images que tu mélanges avec la fonction shuffle().
    Puis avec array_shift() tu extrais les 3 premières images.
    Pas besoin de boucle si tu assignes à une variable différente que tu codes statiquement dans tes divs.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  9. #9
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse transgohan mais je ne comprend pas bien ta dernière phrase : "Pas besoin de boucle si tu assignes à une variable différente que tu codes statiquement dans tes divs. "

    Parce que j'ai déjà fais un array images avec la fonction shuffle() mais le soucis avec cette technique c'est que mes 3 images s'affichait en un seul et même bloc, et non pas en 3 images bien distinctes...

    J'ai l'impression de toucher au but sans l’atteindre, c'est très frustrant...

  10. #10
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    shuffle($monArray);
    $img1 = array_shift($monArray);
    $img2 = array_shift($monArray);
    $img3 = array_shift($monArray);
    Qu'est ce qui t'empêche d'utiliser par la suite ces trois variables où tu le souhaites ?

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  11. #11
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Justement c'est ce que j'ai fais, mais mon soucis maintenant c'est de faire un array() sur un nombre de fichier inconnu (parce que le nombre de photo dans le dossier varie chaque jour) et donc je ne connais pas non plus le nom des images au jour le jour.

    Ou bien il faudrait un array(concernant les images1 a 8000 par exemple).
    Je ne sais pas trop.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
     
        $myarray = array ( '1', '2', '3', '4' );
        shuffle ( $myarray );
     
        $imageA = array_shift ( $myarray );
        $imageB = array_shift ( $myarray );
        $imageC = array_shift ( $myarray );
     
        // puis tu écris tes div de cette manière ou d'une autre.
        echo    "<div id='pub_flottante_main_container_1'>" .
                "<a href='' title='' alt=''>" .
                "<img src='images/" . $imageA . ".jpg' alt='Random Image' />" .
                "</a>" .
                "</div>"
    ?>
    Est ce que quelqu'un pourrait m'aider pour mon array() inconnu et infini ^^

    Merci bien

  12. #12
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    C'est bon j'ai enfin résolu mon problème merci à ceux qui m'ont aider. Voici mon code pour les prochains qui en auront besoin.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    </head>
    	<body>
     
    		<?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 );// une image 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>" ?>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/07/2015, 11h32
  2. [Débutant] Comment afficher plusieurs images dans des axes differents
    Par DOUBLE_H dans le forum Interfaces Graphiques
    Réponses: 8
    Dernier message: 07/06/2011, 23h22
  3. Réponses: 5
    Dernier message: 06/06/2010, 20h34
  4. Afficher plusieurs images dans le même objet Figure
    Par hanane78 dans le forum MATLAB
    Réponses: 3
    Dernier message: 06/10/2007, 15h40
  5. Afficher plusieurs images dans un jDesktop
    Par lerotou dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 05/04/2006, 15h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo