IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

tableau multidimensionnel pour galerie photo xml


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut tableau multidimensionnel pour galerie photo xml
    Bonjour à tous,
    je travail sur un script simple de galerie photo, permettant de stocker des informations (nom du fichier, ordre de trie et descriptif) dans un fichier .xml .
    jusque là rien de bien compliqué, mais je sèche sur l'ordre de trie...
    il s'agit à priori juste de manipuler un tableau multidimensionnel mais j'ai eu beau reparcourir des cours et des exemples, je n'arrive pas à avoir de résultat cohérent
    ci-dessous l'extrait du code, j'ai enlevé mes 'essais multidimentionnels', ce code fonctionne donc, mais sans tenir compte du trie.
    si je ne m'abuse... l'objectif serait donc d'ajouter un tableau 'matrice' par exemple, qui contiendrait dans chaque enregistrement le tableau $arr (soit les infos de chaque images). ceci afin de pouvoir placer un usort du champs 'num'.
    Merci d'avance à ceux qui pourront m'aider (ou qui essaieront ). si le script vous intéresse, je posterai mes fichiers.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <?
    //on liste le contenu du dossier images
    $folder = 'upload/images/' ;
    $oDir = opendir($folder);
    $files = array();
    while (false !== ($logFiles = readdir($oDir))) {
    		if ($logFiles == "." || $logFiles == ".." ) continue;
    		$files[] = $logFiles;
    }
     
    //pour chaque image, on vérifie s'il existe des info dans le xml
    	for ($i=0;$i<count($files);$i++) {
    		$nom = $files[$i];
    		$galerie = simplexml_load_file('galerie.xml');
    		$arr = array();
     
    		foreach ($galerie->image as $image) {
    		//si le nom de l'image concorde avec un enregistrement du xml, on l'associe dans un tableau
    			if ($image['nom'] == $nom) {
    			  $arr['nom'] = $nom ;
    			  $arr['num'] = "{$image->num}";
    			  $arr['desc'] = "{$image->desc}";
    			}
    		}
    		echo $arr['num'] . '-' . $nom . '&nbsp;' . $arr['desc'] . '<br>' ;
    	}
    ?>

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonsoir,

    Je te propose une approche plus simple au lieu d'un tableau monolithique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?php
     
    $noms = array();
    $nums = array();
    $desc = array();
    $pos  = 0;
     
    //pour chaque image, on vérifie s'il existe des info dans le xml
    for($i = 0, $nb = count($files); $i < $nb; ++$i) {
       $nom = $files[$i];
       $galerie = simplexml_load_file('galerie.xml');
       $arr = array();
     
       foreach ($galerie->image as $image) {
          //si le nom de l'image concorde avec un enregistrement du xml, on l'associe dans un tableau
          if ($image['nom'] === $nom) {
             ++$pos;
             $noms[$pos] = $nom;
             $nums[$pos] = $image->num;
             $desc[$pos] = $image->desc;
          }
       }
    }
     
    // ensuite tu tries le tableau approprié selon tes besoins en préservant les clés
    // par exemple par desc
    asort($desc, SORT_STRING);
     
    foreach($desc as $pos => $str) {
       echo $nums[$pos].'-'.$noms[$pos].'&nbsp;'.$str.'<br>';
    }

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    un grand merci pour cette réponse et le temps consacré
    effectivement je me bornais à cette idée de tableaux imbriqués alors que cette solution est simple et efficace...
    j'ai apporté de légères modifications/personnalisations, et je post mon code final pour conclure.
    encore merci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
     
    $noms = array();
    $nums = array();
    $desc = array();
    $pos  = 0;
     
    //pour chaque image, on vérifie s'il existe des info dans le xml
    for($i = 0, $nb = count($files); $i < $nb; ++$i) {
       $nom = $files[$i];
       $galerie = simplexml_load_file('galerie.xml');
     
       foreach ($galerie->image as $image) {
          //si le nom de l'image concorde avec un enregistrement du xml, on l'associe dans un tableau
          //if ($image['nom'] === $nom) {
          if ($image['nom'] == $nom) {
             ++$pos;
             $noms[$pos] = $nom;
             $nums[$pos] = $image->num;
    		 if ($nums[$pos] == '') $nums[$pos] = 99 ;
             $desc[$pos] = $image->desc;
          }
       }
    }
     
    // ensuite tu tries le tableau approprié selon tes besoins en préservant les clés
    // par exemple par desc
    asort($nums, SORT_STRING);
     
    foreach($nums as $pos => $str) {
       //echo $nums[$pos].'-'.$noms[$pos].'&nbsp;'.$str.'<br>';
       echo '<a href="' . $folder . $noms[$pos] . '" rel="lightbox[]" title="title' . $desc[$pos] . '"><img border="5" style="border-color:#FFF;" class = "cloudcarousel" src="' . $thumbs . $noms[$pos] . '" title="title' . $desc[$pos] . '" alt="alt' . $desc[$pos] . '" /></a>' ;
    }

Discussions similaires

  1. Script de navigation pour galerie photos
    Par midiweb dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 19/07/2009, 18h03
  2. Librairie "slideshow" pour galerie photos
    Par daninou dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 09/04/2009, 10h15
  3. Back office PHP pour galerie photo XML
    Par blurgzien dans le forum Langage
    Réponses: 5
    Dernier message: 23/03/2009, 10h31
  4. [Prototype] Fil rouge pour galerie photo
    Par poupouille dans le forum Bibliothèques & Frameworks
    Réponses: 5
    Dernier message: 04/06/2008, 08h58
  5. [MySQL] Création catégorie pour galerie photo
    Par gozu13 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 17/03/2008, 15h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo