Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/12/2011, 21h11   #1
Invité régulier
 
Homme Liva Castanet
Webdesigner | Développeur Web
Inscription : décembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Homme Liva Castanet
Âge : 29
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Webdesigner | Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2011
Messages : 8
Points : 7
Points : 7
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 :
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?!
data-jack est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 21h16   #2
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
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)
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 22h19   #3
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
J'ai regardé ton code et je dois dire que c'est très confus, m'enfin je l'ai repris complètement :
Code :
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.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2011, 00h31   #4
Invité régulier
 
Homme Liva Castanet
Webdesigner | Développeur Web
Inscription : décembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Homme Liva Castanet
Âge : 29
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Webdesigner | Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2011
Messages : 8
Points : 7
Points : 7
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 :
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 :
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é.
data-jack est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2011, 09h23   #5
Invité régulier
 
Homme Liva Castanet
Webdesigner | Développeur Web
Inscription : décembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Homme Liva Castanet
Âge : 29
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Webdesigner | Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2011
Messages : 8
Points : 7
Points : 7
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 :
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!
data-jack est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h01.


 
 
 
 
Partenaires

Hébergement Web