Pb de code pour lecture du contenu d'un repertoire !!

fredericmaill Messages postés 144 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 22 mars 2006 - 3 févr. 2005 à 13:26
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 4 févr. 2005 à 13:47
Salut,

je bloque sur un truc tout bete et ca m'enerve grave !!!

j'ai fait un script qui vas ouvrir un repertoire et qui vas rechercher dans ce repertoire tout les fichiers de type txt.

ensuite je fais des tests sur chacun de ces fichier pour pouvoir sauver sans des variable :
le nom du fichier, sa date de creation sa date de modification , sa taille.

je comprend pas l'erreur dans mon code, meme appres plusieurs test et multuiples relectures je comprend pas merci de m'aider.

voici mon code :

<?php


function testdate($date)
{
return date("D/M/Y H:i:s",$date);
}


$rep = "/test/";
echo $rep;
$dir = opendir($rep);
$j=0;
$i=0; while (false !($f readdir($dir)))
{
echo "_test while num 1_";

if(is_file($rep.$f))
{
echo "_test if num 1_";


if(preg_match("/.txt$/",$f))
{
echo "_test if num 2_";
echo "_test_";
echo $f;
echo "_test_";



while($i<sizeof($f))
{

echo "_test while num 3 affichage !!!_";
/*
$fileInfo = stat($rep.$f) ;
echo '' ;
print_r($fileInfo) ;
echo '

';
*/
$nom=$f[$i];
echo $nom;
$taille=filesize($rep.$f[$i]);
echo $taille;
$date_crea=testdate(filectime($rep.$f[$i]));
echo $date_crea;
$date_modif=testdate(filemtime($rep.$f[$i]));
echo $date_modif;

$i= $i+1;


// requette d'insertion
//$query = 'INSERT INTO fichiers (nom,taille,date_crea,date_modif) VALUES ($nom,$taille,$date_crea,$date_modif));';
//$result = mysql_query($query);


//return $result;

}
}

}

}


?>

encore merci pour votre aide, je n'y comprend plus rien a ce code !! grrrr

frederic

vive PHP!!!, vive la prog !!!

14 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
3 févr. 2005 à 13:54
Hello,



tu as deja poste ce truc, et je t'ai repondu.
0
fredericmaill Messages postés 144 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 22 mars 2006
3 févr. 2005 à 14:00
escuse moi je crois que c'est plus le meme proble, j'ai aplliqué les remarque que tu m'avais faites, malgré cela le code n'est toujours pas correct.

d'appres mon debug, le script se bloquerais appres le premier while!

vive PHP !!!, vive la prog !!!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
3 févr. 2005 à 14:43
Donne les erreurs que tu as?
0
fredericmaill Messages postés 144 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 22 mars 2006
3 févr. 2005 à 14:56
selon les echo qui me servent de debug, je constate quem on script ce bloque au ptrmier while !!

vive PHP !!!, vive la prog !!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fredericmaill Messages postés 144 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 22 mars 2006
3 févr. 2005 à 14:56
selon les echo qui me servent de debug, je constate quem on script ce bloque au ptrmier while !!

vive PHP !!!, vive la prog !!!
0
fredericmaill Messages postés 144 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 22 mars 2006
3 févr. 2005 à 15:23
Il n'y a aucun message d'erreur au lancement du script

vive PHP !!!, vive la prog !!!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
3 févr. 2005 à 15:29
C'est ca ton 1er while :



while (false !($f readdir($dir)))



?



Elle est curieuse ta condition. Ce ne sont pas des objets, deja. La tu
fais un test pour savoir s'ils sont identiques...mais a quoi ? Et
du meme type....mais que quoi?



while ($f=readdir($dir))



devrait suffire.
0
fredericmaill Messages postés 144 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 22 mars 2006
4 févr. 2005 à 13:07
Merci malalam !!!!


Mon problème sur le premier While est résolu ; mais comme un pb n’arrive jamais seul !! lol





La lettre “t” apparaît, après l’initialisation de la variable $REP qu détermine le chemin d’accès pour l’ouverture du répertoire ou s’effectueras tout les test de mon script/





Cette lettre « t » apparaissant donc a la fin de mon chemin d’accès au répertoire bloque mon script car rend ce chemin erroné.








D’où peut provenir cette lettre.





J’ai testé ce script sur un autre ordinateur et le comble même problème mais ce n’était pas la lettre « t » qui apparaissais mais la lettre «a ».



Mon script PHP :



0
fredericmaill Messages postés 144 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 22 mars 2006
4 févr. 2005 à 13:07
Merci malalam !!!!


Mon problème sur le premier While est résolu ; mais comme un pb n’arrive jamais seul !! lol





La lettre “t” apparaît, après l’initialisation de la variable $REP qu détermine le chemin d’accès pour l’ouverture du répertoire ou s’effectueras tout les test de mon script/





Cette lettre « t » apparaissant donc a la fin de mon chemin d’accès au répertoire bloque mon script car rend ce chemin erroné.








D’où peut provenir cette lettre.





J’ai testé ce script sur un autre ordinateur et le comble même problème mais ce n’était pas la lettre « t » qui apparaissais mais la lettre «a ».



Mon script PHP :



0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
4 févr. 2005 à 13:37
Hello,



heu...je regarde.



En attendant, au lieu de preg_match(), utilise plutot strpos(), ca suffit amplement.



Ok, ton probleme... :



while($i<sizeof($f))
{

echo "_test while num 3 affichage !!!_";
/*
$fileInfo = stat($rep.$f) ;
echo '' ;
print_r($fileInfo) ;
echo '

';
*/
$nom=$f[$i];
echo $nom;
$taille=filesize($rep.$f[$i]);
echo $taille;
$date_crea=testdate(filectime($rep.$f[$i]));
echo $date_crea;
$date_modif=testdate(filemtime($rep.$f[$i]));
echo $date_modif;

$i= $i+1;



$f provient de ton readdir() ok ? readdir() renvoie une chaine, et pas
un tableau. Ton probleme provient de la. Parce qu'ensuite tu fais
des $f[$i], alors que $f est une chaine, pas un tableau.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
4 févr. 2005 à 13:41
Correction :



<?php



function testdate($date)

{

return date("D/M/Y H:i:s",$date);

}

$rep = "test/";



echo $rep;





$dir = opendir($rep);

$j=0;

$i=0;



while ($f = readdir($dir))

{

echo "_test while num 1_";



if(is_file($rep.$f))

{

echo "_test if num 1_";



if(preg_match("/.txt$/",$f))

{

echo "_test if num 2_";

echo "_test_";

echo $f;

echo "_test_";





echo "_test while num 3 affichage !!!_";

/*

$fileInfo = stat($rep.$f) ;

echo '' ;

print_r($fileInfo) ;

echo '

';

*/

$nom=$f;

echo 'NOM : ',$nom;

$taille=filesize($rep.$f);

echo $taille;

$date_crea=testdate(filectime($rep.$f));

echo $date_crea;

$date_modif=testdate(filemtime($rep.$f));

echo $date_modif;









// requette d'insertion

//$query = 'INSERT INTO fichiers (nom,taille,date_crea,date_modif) VALUES ($nom,$taille,$date_crea,$date_modif));';

//$result = mysql_query($query);



//return $result;





}



}



}



?>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
4 févr. 2005 à 13:42
Explication de la correction :



tu as deja une boucle pour parcourir ton repertoire, ok ? chaque fichier est mis dans $f a chaque tour de ta boucle.

Tu verifies si $f (1er fichier) est un fichier texte, et si oui, tu affiches les infos...

Et la, retour a la boucle parcourant le repertoire, 2eme fichier...etc...

Ta boucle sur $i ne sert strictement a rien.
0
fredericmaill Messages postés 144 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 22 mars 2006
4 févr. 2005 à 13:45
Sincèrement mille mercis pour ton aide !!
c’est vraiment très sympas !!!

vive PHP !!!, vive la prog !!!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
4 févr. 2005 à 13:47
Si ca te convient, clique sur Reponse Acceptee sur la reponse qui t'a convenu, comme ca on ferme ce thread :-)



Bonne continuation!
0
Rejoignez-nous