Faire apparaître la première photo d'un dossier

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Faire apparaître la première photo d'un dossier

Re: Faire apparaître la première photo d'un dossier

par ynx » 24 mars 2017, 15:18

Salut,

Tu peux utiliser la fonction glob() pour récupérer les fichiers d'un dossier.
Dans la boucle qui parcours les dossiers gallerie, tu peux donc utiliser cette fonction pour en récupérer les photos et vérifier si le dossier contient au moins une photo. Si oui on l'affiche, si non on affiche l'image par défaut.

Un exemple simplifié (code non testé, le chemin dans la fonction glob() et dans l'attribut src de l'image sera p-e à corriger) :
$filesImage = glob($chemin . $liste[$i] . '/*.{jpg,png,JPG,PNG}', GLOB_BRACE);
if (isset($filesImage[0])) {
    echo '<img src="' . $filesImage[0] . '" alt="Nom gallerie">';
} else {
    echo '<img src="../img/rep.png" alt="Nom gallerie">';
}

Bonne journée,

Re: [FAIRE APPARAÎTRE LA PREMIÈRE PHOTO D'UN DOSSIER]

par @rthur » 23 mars 2017, 12:26

Bonjour Lucieemtl,

Pourrais-tu modifier le titre de ton message pour retirer les crochets et les majuscules, stp ?
Cela permettra une meilleure lisibilité de la liste des sujets.

Faire apparaître la première photo d'un dossier

par lucieemtl » 23 mars 2017, 12:09

Bonjour à tous,

Je suis en train d'élaborer l'administration d'un site internet de A à Z, et je ne parviens à faire quelque chose :
Je suis en train de permettre à mon client de gérer ses albums photos et photos dans une galerie, et, lorsqu'il s'agit d'un répertoire|dossier, plutôt que d'afficher une image d'album photo par défaut -ce que je ne trouve pas très cohérent avec le travail très rigoureux fourni en matière de design ; j'aimerai afficher la première image comprise dans l'album même (on peut voir cela sur facebook par exemple). et puis je jouerai ensuite moi même avec le design (je pensais rajouter un attribut class et le travailler).

Toutefois, après plusieurs tentatives, je ne parviens pas à faire ce que je veux...

Voici mon code (je pense que le PHP devrait suffire) :

<?php
$chemin = './pics/';
$repertoire = opendir($chemin);
while($elements = readdir($repertoire)) {
$liste[] = $elements;
}
natsort($liste);
$nbcol=5;
$liste = array_values($liste);
$nombre = count($liste);
if($nombre != 0)
{
echo "<table class=\"gallery\">";
for ($i=0; $i<$nombre; $i++) {
if($i%$nbcol==0){echo '<tr>';}
if ($liste[$i] != "." && $liste[$i] != "..") {
if(is_dir($chemin.$liste[$i])){
echo "<td><a href=\"details-album.php?name=".$liste[$i]."\">
<div class=\"lienAlbum\">
<img src=\"../img/rep.png\" alt=\"Image\" width=\"200\" height=\"200\">
</div>
<div class=\"infosAlbum\"><h5>".$liste[$i]."</h5></div></a></td>";
}
else echo "<td><img src=\"./pics/". utf8_encode($liste[$i]) ."\" alt=\"Image\" width=\"200\" height=\"200\" /></td>";
}
if($i%$nbcol==($nbcol-1)){echo '</tr>';}
}
echo "</table>";
}
else echo "<div class=\"textInfo valign-wrapper\"><p>- Aucune média à afficher -</p></div>";
if (isset($erreur)) echo "<br />" , $erreur;
closedir ($repertoire);
?>

(Je ne sais pourquoi, l'indentation ne fonctionnait à priori par correctement, j'ai donc mis le code en texte pour éviter d’abîmer les yeux !)

Comme je vous le dis, j'ai essayé plusieurs choses (scandir, des boucles while..), mais cela est sans succès.. Du coup, j'ai préféré laissé le code original ici.
Pourriez-vous m'aider s'il vous plaît ?