Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3805 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Readdir sans expansion

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Readdir sans expansion

n°1016944
TheBosy
Posté le 18-03-2005 à 10:18:17  profilanswer
 

Bonjour,
 
Je suis en train d'essayer de faire un système qui lis les fichiers qui se trouve dans un dossier, donc j'utilise la fonction readdir()
 
Mais j'ai envi que ca n'affiche pas les exansions, ca marche mais a cause de ma boucle for ca me fais qqch de bizzare.  
 
J'ai 3 fichiers dans mon dossiers reference, test8.php, essai.php et test.php
 
Ca m'affiche ca:
 
test8
test8essai
test8essaitest
 
Et j'aimerais que ca m'affche simplement ca:
 
test8
essai
test
 
Voici mon code:
 

Code :
  1. $nomRepertoire = "reference";
  2. $dossier = opendir($nomRepertoire);
  3. while ($Fichier = readdir($dossier)) {
  4.   if ($Fichier != "." && $Fichier != ".." ) {
  5.     $nomFichier = $Fichier;
  6. // On parcourt la chaîne jusqu'au premier point rencontré :
  7. for ($Ctr=0 ;$Ctr<=strlen($nomFichier);$Ctr++)
  8.   {
  9.   if ($nomFichier[$Ctr] == "." ) break;
  10.   $nomFichierSansExt = $nomFichierSansExt.$nomFichier[$Ctr];
  11.   }
  12. ?>
  13.   <? echo ("$nomFichierSansExt<br>" );?>
  14.   <?
  15.   }
  16. }
  17. closedir($dossier);
  18. ?>


 
Voilà je trouve pas comment corriger ca, j'ai essayé de modifier le boucle for() mais ca m'ajout des erreurs si j'y touche.
 
A+

mood
Publicité
Posté le 18-03-2005 à 10:18:17  profilanswer
 

n°1016953
skeye
Posté le 18-03-2005 à 10:22:34  profilanswer
 

Si tu ne vois pas l'erreur je comprends pas comment tu as pu pondre ce code...[:urd]

Citation :


$nomFichierSansExt = $nomFichierSansExt.$nomFichier[$Ctr];


 
C'est quoi le but?


---------------
Can't buy what I want because it's free -
n°1016980
TheBosy
Posté le 18-03-2005 à 10:29:48  profilanswer
 

Je ne vois pas l'erreur, mais le but est d'avoir le nom des fichiers, sans leur extensions.
 
strlen compte les caratères a va jusque qu'il rencontre un point, pour ensuite ne pas afficher la extension.

n°1016987
Snoopy71
Posté le 18-03-2005 à 10:33:11  profilanswer
 

Salut,
 
Avant ton For, remet $nomFichierSansExt à "", sinon il reprend l'ancien nom de fichier.
 
Pareil, une expression régulière ne serait pas mieux que s'arrêter dès qu'on trouve un point ?
 
Car class.print.php ne pourra pas fonctionner dans ton cas... par contre ereg_replace("\.[[:alnum:]]*$", "", $nom) fonctionnera sans problème :jap:

n°1016992
skeye
Posté le 18-03-2005 à 10:34:58  profilanswer
 

ok, j'avais pas tout lu, c'est donc pire que je pensais...[:joce]
Résolution du bug niveau 0 : remettre $nomFichierSansExt à zéro à chaque tour de boucle, là tu ne le fais jamais.
 
Mais question : et si un fichier s'appelle truc.php.old.backup? ;)
 
Par ailleurs, tu peux probablement utiliser des fonctions toutes faites de php, du style basename()...
 
 


---------------
Can't buy what I want because it's free -
n°1017003
TheBosy
Posté le 18-03-2005 à 10:43:51  profilanswer
 

C'est clair que mon systeme ne marchera pas si je nome mon fichier avec plusieurs . style class.print.php comme tu l'a dis.
 
Mais enfait j'ai fais un systeme d'affichage avec include, je peux uploader les pages et images depuis mon panel admin.
 
Après j'ai une page avec les fichiers qui se trouve dans mon dossier reference, elle s'affiche automatiquement et a l'aide de bouton radio on peut sélectionner la page à visualiser.
 
Donc dans mes bouton radio j'ai mis:

Code :
  1. <input type="radio" name="choix" value="<? echo $nomFichier; ?>">

et depuis mon autre page j'ai:
 

Code :
  1. include ("reference/$choix" );


 
Voilà, c'est pas extraordinaire mais bon je débute.
 

n°1017045
Xav_
The only one...
Posté le 18-03-2005 à 10:59:59  profilanswer
 

comme te l'a dis skeye, regarde dans la doc PHP les fonctions sur les fichiers (file), ya normalement moyen d'extraire le nom d'un fichier sans l'extension à partir du nom complet...
 
basename c'est pour séparer le chemin du fichier de son nom, mais pathinfo ça te donne, le chemin, le nom complet, l'extension
--> nom complet - extension = ce que tu veux ;)
 
donc regarde de ce coté là:
http://fr2.php.net/manual/fr/function.pathinfo.php


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°1017098
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 18-03-2005 à 11:20:09  profilanswer
 

Sinon, plutôt que de se faire chier avec while et readdir, y a scandir qui est un peu magnifique.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°1017140
Xav_
The only one...
Posté le 18-03-2005 à 11:35:16  profilanswer
 

la fonction en elle-meme semble en effet pas mal mais:
- ça liste dans un tableau donc t'aura quand meme un while ou un for pour afficher le tableau :P
- c'est implémenté qu'en PHP5, tout le monde n'y est pas encore passé en local, et au niveau hébergement, j'en parle meme pas ;)
 
Mais je met ça dans un coin ma tete car, en effet ça peut etre bien util à l'avenir (proche, je l'espère)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°1017158
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 18-03-2005 à 11:41:59  profilanswer
 

J'espère pour toi que tu fais pas de while pour lire un tableau :D Perso je trouve ça beaucoup plus simple d'avoir un tableau, surtout pour effectuer du sorting naturel.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
mood
Publicité
Posté le 18-03-2005 à 11:41:59  profilanswer
 

n°1017203
Xav_
The only one...
Posté le 18-03-2005 à 12:03:32  profilanswer
 

j'ai pas dit que c'était pas bien (à croire que je m'exprime mal), mais que c'est pas compatible avec la plupart des versions de PHP encore en activité...
 
Xav a dit:

Citation :

Mais je met ça dans un coin ma tete car, en effet ça peut etre bien util à l'avenir (proche, je l'espère)


Message édité par Xav_ le 18-03-2005 à 12:04:21

---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°1017226
Xav_
The only one...
Posté le 18-03-2005 à 12:09:37  profilanswer
 

et au fait, oui j'utilise un echo en boucle pour afficher un tableau plutot qu'un print_r...
de manirere à ajouter mes <tr> ou <td>, ou "\n" et autre truc du genre de manière à avoir une mise en page (de la source comme de la sortie) assez potable ;)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°1017238
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 18-03-2005 à 12:17:02  profilanswer
 

Xav_ a écrit :

j'ai pas dit que c'était pas bien (à croire que je m'exprime mal), mais que c'est pas compatible avec la plupart des versions de PHP encore en activité...
 
Xav a dit:

Citation :

Mais je met ça dans un coin ma tete car, en effet ça peut etre bien util à l'avenir (proche, je l'espère)



Ui j'avais bien compris, mais je voulais rajouter que ça m'est bien utile pour les opérations sur les tableaux.

Xav_ a écrit :

et au fait, oui j'utilise un echo en boucle pour afficher un tableau plutot qu'un print_r...
de manirere à ajouter mes <tr> ou <td>, ou "\n" et autre truc du genre de manière à avoir une mise en page (de la source comme de la sortie) assez potable ;)


Ah bin en même temps, print_r c'est plus fait pour le debug qu'autre chose :D


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°1017327
KangOl
Profil : pointeur
Posté le 18-03-2005 à 13:59:39  profilanswer
 

pour récupérer le nom sans l'extension

Code :
  1. $nomFichierAvecExtension="class.print.php";
  2. $nomFichierSansExtension=substr($nomFichierAvecExtension,0,strrpos($nomFichierAvecExtension,"." ));


---------------
Nos estans firs di nosse pitite patreye...
n°1017386
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 18-03-2005 à 14:15:40  profilanswer
 

KangOl a écrit :

pour récupérer le nom sans l'extension

Code :
  1. $nomFichierAvecExtension="class.print.php";
  2. $nomFichierSansExtension=substr($nomFichierAvecExtension,0,strrpos($nomFichierAvecExtension,"." ));



Faut lire tout le topic avant de balancer bêtement un bout de code...

skeye a écrit :


Par ailleurs, tu peux probablement utiliser des fonctions toutes faites de php, du style basename()...


Xav_ a écrit :


basename c'est pour séparer le chemin du fichier de son nom, mais pathinfo ça te donne, le chemin, le nom complet, l'extension
--> nom complet - extension = ce que tu veux ;)
 
donc regarde de ce coté là:
http://fr2.php.net/manual/fr/function.pathinfo.php


[:itm]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°1017408
KangOl
Profil : pointeur
Posté le 18-03-2005 à 14:19:35  profilanswer
 

ca fonctionne la soustraction de string ??


---------------
Nos estans firs di nosse pitite patreye...
n°1017411
skeye
Posté le 18-03-2005 à 14:20:08  profilanswer
 

KangOl a écrit :

ca fonctionne la soustraction de string ??


Oui, mais faut bien connaitre la personne, avant...[:dawa]


---------------
Can't buy what I want because it's free -
n°1017425
KangOl
Profil : pointeur
Posté le 18-03-2005 à 14:22:40  profilanswer
 

bha non !
donc tu utilise pathinfo puis tu fais un str_replace ??
un peu lourdingue...


---------------
Nos estans firs di nosse pitite patreye...
n°1017441
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 18-03-2005 à 14:28:08  profilanswer
 

KangOl a écrit :

bha non !
donc tu utilise pathinfo puis tu fais un str_replace ??
un peu lourdingue...


Bin autant que de faire strrpos() et substr() [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°1017465
skeye
Posté le 18-03-2005 à 14:32:55  profilanswer
 

[:moule_bite]
J'adore quand je fais une blague moisie et qu'on me répond complètement à-coté...[:el g]
(putain c'est quoi déjà le mlc avec des bras et des jambes?:o)


---------------
Can't buy what I want because it's free -
n°1017469
Profil sup​primé
Posté le 18-03-2005 à 14:33:15  answer
 

skeye a écrit :

[:moule_bite]
J'adore quand je fais une blague moisie et qu'on me répond complètement à-coté...[:el g]
(putain c'est quoi déjà le mlc avec des bras et des jambes?:o)


 [:ktulu]

n°1017470
skeye
Posté le 18-03-2005 à 14:33:45  profilanswer
 


[:youpi]


---------------
Can't buy what I want because it's free -
n°1017472
KangOl
Profil : pointeur
Posté le 18-03-2005 à 14:33:52  profilanswer
 

sauf que moi ce marche (presque) a tout les coup (si le nom de fichier ne contient pas de points, il retourne une chaine vide)
 
tandis qu'avec l'autre technique si le fichier se nomme "class.php.print.php" bin DVC :spamafote:


---------------
Nos estans firs di nosse pitite patreye...
n°1017476
Xav_
The only one...
Posté le 18-03-2005 à 14:34:53  profilanswer
 

l'équation que j'ai mis c'était le raisonnement ;)
kler que le mec qui fait un copier/coller de:

Code :
  1. nom complet - extension = ce que tu veux

et qui revient poster dans le 1/4 d'heure pour dire que ça marche pas...
http://webxav.chez.tiscali.fr/gif/src1/al1-snip.gif


Message édité par Xav_ le 18-03-2005 à 14:35:20

---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°1017481
Profil sup​primé
Posté le 18-03-2005 à 14:36:05  answer
 

skeye a écrit :

Oui, mais faut bien connaitre la personne, avant...[:dawa]


 [:bap2703]  
 
(pour te faire plaisir :o)

n°1017517
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 18-03-2005 à 14:45:38  profilanswer
 

KangOl a écrit :

sauf que moi ce marche (presque) a tout les coup (si le nom de fichier ne contient pas de points, il retourne une chaine vide)
 
tandis qu'avec l'autre technique si le fichier se nomme "class.php.print.php" bin DVC :spamafote:


Pourquoi ça planterait ? :??:


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°1017519
skeye
Posté le 18-03-2005 à 14:46:11  profilanswer
 

Taiche a écrit :

Pourquoi ça planterait ? :??:


parce-qu'il a bêtement conclu qu'on le ferait avec str_replace...:o


---------------
Can't buy what I want because it's free -
n°1017534
KangOl
Profil : pointeur
Posté le 18-03-2005 à 14:50:17  profilanswer
 

bon bha comment veux tu faire ?


---------------
Nos estans firs di nosse pitite patreye...
n°1049239
FREDDYONE
Compliquez moi ?
Posté le 15-04-2005 à 22:20:00  profilanswer
 

bonjour :bounce:  :hello:  
La fonction blog est surement adapté a ton probleme
 
voila le code, et ca marche chez moi.(Easyphp, Dreamweaver)
 
<?php  
   
  // Completer la variable chemin du genre 'MesDocs/'.
$Chemin='';
  // liste le dossier puis assigne nom a un fichier  
foreach(glob('*.txt') as $NomFichier)
{
  // creation du lien sur le fichier (eventuellement $Chemin avant .$NomFichier.)
  echo '<a href="'.$Chemin.$NomFichier.'">'.$NomFichier.'</a><br>';}
?>
 
voila si ca peux servir , a bientot :hello:  :hello:


Message édité par FREDDYONE le 16-04-2005 à 16:44:28
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Readdir sans expansion

 

Sujets relatifs
recherche algo pour expansion d'une structure.[C]readdir renvoi pas la bonne valeur
[PHP] opendir () / readdir () ---> ca rajoute des "..." 
Plus de sujets relatifs à : Readdir sans expansion


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)