Bonjour,
Je suis en train de faire une galerie photos.
Je scan le contenu de mon répertoire albums qui est sur mon ftp. Ce répertoire contient des photos et des répertoires contenant eux même des photos.
Lorsque je scan mon répertoire je fais en sorte d'enregistrer dans ma base de données les informations sur le contenu.
J’ai donc créé un table IWgalerie pour récupérer le nom des répertoires et sous répertoires trouvés lors du scan --> sa fonctionne
J’ai créé une table IWgaleriephotos pour récupérer les noms des photos qui se trouve dans les répertoires.
--> Problème : je n'arrive à récupérer dans que le nom de photos qui se trouve dans le répertoire source (images) et pas celles qui sont dans les sous répertoires.
J’ai retourné le code dans tous les sens mais je ne trouve pas la solution à mon problème et c'est pour ça que je viens vous voir.
Pourriez vous regarder mon code pour me dire d'ou vient mon problème ?
Merci par avance.
voici le code :
vous voyez le code que j'ai mis ? (chez moi il disparait une seconde apres l'ouverture du topic)
Modifié par fabrice88 (19 Jul 2009 - 21:50)
Je suis en train de faire une galerie photos.
Je scan le contenu de mon répertoire albums qui est sur mon ftp. Ce répertoire contient des photos et des répertoires contenant eux même des photos.
Lorsque je scan mon répertoire je fais en sorte d'enregistrer dans ma base de données les informations sur le contenu.
J’ai donc créé un table IWgalerie pour récupérer le nom des répertoires et sous répertoires trouvés lors du scan --> sa fonctionne
J’ai créé une table IWgaleriephotos pour récupérer les noms des photos qui se trouve dans les répertoires.
--> Problème : je n'arrive à récupérer dans que le nom de photos qui se trouve dans le répertoire source (images) et pas celles qui sont dans les sous répertoires.
J’ai retourné le code dans tous les sens mais je ne trouve pas la solution à mon problème et c'est pour ça que je viens vous voir.
Pourriez vous regarder mon code pour me dire d'ou vient mon problème ?
Merci par avance.
voici le code :
<?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 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>';
}
echo "<br/>";
}
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 images 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 "";
}//foreach($fichier as $lien)
//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 [cligne]
$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à';
}
}
echo '<br/>';
//insertion des noms de photos dans la base de données : si un nom existe déjà on ajoute pas.
foreach($fichier as $f)
{
// $f étant le nom de la photo et pas un Array [cligne]
$sql = 'SELECT COUNT(id) as nbp FROM IWgaleriephoto WHERE photo = "'.$f.'"';
$sql = mysql_query($sql) or die(mysql_error());
$nbp = mysql_fetch_object($sql);
if($nbp->nbp == 0)
{
$sql = "INSERT INTO IWgaleriephoto (id, photo) VALUES('','$f')"; mysql_query($sql) or die('Erreur SQL !'.$sql.' '.mysql_error());
}
else
{
echo $f. 'existe déjà';
}
}
mysql_close();
?>
vous voyez le code que j'ai mis ? (chez moi il disparait une seconde apres l'ouverture du topic)
Modifié par fabrice88 (19 Jul 2009 - 21:50)