PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 01-08-2010 10:58:52

maria
Membre
Inscription : 23-08-2009
Messages : 9

affichage des images d'un dossier - ordre par nom

Bonjour,

j'avais testé le code suivant avec ZAZOU MINIWEBSERVER,
et l'affichage de images était comme il fallait,
c'est-à-dire, listé par ordre alphabetique.

Maintenant, je viens de publier le site,
et avec ce server la suite des images est entièrement accidentelle ...
Je ne le comprends pas du tout.
C'est la première fois que je mets une site sur un server ...
Est-ce que je dois faire des configurations du server ??

Merci d'avance
Maria


<?php while($data = mysql_fetch_array($req)) {
        $trip= str_replace("_"," ",$data["trip"]);?>
<div class="title"><?php echo $trip; ?></div>
<div class="text"><?php echo ($data['text']); ?></div>
</div> 
<div class="photo">
    <?php
    //AFFICHER LES PHOTOS DU DOSSIER IMAGES / VIG_PHOTO
     $dossier = opendir ('../images/vig_photo/'.$data["conti"].'/'.$data["trip"]);
        while (false !==($fichier = readdir ($dossier))){
        if ($fichier != "." && $fichier != ".." && $fichier != ".BridgeSort") {
        $num = array("$i" => "$fichier");
        $i++;
        $tailleimg=getimagesize('../images/vig_photo/'.$data["conti"].'/'.$data["trip"].'/'.$fichier);?>
    <a href="photo3.php?i=<?php echo $i;?>&conti=<?php echo $data["conti"]?>&trip=<?php echo $data["trip"]; ?>&photo=<?php echo $fichier;?>">
        <img src="../images/vig_photo/<?php echo $data["conti"].'/'.$data["trip"]; ?>/<?php echo $fichier; ?>"
        alt="<?php echo $fichier; ?>" border="0"/></a>
<?php
    }
    }
} ?>

Hors ligne

#2 01-08-2010 13:32:29

Ralph303
Membre
Lieu : St-Cyr l'Ecole
Inscription : 30-05-2009
Messages : 98
Site Web

Re : affichage des images d'un dossier - ordre par nom

Bonjour,

à aucun moment tu ne tries les fichiers.
Peut être qu'en local, tes fichiers se trouvent triés avec le readdir et que ce ne soit pas le cas avec ton serveur...

@++

Hors ligne

#3 01-08-2010 13:35:35

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : affichage des images d'un dossier - ordre par nom

documentation a écrit :

readdir() retourne le nom du fichier suivant dans le dossier identifié par dir_handle. Les noms sont retournés dans l'ordre dans lequel ils sont enregistrés dans le système de fichiers.

Donc en effet il est possible que le serveur ne liste pas les fichiers comme ton local (peut être un listing par date de modification par exemple).

Pour palier à cela tu peux créer un tableau et le trier :

$dossier = opendir ('../images/vig_photo/'.$data["conti"].'/'.$data["trip"]);
$liste_fichier = array();
while (false !=sad$fichier = readdir ($dossier))){
  if ($fichier != "." && $fichier != ".." && $fichier != ".BridgeSort") {
    $liste_fichier[] = $fichier; // ajout du nom du fichier dans le tableau
  }
}
sort($liste_fichier); // tri par ordre alphabétique des noms

Et avec cela il ne te reste plus qu'à reparcourir ce tableau pour afficher tes images.

Hors ligne

#4 01-08-2010 15:00:02

maria
Membre
Inscription : 23-08-2009
Messages : 9

Re : affichage des images d'un dossier - ordre par nom

merci pour la réponse,
mais je ne l'arrive pas à appliquer ..

comment afficher les images ?

et pourquoi sort($liste_fichier); est hors de la boucle ???
vue qu' il ya aussi ce code à ne pas oulier :


       $num = array("$i" => "$fichier");
        $i++;


(d'abord je veux afficher toutes les images (vignettes) d'un dossier,
chaque image est attribuée à un numéro et en cliquant sur l'image
une nouvelle page est affichée avec cette image en taille plus grande
et avec un compteur "next / back" pour afficher l'image suivante ou précedente ..)

désolée, mais je n'ai pas beaucoup d'expérience ..

merci pour tout soutien
maria

Hors ligne

#5 01-08-2010 16:22:37

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : affichage des images d'un dossier - ordre par nom

Le $num est une abération dans le code que tu nous as présenté.
Car il est écrasé à chaque nouvelle itération.
Le $i représente la position de l'image je suppose, il est donc incorrect dans ton code courant sur le serveur puisque les fichiers ne sont pas dans l'ordre.
La fonction sort(il suffit de cliquer dessus) sert à réordonner un tableau (dans le cas présent par ordre alphabétique).

Quand à ton autre interrogation je te renvoie à ce cours : Fonctionnement des tableaux
Donc il te suffit de faire une boucle sur le contenu du tableau créé afin d'afficher tes images.

Hors ligne

#6 02-08-2010 10:29:32

maria
Membre
Inscription : 23-08-2009
Messages : 9

Re : affichage des images d'un dossier - ordre par nom

MERCI !

VOICI DONC MON NOUVEAU CODE :
----------------------------------------------------------------------------------------------------
$dossier = opendir ('../images/vig_photo/'.$data["conti"].'/'.$data["trip"]);
        $liste_fichier = array(1 =>"");
        while (false !==($fichier = readdir ($dossier))){
        if ($fichier != "." && $fichier != ".." && $fichier != ".BridgeSort") {   
        $liste_fichier[] = $fichier;        
    }
    }
    sort($liste_fichier);
    for($i=1;$i<sizeof($liste_fichier);$i++)
        {
<a href="photo3.php?i=<?php echo $i;?>&conti=<?php echo $data["conti"]?>&trip=<?php echo $data["trip"]; ?>&photo=<?php echo $liste_fichier[$i];?>">
<img src="../images/vig_photo/<?php echo $data["conti"].'/'.$data["trip"]; ?>/<?php echo $liste_fichier[$i]; ?>" alt="<?php echo $i; ?>" border="0"/></a>
<?php } ?>
----------------------------------------------------------------------------------------------------
d'abbord je n'avais pas trop compris et je pensais que je n'arriverai jamais !
mais maintenant ... ça marche ...

comme je voulais que la première image est attribuée à 1 et non à 0
j'ai écrit :

$liste_fichier = array(1 =>"");

est-ce que c'est correcte ?? ou est-ce qu'il y a une manière d'écriture plus propre ???

bon, au moins ça marche ...


merci
maria

Hors ligne

#7 02-08-2010 11:05:55

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : affichage des images d'un dossier - ordre par nom

Quel est l'intérêt de faire la différence entre 0 et 1 ? Un index a-t-il une réelle incidence sur le reste de ton code ?
Selon moi il est mieux (d'un point de vue mémoire d'une part et compréhension du code d'autre part) de toujours remplir un tableau sans trou.
Après il est facile de jouer avec les index.
Si tu as un code utilisant un index $i allant de 1 à X et que ton tableau va de 0 à Y tu peux aisément parcourir ton tableau en utilisant $i - 1.

Hors ligne

#8 04-08-2010 15:10:22

maria
Membre
Inscription : 23-08-2009
Messages : 9

Re : affichage des images d'un dossier - ordre par nom

oui, en effet,
j'avais recupéré la variable $i dans la page suivante
afin d'afficher la photo en grande taille ... et afficher p.ex.
1/20
-et je ne voulais pas afficher 0/20 ..

mais maintenant j'ai compris comment faire
avec un tableau sans trou !!

merci beaucoup
maria

Hors ligne

Pied de page des forums