Vous n'êtes pas identifié(e).
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
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
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 :
Et avec cela il ne te reste plus qu'à reparcourir ce tableau pour afficher tes images.
Hors ligne
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
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
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
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
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