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 :

PHP + search directory = crée liste d'images. PB = certaines images ne s'affichent pas.


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 12
    Par défaut PHP + search directory = crée liste d'images. PB = certaines images ne s'affichent pas.
    Bonjour à tous, et merci d'avance pour vos lumières!

    Je ne suis pas un vrai développeur PHP, mais jusque là j'ai su me débrouiller seul avec le manuel et quelques exemples.
    Mais là je bloque. Je n'ai aucune idée de pourquoi puisque je n'ai aucun moyen de le savoir, d'où ma présence en espérant trouver quelqu'un qui a l'expérience nécessaire pour comprendre où ça bloque.

    Le sujet :
    - Un diaporama
    - Avec un système de recherche des images dans plusieurs dossiers classé par thème.
    - création d'un tableau regroupant toutes les images
    - affichage du contenu du tableau

    Le problème :
    - Les images d'une seule rubrique s'affichent, alors que j'ai toutes les urls (en gros seul trois d'entre elles fonctionnent sur 5, toutes de la même rubrique)

    Le code :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    /***************** Première partie *******************/
    /* Je récupère les différentes adresses de mes dossiers */
     
     
      $photos = $wpdb->get_results("SELECT * FROM " .$wpdb->nggpictures. "" , 'ARRAY_A');;
      $last_id_Array = $wpdb->get_results("SELECT MAX(gid) FROM " .$wpdb->nggallery. "", 'ARRAY_A');
      $last_id = implode($last_id_Array[0]);
      $list_dir = scandir("C:\wamp\www\MonAdresse\Cible\wp-content\gallery"); // recup list des galeries existantes (URL ne fonctionne pas)
      $i = 0;
      foreach($list_dir as $dir){ // loops to organize all gallery in array
        $fichier = array();
        $path[] = array();
        if (($dir != ".") && ($dir != "..") && ($dir != "cache")){
          $fichier[$i] = $dir;
          $path[$i] = 'http://localhost/MonAdresse/Cible/wp-content/gallery/'.$fichier[$i]; // chemin img
          $i = $i+1;
        }
        $thumbs_path = ''; // chemin thumbs annulé. Pas besoin.
      }
     
    /**************** Deuxième partie *****************/
    /* Je vais chercher mes images pour chaque adresse */
     
    $c = 1; // gid (galleryid dans BDD) commence par 1
    $p = 0;
    $folio = array();
    do{
      $photos = $wpdb->get_results("SELECT * FROM " .$wpdb->nggpictures. " WHERE galleryid='" .$c. "'" , 'ARRAY_A'); // recup les infos des photos de chaque galerie, 1 par 1.
        if($photos !=false){
          if (!empty($photos)) {
            foreach($photos as $photo) { // ajoute la liste de photos de la galerie au tableau
              $folio[] = '<li><a href="'.$path[$p].'/'.$photo['filename'].'" 
    				class="thumb" 
    				id="thumb'.$photo['pid'].'" 
    				title="'.$photo['alttext'].'">
    			<img 	src="'.$thumbs_path.'/thumbs_'.$photo['filename'].'" 
    				title="'.$photo['alttext'].'" 
    				alt="'.$photo['alttext'].'" 
    				id="'.$photo['pid'].'" 
    				class="" width="" />
    			</a>
    		<div class="caption">
    			<div class="image-title">'.$photo['alttext'].'</div>
    		</div>
    	</li>';
            }
          }
        }
      $c = $c+1;
      $p = $p+1;
    }
    while( $c <= $last_id ); // fin de boucle définit par le nombre de galerie
     
    shuffle($folio);
    echo implode($folio); // affiche le tableau
    Mon diaporama randomize les images et les affichent. Seulement, seul 3/5 sont trouvé, celles correspondant à $c = 2; sachant qu'il va jusqu'à 3.

    Quand je vérifie chaque variable, tout est bon... y compris mes chemins d'accès aux images qui sont absentes. C'est pourquoi je ne comprends pas.

    Si quelqu'un a une idée, elle est la bienvenue.

    Merci d'avance.

    PS : désolé pour le re-post, mais dans Forum/Script/Galerie ça ne concernait que les scripts téléchargés... du coup, je sais pas si je suis bien au bon endroit aussi ici??? je manipule des fichiers?!

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    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
    Billets dans le blog
    12
    Par défaut
    Bonsoir,

    tu peux editer l'ancien post et le supprimer (enfin je dis ça mais je ne sais pas si on peut supprimer totalement une discussion sans réponses quand on est l'auteur)

  3. #3
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    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
    Billets dans le blog
    12
    Par défaut
    J'ai regardé ton code et je dois dire que c'est très confus, m'enfin je l'ai repris complètement :
    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
    34
    35
    <?php
    // on récupère toutes les photos de toutes les galleries (avec un tri asc sur galleryid)
    $sql = "SELECT * FROM ".$wpdb->nggpictures." WHERE galleryid <= (SELECT MAX(gid) FROM ".$wpdb->nggallery.") ORDER BY galleryid";
    $photos = $wpdb->get_results($sql, 'ARRAY_A');
     
    $galleries = array();
    // on récuère toutes les photos par gallerie
    foreach($photos as $photo) {
       $galleries[$photo['galleryid']][] = $photo;
    }
     
    // on mélange les photos dans chaque gallerie
    foreach($galleries as $gallery) {
       shuffle($gallery);
    }
     
    $urlGalleries = 'http://localhost/MonAdresse/Cible/wp-content/gallery/';
     
    // rendu final
    foreach($galleries as $gallery):
       foreach($gallery as $photo):
          $url = $urlGalleries.$gallery.'/'.$photo['filename'];
    ?>
    <li>
       <a id="thumb<?php echo $photo['pid']; ?>" class="thumb" href="<?php echo $url; ?>" title="<?php echo $photo['alttext']; ?>">
          <img id="<?php echo $photo['pid']; ?>" src="<?php echo $url; ?>" alt="<?php echo $photo['alttext']; ?>" title="<?php echo $photo['alttext']; ?>" />
       </a>
       <div class="caption">
          <div class="image-title"><?php echo $photo['alttext']; ?></div>
       </div>
    </li>
    <?php
       endforeach;
    endforeach;
    ?>
    Comme toujours, code non testé, je suis pas à l'abri d'une erreur et surtout j'espère avoir bien compris ta logique.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 12
    Par défaut
    Bonsoir rawsrc, et merci d'essayer.

    En fait c'est pas mal, bien synthétisé. Je vais tester la méthode demain. Toutefois j'ai peur pour l'adresse de chacun de mes sous-dossiers de /gallery... à première vue, puisque je scanne 1 dossier contenant des sous-dossiers qui eux même contiennent les images.

    Sinon, mon code fonctionne (à part l'affichage). J'ai essayer un var_dump($folio); ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    array(6) { [0]=> string(721) "
    " [1]=> string(720) "
    " [2]=> string(705) "
    " [3]=> string(725) "
    " [4]=> string(712) "
    " [5]=> string(647) "
    " }
    J'ai ajouté des images dans les dossiers lu mais non affiché, ça ne s'affiche toujours pas mais c'est lu.
    C'est toujours les 3 mêmes images qui s'affichent correctement, venant du même dossier.

    En fait, je voulais savoir si quelqu'un sait d'où ça peut provenir, puisque je n'ai aucun message d'erreur, ni d'informations extraites pouvant me donner une piste. Et c'est bien la première fois que je tombe sur un PHP muet... Après, j'ai pas encore vérifier mon javascript, mais à priori il n'y a pas de problème

    Et voilà ce que m'affiche mon Ctrl+U :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    <a 	href="http://localhost/MonAdresse/Cible/wp-content/gallery/portrait/tumblr_luo9a5xdmz1qjrugd.jpg" 
    	class="thumb" 
    	id="thumb1" 
      <img 	src="http://localhost/MonAdresse/Cible/wp-content/gallery/portrait/thumbs/thumbs_tumblr_luo9a5xdmz1qjrugd.jpg" 
    	title="tumblr_luo9a5xdmz1qjrugd" 
    	alt="tumblr_luo9a5xdmz1qjrugd" 
    	id="1" 
    	class="" width="" />
    </a>
    	<div class="caption">
    	  <div class="image-title">tumblr_luo9a5xdmz1qjrugd</div>
    	</div>
    </li>
    <li>
    <a 	href="http://localhost/MonAdresse/Cible/wp-content/gallery/poupees/tumblr_lve4bxcxgk1qjrugd.jpg" 
    	class="thumb" 
    	id="thumb2" 
    	  <img 	src="http://localhost/MonAdresse/Cible/wp-content/gallery/poupees/thumbs/thumbs_tumblr_lve4bxcxgk1qjrugd.jpg" 
    	title="tumblr_lve4bxcxgk1qjrugd" 
    	alt="tumblr_lve4bxcxgk1qjrugd" 
    	id="2" 
    	class="" width="" />
    </a>
    	div class="caption">
    	  <div class="image-title">tumblr_lve4bxcxgk1qjrugd</div>
    	</div>
    </li>
    <li>
    <a 	href="http://localhost/MonAdresse/Cible/wp-content/gallery/poupees/page-web-2011-accueil.jpg" 
    	class="thumb" 
    	id="thumb4" 
    	  <img 	src="http://localhost/MonAdresse/Cible/wp-content/gallery/poupees/thumbs/thumbs_page-web-2011-accueil.jpg" 
    	title="page-web-2011-accueil" 
    	alt="page-web-2011-accueil" 
    	id="4" 
    	class="" width="" />
    </a>
            <div class="caption">
    	  <div class="image-title">page-web-2011-accueil</div>
    	</div>
    </li>
    <li>
    <a 	href="http://localhost/MonAdresse/Cible/wp-content/gallery/poupees/page-web-2011-portfolio-2.jpg" 
    	class="thumb" 
    	id="thumb5" 
    	  <img 	src="http://localhost/MonAdresse/Cible/wp-content/gallery/poupees/thumbs/thumbs_page-web-2011-portfolio-2.jpg" 
    	title="page-web-2011-portfolio-2" 
    	alt="page-web-2011-portfolio-2" 
    	id="5" 
    	class="" width="" />
    </a>
    	<div class="caption">
    	  <div class="image-title">page-web-2011-portfolio-2</div>
            </div>
    </li>
    <li>
    <a 	href="http://localhost/MonAdresse/Cible/wp-content/gallery/test/page-web-2011-portfolio.jpg" 
    	class="thumb" 
    	id="thumb3" 
    	<img 	src="http://localhost/MonAdresse/Cible/wp-content/gallery/test/thumbs/thumbs_page-web-2011-portfolio.jpg" 
    	title="page-web-2011-portfolio" 
    	alt="page-web-2011-portfolio" 
    	id="3" 
    	class="" width="" />
    </a>
    	<div class="caption">
    	  <div class="image-title">page-web-2011-portfolio</div>
    	/div>
    </li>
    <li>
    <a 	href="http://localhost/MonAdresse/Cible/wp-content/gallery/test/screenshot.jpg" 
    	class="thumb" 
    	id="thumb6" 
    	  <img 	src="http://localhost/MonAdresse/Cible/wp-content/gallery/test/thumbs/thumbs_screenshot.jpg" 
    	title="screenshot" 
    	alt="screenshot" 
    	id="6" 
    	class="" width="" />
    </a>
    Ce sont les liens <a> qui m'affiche mon image. Or ils sont bien présent (bien qu'il soit écrit en rouge dans mon Ctrl+U FF, on sait jamais, ça peut vouloir dire qlq chose... au point où j'en suis je doute de tout.)

    Bref, any informations are welcome! (ajax, module php, i dont know...)

    En attendant, je vais tester ta méthode.

    Merci d'avance.


    CORRECTION : problème bidon
    J'ai oublier un ">" mes balises <a>... normal donc qu'il n'y ait pas eu d'alerte PHP, et pas d'images... bref. J'ai trouvé l'erreur.

    Merci quand même rawsrc pour la simplification que tu m'a inspiré.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 12
    Par défaut
    Magnifique!!

    grâce à toi rawsrc, non seulement j'ai simplifier mon code (qui en avait bien besoin la brute!), mais en plus ça fonctionne!!

    Bon, j'ai pas ma réponse, mais on sait jamais. Pour le moment, le problème est outrepassé.

    Pour les curieux qui voudrait faire de la récupération de données dans plusieurs répertoires d'un même dossier pour une galerie photo, avec wordpress (plein de mot-clés pour ceux qu'ont besoin d'aide), voici le code opérationnel :

    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
     
    global $wpdb; // outils de requête WP
    $photos = $wpdb->get_results("SELECT * FROM " .$wpdb->nggpictures. "" , 'ARRAY_A');
    $galleries = $wpdb->get_results("SELECT * FROM " .$wpdb->nggallery. "" , 'ARRAY_A');
    foreach($galleries as $gallery){
      foreach($photos as $photo) {
        if( $photo['galleryid'] == $gallery['gid']){
          $Gpath_thumbs = $gallery['path'].'/thumbs/thumbs_'.$photo['filename']; 
            $folio[] = '<li>
    			<a href="'.$gallery['path'].'/'.$photo['filename'].'" 
    				class="thumb" 
    				id="thumb'.$photo['pid'].'" 
    			  <img src="'.$Gpath_thumbs.'" 
    				title="'.$photo['alttext'].'" 
    				alt="'.$photo['alttext'].'" 
    				id="'.$photo['pid'].'" 
    				class="" width="" />
    			</a>
    			<div class="caption">
    			  <div class="image-title">'.$photo['alttext'].'</div>
    			</div>
    		</li>';
        }
      }
    }
    shuffle($folio);
    echo implode($folio);
    Clair et simple. Parfait. Merci rawsrc!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/12/2011, 09h31
  2. Image de déconnexion qui ne s'affiche pas
    Par Joe-La-Boule dans le forum Langage
    Réponses: 11
    Dernier message: 01/07/2008, 13h44
  3. [EasyPHP] Image de fond qui ne s'affiche pas en localhost
    Par Falcokeo dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 23/02/2008, 03h09
  4. les images et les icones ne s'affichent pas
    Par haw007 dans le forum Qt
    Réponses: 1
    Dernier message: 07/09/2007, 10h13
  5. L'image d'arrière-plan ne s'affiche pas dans IE7
    Par zonob dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 15/06/2007, 09h05

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