[RESOLU] images qui s'affiche en petites icones

Eléphanteau du PHP | 16 Messages

09 Nov 2012, 22:28

bonsoir,

Petit probleme d'image qui s'affiche en genre de vignette comme ceci http://animal-suspect.com/
Une solution pour les affichés correctement ?


voici le code utilisé:

Code : Tout sélectionner

<?php

$dir = './image';
$image_largeur = 150;
$valide_extensions = array('jpg', 'jpeg', 'gif', 'png');

$Ressource = opendir($dir);
while($fichier = readdir($Ressource))
{
    $berk = array('.', '..');

    $test_Fichier = $dir.$fichier;

    if(!in_array($fichier, $berk) && !is_dir($test_Fichier))
    {
        $ext = pathinfo($fichier,  PATHINFO_EXTENSION);

        if(in_array($ext, $valide_extensions))
        {
            echo '
                <div style="float:left; width:'.$image_largeur.'px; margin-right:10px">
                    <img src="'.Logo2.jpg.'" style="'.$image_largeur.'px" />
                </div>';
        }
    }
}
?>


Merci de votre aide

Mammouth du PHP | 790 Messages

09 Nov 2012, 23:08

[html]<img img"'.Logo2.jpg.'" width="'.$image_largeur.'px" />
[/html]
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Eléphanteau du PHP | 16 Messages

10 Nov 2012, 03:22

Bonjour,

Merci pour votre réponse,

j'ai appliqué votre code et maintenant j'ai des carrés plus grand mais toujours avec la même petite icone bizarre.
Mes images ne s'affiche tjrs pas comme vous pouvez le voir.

je n'y comprend plus rien :'(

Une autre idée?

Eléphant du PHP | 343 Messages

10 Nov 2012, 04:01

Normal, la balise sort comme ça:
[html]<img src"./image/Logo2.jpg" width="150px" />[/html]

Il faut pouvoir transformer en:

[html]<img src="./image/Logo2.jpg" width="150px" />[/html]
Développeur web

Eléphanteau du PHP | 16 Messages

10 Nov 2012, 11:56

Bonjour sam,

effectivement ça marche !
par contre j'ai 5 fois la même images qui sort du coup.

j'ai une chtite question est-il possible d’appeler 3 images aléatoires de ce dossier ?

Merci

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 7661 Messages

10 Nov 2012, 15:33

Salut.

Oui c'est possible.

Tu peux aussi faire beaucoup plus simple que tu as fait avec la fonction glob

L'avantage c'est que tu aura un tableau sur lequel utiliser la fonction array_rand et prendre les 3 1er éléments

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 16 Messages

10 Nov 2012, 16:08

Slt,

Alors la je dis chapeau Moogli tu m'as réglé ça en deux phrases xD! Génial!

Si je peux abuser sur une chose:

Ta manière de faire fonctionne trés bien dans mon dossier image à la racine de mon site.
Par contre si je veux afficher les images de mes membres en remplaçant le dossier image par le dossier forum/files (qui est le dossier ou mes membres upload leur fichiers joints) ça ne marche pas car les fichiers dedans se nomment 2_3bc2eed4fa3f1d0cbf54045228302b70 à la place de logo2.jpg.

Si tu connais un moyen de les afficher ? la je serai aux anges :)

et par la même occasion comment en afficher 3 aléatoire au lieu d'une?
voici mon code:
[php]<?php

$dossier = 'image';
$dossier_images = $dossier.'/*.{jpg,jpeg,gif,png}';

$tab_dossier = glob($dossier_images,GLOB_BRACE);
$img_aleatoire = $tab_dossier[array_rand($tab_dossier)];

$max_width = 100;//maximum largeur acceptable
$max_height = 100;//maximum hauteur acceptable

list($width, $height) = getimagesize($img_aleatoire);
$ratioh = $max_height/$height;
$ratiow = $max_width/$width;
$ratio = min($ratioh, $ratiow);

$ratio = $ratio <= 1 ? $ratio : 1;// uniquement si l'on ne veut pas agrandir les photos de plus petites dimensions que $max_width ou $max_height

$width = intval($ratio*$width);
$height = intval($ratio*$height);

echo '<img src="'.$img_aleatoire.'" width="'.$width.'" height="'.$height.'" alt="image" />';
?>
[/php]

Encore Merci en tout cas pour cette réponse!

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 7661 Messages

10 Nov 2012, 17:37

pour afficher plusieurs images utilise l'exemple de la doc avec le second paramètre de la fonction array_rand.

en clair
- $list = glob( ...);
- $fichierRetenu = array_rand($list, $nomDeFichier);
pour l'affichage un foreach, avec dedans le code que tu as a partir de la ligne du getimagesize.

si te fichier n'on pas d'extension récupère tout mais il est préférable d'avoir une extension pour filtre (sauf si tu est certain qu'il n'y a que des images).


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 343 Messages

10 Nov 2012, 17:39

Sans certitude, je dirais avec un foreach en jouant sur les clés.
Développeur web

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 7661 Messages

10 Nov 2012, 17:42

en jouant sur les clefs ?

array_rand retourne des clefs prise aléatoirement dans un tableau (1 ou plusieurs suivant le second paramètre), a partir du la tu parcourt le tableau résultat avec foreach et tu fait appel à la valeur ($tableauInitial[ $valeurCourantDuForeach ]).



@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 343 Messages

10 Nov 2012, 17:46

Oui, je me suis mal exprimé. En jouant sur les clés du array_rand et non du foreach ;)
Développeur web

Eléphanteau du PHP | 16 Messages

10 Nov 2012, 18:39

re,
dsl mais je comprend pas vraiment ou je choisie d'afficher 3 images au lieu d'une dsl je suis vraiment pas fort la dedans ...

Je sais pas ce qu'est le $tableauInitial[ $valeurCourantDuForeach].

Si vous pouvais me dire quoi mettre et ou ça serait super que je comprenne car la dit comme ça il faut quand même avoir de bonnes bases pour comprendre tout.

Sinon tant pis j'appelerais 2 fois a 2 endroit différents systeme D oblige

Merci bien

Eléphanteau du PHP | 16 Messages

10 Nov 2012, 20:33

non j'ai beau essayer de comprendre je n'y arrive pas, je ne vois pas ce qu'est ce foreach comme je vous dit je débute dans le php c'est vraiment pas facile.
Je fouille tellement partout dans pleins de sites qui parlent de manières différentes de choses qu'ils connaissent ou moi j’y connais pas grand chose que je m’emmêlent les pinceaux je fini par plus rien comprendre.
je ne vois pas ce qu'est :

-foreach
-En jouant sur les clés ?
-($tableauInitial[ $valeurCourantDuForeach ])
-a partir du la tu parcourt le tableau résultat avec foreach et tu fait appel à la valeur
-utilise l'exemple de la doc avec le second paramètre de la fonction
-si te fichier n'on pas d'extension récupère tout (comment ?)


quand vous parlez entre vous Sam et Moogli vous y voyez clair mais moi j'y vois rien :(

Ce sont des choses que je découvre.
Je comprend bien quand les codes sont la et que je peux les décortiquer et que je fais des test.
Mais de la à rajouter des phrases et les composer de moi même je ne sais pas comment faire c'est trop dsl :/

me = néophyte :oops:

Eléphanteau du PHP | 16 Messages

10 Nov 2012, 22:38

Personne? :(

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 7661 Messages

10 Nov 2012, 23:32

Le foreach permet de parcourir un objet ou un tableau et cela sans ce soucier des clefs de ton tabeau.

Code : Tout sélectionner

<?php
$dossier = 'image';
$dossier_images = $dossier.'/*.{jpg,jpeg,gif,png}';

$tab_dossier = glob($dossier_images,GLOB_BRACE);
$indexImage = array_rand($tab_dossier,3);

foreach($indexImage as $index) {
   $max_width = 100;//maximum largeur acceptable
   $max_height = 100;//maximum hauteur acceptable

   list($width, $height) = getimagesize($tab_dossier[$index]);
   $ratioh = $max_height/$height;
   $ratiow = $max_width/$width;
   $ratio = min($ratioh, $ratiow);

   $ratio = $ratio <= 1 ? $ratio : 1;// uniquement si l'on ne veut pas agrandir les photos de plus petites dimensions que $max_width ou $max_height

   $width = intval($ratio*$width);
   $height = intval($ratio*$height);

   echo '<img src="'.$tab_dossier[$index].'" width="'.$width.'" height="'.$height.'" alt="image" />';
}
?>
 


par exemple


@+
Il en faut peu pour être heureux ......