function listAlbum()

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : function listAlbum()

le retour

par joha » 11 oct. 2005, 10:58

coucou désolé d'avoir interrompu
j'ai créé un fichier comme conseillé
et dans ma page j'ai mis ce fichier en
include comme ceci :
<?php
  include('config.inc.php');
  include('conf_listeAlbums.inc.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;
  }
echo "<pre>";var_dump($element);echo "</pre>"; 
  function AlbumHTML($album) {
j'ai fait
var_dump
et j'obtiens effectivement un tableau
comme ceci:

Code : Tout sélectionner

array(7) { [0]=> string(6) "chairs" [1]=> string(6) "tables" [2]=> string(4) "sofa" [4]=> string(8) "lighting" [5]=> string(7) "storage" [6]=> string(7) "objects" [7]=> string(4) "arts" }
mais comment utiliser ces valeurs
pour faire un tableau qui affichera
les titres ?
précedemment on m'as dit que cela
doit ce faire dans la boucle?
mais je suis perdu...

Re: function listAlbum()

par mere-teresa » 07 oct. 2005, 16:41

Il te faut alors reprendre le code que tu postai en premier...et le modifier.
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;
  }
En sachant qu'avant de donner à traiter $element à la fonction AlbumHTML(), il va falloir classer $element dans ton ordre voulu.

Fais donc un echo "<pre>";var_dump($element);echo "</pre>"; avant la fonction AlbumHTML...pour voir ce que contient ta variable.

Et crées toi un fichier que tu nommeras conf_listeAlbums.inc.php
qui contiendra un tableau associant les numéros aux albums.

par joha » 07 oct. 2005, 15:33

ok
mais comment apeller
ce fichier dans le code?
include ou bien dois-je nommer
mon fichier 'element'
ou bien je suis a coté de la plaque
ou meme carrément a l'ouest
mais je subodore un début d'épiphanie

par mere-teresa » 07 oct. 2005, 15:01

Je n'écrirai pas de code, c'est ma façon de faire :)
Mais je peux t'expliquer longtemps....

Tu avais bien compris le fonctionnement...
ok
d'apres ce que j'ai compris
la fonction
PHP:
ListeAlbums
ouvre le répertoire et liste
les dossiers et affiche cette liste
dans l'ordre alphabétique
si l'on rajoute
PHP:
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
PHP:
AlbumHTML

je suis moins sur je pense que c'est pour
afficher les descriptions des dossiers
Avant d'envoyer les données à la fonction AlbumHTML, tu peux les classer par ordre alphabétique avec sort($tri), ce que tu ne veux pas...tu veux les classer par un ordre pré-défini.

Comme te l'a dit 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.
Cette liste peut tout simplement être une variable PHP, ou plusieurs variables PHP.
Il faut te servir de cette liste pour classer tes données.

Mais comment faire ?

Est-ce que tu suis, jusque là ?

par joha » 07 oct. 2005, 14:57

heu....pardon?!
:shock:

par mere-teresa » 07 oct. 2005, 14:52

Non, il n'y a aucun code dans mon message précédent, mais c'est pas facile de représenter un tableau PHP en l'écrivant. C'était une description de ce que tu devais obtenir comme donnée à la place de ce que tu obtiens actuellement. ($element)

pas encore

par joha » 07 oct. 2005, 14:47

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?

par mere-teresa » 07 oct. 2005, 14:17

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.

par joha » 07 oct. 2005, 14:05

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

par Cyrano » 07 oct. 2005, 12:56

Ton code ne sert à rien si tu ne saisis pas le pricipe de fonctionnement :-k
Dis moi ce que tu as compris et à quel endroit tu bloques.

correction

par Invité » 07 oct. 2005, 12:43

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?)

par Cyrano » 07 oct. 2005, 12:34

Modération : Joha, édite ton message et encadre-moi ce code en utilisant le bouton [php], c'est pénible à lire sans ça, merci.

code

par joha » 07 oct. 2005, 12:05

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?)

par Cyrano » 07 oct. 2005, 10:13

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 ?

peut-etre

par joha » 07 oct. 2005, 09:22

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