readdir 2 dossier en même temps

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 : readdir 2 dossier en même temps

Re: readdir 2 dossier en même temps

par branka » 25 juil. 2012, 13:23

Bonjour,

merci pour les conseils je viens de les appliquer et effectivement ça fonctionne ^^

Re: readdir 2 dossier en même temps

par xTG » 25 juil. 2012, 08:50

Remplaces les short_tags : <? par <?php
Et ceci peut se simplifier :
$liste[$nb] = $fic;
$nb++;
// en
$liste[] = $fic;

Re: readdir 2 dossier en même temps

par branka » 25 juil. 2012, 01:47

re bonsoir,

suite à la solution proposée j'ai creusé un peu, et en trouvant un autre script j'ai pu le modifier en comprenant le coup du while qui effectivement ne pouvait pas marcher...

je laisse le code complet si jamais ça intéresse (je pense qu'il peut être mieux, si d'ailleurs quelqu'un voit des améliorations qu'il n'hésite pas ^^)
il y a de plus une fonction de tri qui permettant d'automatiquement mettre la thumb 1 avec la vidéo 1 :
<?
$dir = "../"."abba"."/pages";
$dir2 = "../"."abba"."/thumb";
$liste = Array();
$od = opendir($dir);
$od2 = opendir($dir2);
$nb=0;
	while (false !== ($fic= readdir($od))) {
	 if($fic!= '.' && $fic!='..' && $fic!='index.html'){
		$liste[$nb] = $fic;
		$nb++;
	 }
	}
		while (false !== ($fic= readdir($od2))) {
	 if($fic!= '.' && $fic!='..' && $fic!='index.html'){
		$liste2[$nb] = $fic;
		$nb++;
	 }
	}
	sort($liste);
	sort($liste2);
	for($i=0;$i<count($liste);$i++){
		if($liste[$i] != '.' && $liste[$i] != '..' && $liste[$i] != 'index.html' ){
		$lu = $liste[$i];
		$lu2 = $liste2[$i];
		$lien=$dir.'/'.$lu;
		$lien2=$dir2.'/'.$lu2;
		print '<a href="'.$lien.'"><img class="iframe" src="'.$lien2.'"></a>';
		}
		}
		?>

Re: readdir 2 dossier en même temps

par branka » 24 juil. 2012, 23:20

bonsoir,

merci pour cette réponse rapide.
j'avais effectivement pensé à ça ce qui semblerait logique.
cependant je n'arrive à solutionner le problème.
ce que tu expliques signifie que le while devrait directement contenir les deux readdir ?
j'avais essayé ça également mais ça ne m'affiche plus rien du tout :'(
<?
$dir="../abba/pages";
$dirimg="../abba/thumb";
$dossier=opendir($dir);
$dossierthumb=opendir($dirimg);
while($fichier=readdir($dossier) && $fichierimg=readdir($dossierthumb)){
$berk=array('.', '..', 'index.html');
if(!in_array($fichier,$berk)){
$lien=$dir.'/'.$fichier;
if(!in_array($fichierimg,$berk)){
$lienthumb=$dirimg.'/'.$fichierimg;
if(file_exists($lien)){
if(file_exists($lienthumb)){
print '<a href="'.$lien.'"><img class="iframe" src="'.$lienthumb.'"></a>';
}
}
}
}
}
?>

Re: readdir 2 dossier en même temps

par xTG » 24 juil. 2012, 23:07

Tu imbriques un while dans un autre, donc tu fais N fois le traitement du seconde while pour une itération du premier.
En gros si tu parcourais un tableau contenant : 1, 2
Cela donnerai :
1 1
1 2
2 1
2 2

J'espère qu'avec cet exemple tu comprendras ton erreur.

readdir 2 dossier en même temps

par branka » 24 juil. 2012, 23:05

Bonjour à vous,

je fais appel à votre aide pour un problème qui m'occupe depuis 2 jours mais qui doit être plus simple avec plus de connaissances (je suis débutant ^^')
j'avais trouvé ce code afin de lister toutes les images d'un dossier pour ne pas avoir à taper manuellement le code à chaque fois (que j'utilise et qui fonctionne correctement) :
<? $dir="../"."$galerie"."/photos";
$dossier=opendir($dir);
while($fichier=readdir($dossier)){
$berk=array('.', '..', 'index.html');
if(!in_array($fichier,$berk)){
$lien=$dir.'/'.$fichier;
if(file_exists($lien)){
print '<img src="'.$lien.'" width="720" height="960">';
}}} ?>
qui me permet d'obtenir :
<img src="../riviere_spbrc/photos/IMG_9403 (Copier).JPG" width="720" height="960">
<img src="../riviere_spbrc/photos/IMG_9385 (Copier).JPG" width="720" height="960">
<img src="../riviere_spbrc/photos/IMG_9456 (Copier).JPG" width="720" height="960">
etc...

je voulais faire la même chose mais cette fois ci pour obtenir :
<a href="../abba/pages/1.php"><img class="iframe" src="../abba/thumb/1.png"></a>
<a href="../abba/pages/2.php"><img class="iframe" src="../abba/thumb/2.png"></a>
etc...

j'ai donc modifié le code :
<?
$dir="../abba/pages";
$dossier=opendir($dir);
while($fichier=readdir($dossier)){
$berk=array('.', '..', 'index.html');
if(!in_array($fichier,$berk)){
$lien=$dir.'/'.$fichier;
if(file_exists($lien)){
$dirimg="../abba/thumb";
$dossierthumb=opendir($dirimg);
while($fichierimg=readdir($dossierthumb)){
$berk=array('.', '..', 'index.html');
if(!in_array($fichierimg,$berk)){
$lienthumb=$dirimg.'/'.$fichierimg;
if(file_exists($lienthumb)){
print '<a href="'.$lien.'"><img class="iframe" src="'.$lienthumb.'"></a>';
}}}}}} ?>
mais j'obtiens ça :
<a href="../abba/pages/1.php"><img class="iframe" src="../abba/thumb/1.png"></a><a href="../abba/pages/1.php"><img class="iframe" src="../abba/thumb/2.png"></a><a href="../abba/pages/1.php"><img class="iframe" src="../abba/thumb/3.png"></a><a href="../abba/pages/1.php"><img class="iframe" src="../abba/thumb/4.png"></a><a href="../abba/pages/2.php"><img class="iframe" src="../abba/thumb/1.png"></a><a href="../abba/pages/2.php"><img class="iframe" src="../abba/thumb/2.png"></a><a href="../abba/pages/2.php"><img class="iframe" src="../abba/thumb/3.png"></a><a href="../abba/pages/2.php"><img class="iframe" src="../abba/thumb/4.png"></a>
etc...

voila je sèche un petit peu là et un petit peu d'aide serait la bienvenue ^^
en vous remerciant par avance