Page 1 sur 2
function listAlbum()
Posté : 06 oct. 2005, 20:08
par joha
je voudrai afficher la liste de mes albums mais en les triants selon un ordre définis, donc pas alphabetique ou aléatoire
j'ai essayé d'inclure une fonction array() mais je capte pas trop
ou placer, et le concept des variables
peut-on m'aider s.v.p ?
function listeAlbums() {
$res='';
if ($rep = opendir(REPERTOIRE_ALBUMS)) {
while ($element = readdir($rep)) {
if (is_dir(REPERTOIRE_ALBUMS."/".$element)
&& $element != '.' && $element != '..')
$res .= AlbumHTML($element);
}
closedir($rep);
} else {
$res = 'Repertoire des albums non accessible !';
}
return $res;
}
Posté : 06 oct. 2005, 20:39
par Cyrano
Déjà, mets un peu d'ordre dans le code pour pouvoir le suivre:
<?php
function listeAlbums()
{
$res="";
if ($rep = opendir(REPERTOIRE_ALBUMS))
{
while ($element = readdir($rep))
{
if (is_dir(REPERTOIRE_ALBUMS."/".$element) && $element != "." && $element != "..")
{
$res .= AlbumHTML($element);
}
}
closedir($rep);
}
else
{
$res = 'Repertoire des albums non accessible !';
}
return $res;
}
?>
Ensuite, quand tu appelles la fonction, tu as quoi comme retour ?
résultat
Posté : 06 oct. 2005, 20:58
par joha
afficher la liste des sous-dossier
se trouvant dans le dossier
"albums" il le fait mais affiche le
résultat dans l'ordre alphabétique
et je voudrais ordonner le résultat
j'avais posé une question similaire
mais je n'arrive pas a adapter
le résultat, voici la réponse
que j'avais reçu :
<?php
$pays = array();
$pays[] = "roumanie";
$pays[] = "albanie";
$pays[] = "zimbabwe";
$pays[] = "autriche";
?>
Posté : 06 oct. 2005, 21:01
par Cyrano
Ça me rapelle quelque chose en effet, mais au lieu de reposer la question, il aurait été avisé de relancer ton sujet
Et ceci dit, ça ne me dit pas non plus dans quel ordre tu veux afficher tes dossiers ni sur quel critère on peut se baser pour définir l'ordre de classement souhaité.
ordre
Posté : 06 oct. 2005, 23:13
par Invité
il n'ya pas de critere
la liste sera toujours fixe ,je voudrai
la définir selon un ordre precis
ex: -espagne
- argentine
-chili
- bresil
il n'y a pas de critere logique
je pense que la reponse qu'on
m'a envoyé est bonne, mais je
ne comprend pas par quoi
je dois remplacer $pays
ni ou je dois inserer ce code
Posté : 07 oct. 2005, 08:55
par Cyrano
Comprends bien une chose. On ne peut pas t'aider si on a pas tous les éléments nécessaires à la compréhension du problème à résoudre.
Tes pays doivent être classés dans un ordre précis : fort bien, il y a donc un critère de tri précis. Tu dois donc avoir une donnée permettant de déterminer lequel vient en premier, en second, en troisième etc... Quelle est cette donnée ? Si tu ne l'as pas, il faut la créer. Tu dois stocker quelque part une liste comportant donc le nom de chaque pays assorti d'un numéro de classement unique. Comment stockes-tu actuellement cette liste?
peut-etre
Posté : 07 oct. 2005, 09:22
par joha
actuellement je n'ai pas
créer cette liste est-ce que
ce fichier doit-etre du type
config.inc ? doit-elle etre simplement appellé
par la page qui liste les sous-dossiers ?
j'ai consulté la doc sur le site et iln'ya
aucune fonction de listage qui
s'applique a mon cas
(croissant,décroissant,numerique
je crois que je comprend mais pourrais-tu
etre plus precis?mon but a moi est simplement de faire un menu
qui sera tjrs fixe et qui pointent sur les sous-dossiers en vue d'afficher
des photos
Posté : 07 oct. 2005, 10:13
par Cyrano
Donc tu as besoin de créer une liste, sur un fichier texte par exemple, qui comporterait tous tes pays dans l'ordre de ton choix. Tu peux générer ce fichier avec les
fonctions de manipulation de fichier en y insérant les informations dont tu as besoin, par exemple :
'nom du pays', './chemin/du/répertoire/';
'Nom d'un autre pays', './chemin/du/répertoire/';
etc...
À partir de ce fichier, tu génères ton menu de navigation. Tu devras ajouter chaque nouveau pays par la suite à ce fichier à la place où tu voudras le classer ou reclasser les pays si l'envie te prend de modifier l'ordre ou encore retirer un pays, le tout indépendament de tes répertoires.
Par exemple, si tu rajoutes un pays mais que les répertoires sont créés mais pas prêts, tu n'auras pas à te soucier d'un lien mort dans ton menu et tu ne rajouteras ton lien qu'en rajoutant ce pays dans le fichier. Comprends-tu le principe ?
code
Posté : 07 oct. 2005, 12:05
par joha
non, j'ai été voir le lien mais cela reste obscure
pour plus de précision
voici le code de départ +
une fonction array que j'ai rajouté
<?php
include('config.inc.php');
function listeAlbums() {
$res='';
if ($rep = opendir(REPERTOIRE_ALBUMS)) {
while ($element = readdir($rep)) {
if (is_dir(REPERTOIRE_ALBUMS."/".$element)
&& $element != '.' && $element != '..')
$tri[$element] = AlbumHTML($element);
}
closedir($rep);
$tri = array(1 => "chairs", 2 => "sofa", 3 => "tables", 4 => "lightings", 5 => "storage", 6 => "objects", 7 => "arts");
foreach($tri as $codehtml) {
$res .= $codehtml;
}
} else {
$res = 'Non accessible';
}
return $res;
}
function AlbumHTML($album) {
$html_avant = ' <tr><td>';
$html_apres = '</td></tr>'."\n";
$res = $html_avant;
$res .= '<a href="album.php?album=';
$res .=urlencode($album).'">';
$res .=htmlentities($album).'</a>';
if ($f = @fopen(REPERTOIRE_ALBUMS.'/'.$album.'/description.txt','r')) {
$desc = htmlentities(fread($f,400));
fclose($f);
$res .= '</td><td>'.str_replace("\n" , "<br />",$desc);
} else {
$res .= '</td><td><i></i>';
}
$res .= $html_apres;
return $res;
}
?>
(est-ce que je suis dans le bon?)
Posté : 07 oct. 2005, 12:34
par Cyrano
Modération : Joha, édite ton message et encadre-moi ce code en utilisant le bouton [php], c'est pénible à lire sans ça, merci.
correction
Posté : 07 oct. 2005, 12:43
par Invité
Posté le: 07 Oct 2005, 11:05 Sujet du message: code
--------------------------------------------------------------------------------
non, j'ai été voir le lien mais cela reste obscure
pour plus de précision
voici le code de départ +
une fonction array que j'ai rajouté
<?php
include('config.inc.php');
function listeAlbums() {
$res='';
if ($rep = opendir(REPERTOIRE_ALBUMS)) {
while ($element = readdir($rep)) {
if (is_dir(REPERTOIRE_ALBUMS."/".$element)
&& $element != '.' && $element != '..')
$tri[$element] = AlbumHTML($element);
}
closedir($rep);
$tri = array(1 => "chairs", 2 => "sofa", 3 => "tables", 4 => "lightings", 5 => "storage", 6 => "objects", 7 => "arts");
foreach($tri as $codehtml) {
$res .= $codehtml;
}
} else {
$res = 'Non accessible';
}
return $res;
}
function AlbumHTML($album) {
$html_avant = ' <tr><td>';
$html_apres = '</td></tr>'."\n";
$res = $html_avant;
$res .= '<a href="album.php?album=';
$res .=urlencode($album).'">';
$res .=htmlentities($album).'</a>';
if ($f = @fopen(REPERTOIRE_ALBUMS.'/'.$album.'/description.txt','r')) {
$desc = htmlentities(fread($f,400));
fclose($f);
$res .= '</td><td>'.str_replace("\n" , "<br />",$desc);
} else {
$res .= '</td><td><i></i>';
}
$res .= $html_apres;
return $res;
}
?>
(est-ce que je suis dans le bon?)
Posté : 07 oct. 2005, 12:56
par Cyrano
Ton code ne sert à rien si tu ne saisis pas le pricipe de fonctionnement

Dis moi ce que tu as compris et à quel endroit tu bloques.
Posté : 07 oct. 2005, 14:05
par joha
ok
d'apres ce que j'ai compris
la fonction
ListeAlbums
ouvre le répertoire et liste
les dossiers et affiche cette liste
dans l'ordre alphabétique
si l'on rajoute
sort($tri)
ce que je ne veux surtout pas
(c'est l'essentiel de mon probleme)
je voudrais lister ce répertoire
d'une maniere precise et je connais
le nom de chaque dossier et le nbre
et l'ordre de chaque dossier
ne changera jamais
pour la fonction
AlbumHTML
je suis moins sur je pense que c'est pour
afficher les descriptions des dossiers
mais rien n'est moins sur
en tout cas merci de prendre le temps
Posté : 07 oct. 2005, 14:17
par mere-teresa
Il faut qu'en plus de lister ton tableau tu attribues un numéro d'ordre à chaque élément.
Tu auras donc un tableau du genre :
$tri
{
0 => Array
0 => "Chili"
1 => 2
1 => Array
0 => "Espagne"
1 => 6
2 => Array
0 => "Italie"
1 => 1
3 => Array
0 => "Lituanie"
1 => 3
}
Pour attribuer ce numéro, tu devras t'appuyer sur une liste pré-définie ("Chili" est le numéro 2) que tu stockeras comme tu veux: BDD, fichier texte, XML, variable PHP dans un fichier de config...Etc...
Et cette attribution devra se faire dans la boucle.
Tu pourras alors trier le tableau avec l'instruction array_multisort(), avant de créer le HTML.
pas encore
Posté : 07 oct. 2005, 14:47
par joha
désolé mais ce n'est pas super clair
le
$tri {
0 = array
etc....
doit-il se trouver a la place du
sort($tri);
ou bien dans un fichier externe?
comment l'apeller dans la boucle?