Bonjour,
Je serais très reconnaissant à la personne qui veut bien m'aider car je n'y parviens vraiment pas seul.
Préambule:
J'ai une base de données qui contient des images (ou plutôt des adresses d'images). Chaque photo est associée à un pays.
J'ai une galerie flash qui doit être alimentée par un fichier XML.
Je génère ce fichier XML dynamiquement, en PHP, à partir des images contenus dans ma BDD.
Ce fichier XML se présente ainsi (en simplifié):
Après pas mal de galère, je suis parvenu à créer le script qui puisse générer ce fichier (qui contient en réalité plus d'infos mais je simplifie au maximum).
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<?xml version="1.0" encoding="utf-8" ?> <gallery> <album name="country1"> <image src="xxy.jpg" /> <image src="yxx.jpg" /> </album> <album name="country2"> <image src="xyy.jpg" /> <image src="yxx.jpg" /> </album> <album name="country3"> <image src="zzz.jpg" /> <image src="zzx.jpg" /> </album> </gallery>
Le voici (encore une fois c'est simplifié au maximum):
J'obtiens donc une galerie photos divisée en plusieurs albums - chaun d'entre eux étant un pays différent (country). Alors, puisque ça marche, me direz-vous, quel est le problème?
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 <? //Génération du fichier gallery.xml $fichier1 = 'gallery.xml'; $fp1 = fopen($fichier1, "w"); $book1 = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"; $book1 .= "<gallery>\n"; // Ci-dessous, je vais chercher dans ma base les photos à afficher $tmp1 = mysql_query("SELECT id, country, pic1 FROM ".C_MYSQL_MEMBERS." order by country ASC"); while($i=mysql_fetch_array($tmp1)) { if(!isset($cat)) // Nouvelle utilisation: On va donc créer un premier album { $book1 .= "\t <album name=\"".$i['country']."\">\n"; $book1 .= "\t\t <image src=\"".$i['pic1']."\" />\n"; //On liste les photos de cet album (=de ce pays) $cat = $i['country']; //On attribue une valeur a $cat pour que celui ne soit plus vide } elseif ($i['country'] == $cat) // On doit donc rester dans le même album car le pays n'a pas changé { $book1 .= "\t\t <image src=\"".$i['pic1']."\" />\n"; } else // On arrive à une photo qui se trouve dans un nouveau pays. { $book1 .= "\t </album>\n"; // On ferme donc l'album précédent... $book1 .= "\t <album name=\"".$i['country']."\">\n"; // ...et on en crée un nouveau $book1 .= "\t\t <image src=\"".$i['pic1']."\" />\n"; $cat = $i['country']; } } $book1 .= "\t</album>\n"; // Et on clôt le fichier xml... $book1 .= "</gallery>\n"; fwrite($fp1, $book1); fclose($fp1); ?>
Le problème, c'est que dans certains pays, il y a plusieurs centaines de photos et que, dans ces pays-là, ça fait un peu planter l'animation flash lorsqu'on les ouvre. J'aimerais donc que dès qu'on atteint un certain nombre de photos dans un pays (disons 200), on crée automatiquement un nouvel album qui s'appellerait NOMDUPAYS-2, NOMDUPAYS-3, NOMDUPAYS-4, etc. Un peu comme lorsqu'on veut afficher seulement 20 résultats par page et qu'il faut passer à la page suivante pour afficher les 20 suivants.
Franchement, cela me dépasse... J'ai essayé des choses mais ça ne mène à rien. Qui saurait m'aider à modifier mon code PHP pour y parvenir?
Mille fois merci de m'avoir lu jusqu'ici.
Lorange
Partager