Page 1 sur 4
faire une boucle
Posté : 28 nov. 2012, 21:22
par baddevil
bonsoir,
je souhaiterai afficher le resultat de fichiers a partir d une boucle qui compte les fichiers et les affiche si ils existent
j ai en parcourant le net trouvé 2 choses mais je souhaiterai compilé les deux
j ai dabord
$nb_fichier = 0;
if($dossier = opendir('photos'));
{
while(false !== ($fichier = readdir($dossier)))
{
if($fichier != '.' && $fichier != '..' && $fichier != 'index.php')
{
$nb_fichier++; // On incrémente le compteur de 1
echo '<li><img width="100" src="photos/' . $fichier . '"></li>';
} // On ferme le if (qui permet de ne pas afficher index.php, etc.)
} // On termine la boucle
echo '</ul><br />';
echo 'Il y a <strong>' . $nb_fichier .'</strong> fichier(s) dans le dossier';
closedir($dossier);
}
hors la cela m affiche le dossier complet mais je souhaite afficher seulement ceux qui sont dans ma variable comme ceci
$i = 1; //on définit la variable $i qui sera notre nombre que l'on incrémentera. Ici $i va commencer à 0
while($i < 11)
{ $photo='CARDIFF_BBDZ_'.$IdVO.'_'.$i.'.jpg';
echo $photo.'<br />';
$i++;
}
en faite ce sont des images
le $idVO c est un identifiant et le $i le numero de l image qui portera 1,2,3 ect.... selon le nombre d image par rapport a l identifiant
j espere que j ai été clair dans mon explication
Re: faire une boucle
Posté : 28 nov. 2012, 22:09
par two3d
Bonsoir,
tu aimerais récupérer seulement les photos avec un nom bien défini en fait ?
Re: faire une boucle
Posté : 28 nov. 2012, 22:34
par baddevil
oui c est bien ca
Re: faire une boucle
Posté : 28 nov. 2012, 23:56
par two3d
fait un preg_match dans ce cas
if(preg_match("#^nom_de_la_photo_([0-9]+).(jpg|png|gif)$#i",$fichier)) {
echo '<img src="'.$fichier.'" alt="chemin incorrect" />';
} else {
echo "Fichier non trouvé";
}
le "i" à la fin du preg_match sert à dire que même si le nom du fichier est en majuscule, c'est bon quand même:
exemple:
Nom_de_la_photo...
ou nom_de_la_photo... fonctionne quand même (idem pour l'extension, Gif, gif, giF fonctionnera et te dira que cette photo existe dans le dossier)
Re: faire une boucle
Posté : 29 nov. 2012, 00:13
par baddevil
merci pour ton aide mais j ai pas bien saisi comment utlisé ton code
en faite me faudrai ce code
$i = 1; //on définit la variable $i qui sera notre nombre que l'on incrémentera. Ici $i va commencer à 0
while($i < 11)
{ $photo='CARDIFF_BBDZ_'.$IdVO.'_'.$i.'.jpg';
echo $photo.'<br />';
$i++;
}
mais dans le while c est pas <11 mais tant qu il en trouve dans mon dossier car $photo='CARDIFF_BBDZ_'.$IdVO.'_'.$i.'.jpg' me retourne bien les nom mais jusqu a 10 alors que y a peut etre que 3 ou 4 images
Re: faire une boucle
Posté : 29 nov. 2012, 02:08
par two3d
voila le code qui permet d'ouvrir correctement un dossier:
$nb_fichier = 0;
echo '<ul>';
if($dossier = opendir('./mondossier')) {
while(false !== ($fichier = readdir($dossier))) {
if(preg_match("#^nom_de_la_photo_([0-9]+).(jpg|png|gif)$#i",$fichier)) {
$nb_fichier++; // On incrémente le compteur de 1
echo '<li><a href="./mondossier/' . $fichier . '">' . $fichier . '</a></li>';
} // On ferme le if (qui permet de ne pas afficher index.php, etc.)
} // On termine la boucle
echo '</ul><br />';
echo 'Il y a <strong>' . $nb_fichier .'</strong> fichier(s) dans le dossier';
closedir($dossier);
} else {
echo 'Le dossier n\' a pas pu être ouvert';
}
Re: faire une boucle
Posté : 29 nov. 2012, 10:09
par baddevil
alors j ai fais ceci
$nb_fichier = 0;
echo '<ul>';
if($dossier = opendir('./photos')) {
while(false !== ($fichier = readdir($dossier))) {
if(preg_match("#CARDIFF_BBDZ_'.$IdVO.'_([0-9]+).(jpg|png|gif)$#i",$fichier)) {
$nb_fichier++; // On incrémente le compteur de 1
echo '<li><a href="photos/' . $fichier . '">' . $fichier . '</a></li>';
} // On ferme le if (qui permet de ne pas afficher index.php, etc.)
} // On termine la boucle
echo '</ul><br />';
echo 'Il y a <strong>' . $nb_fichier .'</strong> fichier(s) dans le dossier';
closedir($dossier);
} else {
echo 'Le dossier n\' a pas pu être ouvert';
closedir($dossier);
}
seulement il me dit qu il y a 0 fichier dans le dossier
Re: faire une boucle
Posté : 29 nov. 2012, 14:26
par two3d
$IdVO est bien déclarée ?
Re: faire une boucle
Posté : 29 nov. 2012, 19:36
par baddevil
ben si je fais echo $IdVO ca me retourne bien le bon numero donc oui
Re: faire une boucle
Posté : 29 nov. 2012, 22:48
par two3d
Faut essayer de trouver la faille.
en dessous du commentaire: " // On ferme le if (qui permet de ne pas afficher index.php, etc.)" met:
echo $fichier."<br />";
sinon, regarde si les extensions de tes photo sont bien toutes en jpg, png ou gif (d'où le preg_match (jpg|png|gif), ce qui veut dire, soit ça |(la barre veut "ou") soit ça | soit ça etc...
Re: faire une boucle
Posté : 29 nov. 2012, 22:52
par AB
On peut faire ça en peu de lignes avec php >= 5.2
$dossier = 'photos';
$IdVO = '5';
$match = '#CARDIFF_BBDZ_'.$IdVO.'_([0-9]+).(jpg|png|gif)$#i';
$files = new RegexIterator(new DirectoryIterator($dossier),$match);
$nb_fichiers = iterator_count($files);
echo $nb_fichiers.' fichiers<br>';
foreach ($files as $value)
{
echo '<img src="'.$dossier.'/'.$value.'"/><br>';
echo $value.'<br>';
}
(code testé fonctionnel)
Re: faire une boucle
Posté : 29 nov. 2012, 23:30
par baddevil
On peut faire ça en peu de lignes avec php >= 5.2
$dossier = 'photos';
$IdVO = '5';
$match = '#CARDIFF_BBDZ_'.$IdVO.'_([0-9]+).(jpg|png|gif)$#i';
$files = new RegexIterator(new DirectoryIterator($dossier),$match);
$nb_fichiers = iterator_count($files);
echo $nb_fichiers.' fichiers<br>';
foreach ($files as $value)
{
echo '<img src="'.$dossier.'/'.$value.'"/><br>';
echo $value.'<br>';
}
(code testé fonctionnel)
merci a vous deux , AB ton code fonstionne tres bien merci beaucoup
Re: [RESOLU] faire une boucle
Posté : 30 nov. 2012, 00:17
par two3d
On peut faire ça en peu de lignes avec php >= 5.2
en effet mais je préfère la simplicité, les genre de boucle avec foreach ne sont pas mon truc, j'ai toujours réussi à coder sans à vrai dire
c'était quoi le problème alors ?
Re: [RESOLU] faire une boucle
Posté : 30 nov. 2012, 00:26
par baddevil
ben franchement je ne sais pas j ai pris de le code de AB j ai testé et ca ma retourné exactement les images selectionnées
edit; pour en revenir a ton code j ai mis le echo de $fichier et ca me retourne le dossier complet
Re: [RESOLU] faire une boucle
Posté : 30 nov. 2012, 00:45
par two3d
donc c'est le preg match qui en cause...