Enregistrer le nom des repertoire dans mysql

Mammouth du PHP | 620 Messages

02 juil. 2009, 20:36

Bonjour,
Depuis quelque temps je suis en train de refaire intégralement mon site internet.
J’en suis au niveau le plus important du site qui est la galerie photo.

Actuellement j'utilise zen photo qui est une superbe galerie mais qui malheureusement ne s'intègre plus contrairement a ses anciennes version dans un Template d'un site existant.

Je souhaiterai donc créé une galerie du même genre mais en beaucoup moins évolué évidement.

En gros j'ai un répertoire albums dans lequel se trouve d'autres répertoires qui se retrouveront être une galerie par répertoire.

Je souhaite donc scanner grâce a PHP mon répertoire et ses sous répertoire afin de faire ma galerie et l'afficher leur contenu (les photos).

Jusqu’a présent j'arrive à scanner mes répertoire et sous répertoire et j'affiche bien mes photos.

Se que je souhaiterai faire c'est enregistrer le nom des répertoires et photos automatiquement dans MySQL afin de pouvoir ajouter des commentaires sur les galeries et sur les photos.
--> C’est la que je bloque.

Existe-t-il un moyen pour que dans une table (albums) j'enregistre le nom du répertoire, le nombre de fichiers qu'il contient et un champ ou je pourrais enregistrer une description ?

voici mon code actuel qui scan et affiche le contenu sur une page php.
<?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') 

// 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/><ul>"; 
        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 '<br/><li><a href="test-galerie.php?dir='.$dir_nom.'/'.$lien.'"><img width="30px" height="30px" src="'.$dir_nom.'/'.$lien.'/'.$infosSousDossier['fichier'][0].'"/></a>
			<a href="test-galerie.php?dir='.$dir_nom.'/'.$lien.'">'.$lien.'</a>
			
			
			</li><br/>'; 
        } 
    echo "</ul><br/>"; 
} 

if(!empty($fichier)){ 
    sort($fichier);// pour le tri croissant, rsort() pour le tri décroissant 
    echo "Liste des fichiers/documents accessibles dans '$dir_nom' : \n\n"; 
    echo "\t\t<ul>\n"; 
        foreach($fichier as $lien) { 
            $size = GetImageSize("$dir_nom/$lien"); 
             
    //Largeur maximale de l'image pour la cr&eacute;ation des miniatures  
    $largeur_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];  
        }  
            echo "\t\t\t<li><a href=\"$dir_nom/$lien \"><img src=\"$dir_nom/$lien \" width=".$width." height=".$height." alt=\"Photo des Vosges : $lien\" /></a></li>\n"; 
             
            echo  $size[0]. 'x' .$size[1] ; 
        } 
    echo "\t\t</ul>"; 
 } 


?> 
maintenant je voudrai recuperer dans mysql le nom de repertoire dans un table que j'appel iwgalerie avec comme champs is, repertoire, description...

Eléphant du PHP | 141 Messages

03 juil. 2009, 14:48

Tu veux pouvoir par la suite, ne plus scanner les répertoires mais directement la base de données.

A mon avis, tu va te compliquer la vie en faisant ce que tu fais là, car ça veut dire que si tu ajoutes des photos ou si tu renommes un dossier, il faut qu'en base de données la modification soit répliquée.

Tu devrait plutôt que de conserver l'arborescence physique sur le disque, créer ta propre arbo en base.

Avec deux tables, une contenant les répertoires, avec un ID auto-incrémenté, le nom, la description, et le conteneur (pour les sous-dossiers).
Ensuite, tu as une table images permettant d'associer l'url d'une image à un ID de répertoire.

Mammouth du PHP | 620 Messages

04 juil. 2009, 22:44

ah. en fait lorsque je cré une nouvelle galerie, j'ouvre mon ftp sous windows et je fais un copier coller de mon repertoire de local vers distant (ftp). du coup j'ai une nouvelle galerie qui se met en place automatiquement sans rien faire d'autre. c'est simple, facile, rapide et efficace.

qu'entends tu par :
u devrait plutôt que de conserver l'arborescence physique sur le disque, créer ta propre arbo en base