Voilà je me remets au boulot sur mon site perso et ma galerie photos et je reprends là ou je beuguai il y a quelque temps et ou je bug toujours d'ailleurs.
Mon code scan un répertoire dans lequel il y a des photos et d'autres répertoires pouvant contenir eux même des photos et autre sous répertoire. Pour l'affichage des images et des répertoires mon code fonctionne à merveille.
Maintenant je mets en place un system qui permet d'ajouter à ma base de données les informations sur les noms de répertoires et les photos que ces répertoires contiennent.
J’ai donc créé 2 tables(IWgaleriephoto et IWgalerie), une pour récupérer les noms de répertoires et un autre pour récupérer le nom des photos.
Pour récupérer le nom de répertoire sa fonctionne très bien je récupère donc les noms des répertoires et sous répertoires et sous répertoire sans problème dans ma base de données.
Maintenant j'essai e faire la même chose mais avec les images qui sont dans le répertoire et sous répertoires..... Mais c'est la que sa ne fonctionne pas complètement.
En fait, j'arrive juste à récupérer dans ma base de données les noms de photos qui sont dans le répertoire d'origine et pas les sous répertoires.
Je vous mets mon code car son fait des semaines que je suis dessus et je commence à désespérer.
Pouvez-vous me donner un coup de main svp ?
<?php
include("connexion-sql.php");
// Fonction pour parcourir les dossiers
function lireDossier($dir_nom)
{
$dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); // on ouvre le contenu du dossier courant
$fichier= array(); // on déclare le tableau contenant le nom des fichiers
$dossier= array(); // on déclare le tableau contenant le nom des dossiers
while($element = readdir($dir))
{
if($element != '.' && $element != '..')
{
if (!is_dir($dir_nom.'/'.$element)) {$fichier[] = $element;}
else {$dossier[] = $element;}
}
}
closedir($dir);
return array('dossier'=>$dossier,'fichier'=>$fichier);
}
$dir_nom = (isset($_GET['dir'])) ? $_GET['dir'] : '../images'; // dossier listé (pour lister le répertoir courant : $dir_nom = '.' --> ('point')
$nom_rep = basename($dir_nom); // affiche le nom repertoire dans lequel la page est.
// Récupérations des infos sur le dossier racine.
$infosDossier = lireDossier($dir_nom);
$dossier = $infosDossier['dossier'];
$fichier = $infosDossier['fichier'];
if(!empty($dossier)) {
sort($dossier); // pour le tri croissant, rsort() pour le tri décroissant
echo "Liste des dossiers accessibles dans '$dir_nom' : \n\n";
echo "<br/>";
foreach($dossier as $lien)
{
// Récupération des infos sur un sous dossier
$infosSousDossier=lireDossier($dir_nom.'/'.$lien);
// Pour choisir aléatoirement une de ses images
shuffle($infosSousDossier['fichier']);
// ATTENTION : Je n'ai pas traité le cas des sous dossiers vides
echo '
<div class="col400panocerf">
<a href="test-galerie.php?dir='.$dir_nom.'/'.$lien.'">
<img width="100px" height="100px" src="'.$dir_nom.'/'.$lien.'/'.$infosSousDossier['fichier'][0].'"/>
</a>
<a href="test-galerie.php?dir='.$dir_nom.'/'.$lien.'">'.$lien.'</a><br/>';
$sql = 'SELECT * FROM IWgalerie';
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
while($data = mysql_fetch_array($req))
{
if($lien == $data['repertoire'])
{
echo '' .$data['desc']. '<br/>';
}
}
echo '</div>';
}
}
// affichage des images contenu dans le repertoire séléctionné.
echo "<div class='clear20px'></div>";
if(!empty($fichier)){
sort($fichier);// pour le tri croissant, rsort() pour le tri décroissant
echo "
<h1>Vous êtes dans la galerie <span class='gris'>".$nom_rep."</span> </h1>
Liste des fichiers/documents accessibles dans '$dir_nom' :<br/>";
foreach($fichier as $lien) {
$size = GetImageSize("$dir_nom/$lien");
//Largeur maximale de l'image pour la création des miniatures
$largeur_maxi = 100;
$hauteur_maxi = 100;
if ($size[0] > $largeur_maxi)
{
$width = $largeur_maxi;
$theight = ($size[0]/$largeur_maxi);
$height = ($size[1]/$theight);
}
else
{
//Sinon on garde la taille originale
$width = $size[0]; $height = $size[1];
}
// Verification de l'extension d'image
$ext = strtolower(substr($lien, strrpos($lien, '.') + 1));
if (($ext=="jpg") || ($ext=="jpeg") || ($ext=="gif") || ($ext=="bmp") || ($ext=="png"))
{
// Lien vers l'image
echo "
<div class='highslide-gallery'>
<ul>
<li><a href=\"$dir_nom/$lien \" class=\"highslide\" onclick=\"return hs.expand(this)\">
<img src=\"$dir_nom/$lien \" width=".$width." height=".$height." alt=\"Photo des Vosges : $lien\" title=\"Photo des Vosges : $lien\"/>
</a>
</li>";
echo "
<div class='highslide-caption'>
".$lien." taille : " .$size[0]. " X " .$size[1]. "
</div>
</ul>
</div>";
}
}
echo "";
}
//insertion des noms de répertoires dans la base de données : si un nom existe déjà on ajoute pas.
foreach($dossier as $d)
{
// $d étant le nom du répertoire et pas un Array ;)
$sql = 'SELECT COUNT(id) as nb FROM IWgalerie WHERE repertoire = "'.$d.'"';
$sql = mysql_query($sql) or die(mysql_error());
$nb = mysql_fetch_object($sql);
if($nb->nb == 0) {
$sql = "INSERT INTO IWgalerie (id, repertoire) VALUES('','$d')"; mysql_query($sql) or die('Erreur SQL !'.$sql.' '.mysql_error());
}
else {
echo $d. 'existe déjà';
}
}
mysql_close();
?>