Readdir sans expansion

Readdir sans expansion - PHP - Programmation

Marsh Posté le 18-03-2005 à 10:18:17    

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+

Reply

Marsh Posté le 18-03-2005 à 10:18:17   

Reply

Marsh Posté le 18-03-2005 à 10:22:34    

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 -
Reply

Marsh Posté le 18-03-2005 à 10:29:48    

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.

Reply

Marsh Posté le 18-03-2005 à 10:33:11    

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:

Reply

Marsh Posté le 18-03-2005 à 10:34:58    

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 -
Reply

Marsh Posté le 18-03-2005 à 10:43:51    

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.
 

Reply

Marsh Posté le 18-03-2005 à 10:59:59    

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
Reply

Marsh Posté le 18-03-2005 à 11:20:09    

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.
Reply

Marsh Posté le 18-03-2005 à 11:35:16    

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
Reply

Marsh Posté le 18-03-2005 à 11:41:59    

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.
Reply

Marsh Posté le 18-03-2005 à 11:41:59   

Reply

Marsh Posté le 18-03-2005 à 12:03:32    

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
Reply

Marsh Posté le 18-03-2005 à 12:09:37    

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
Reply

Marsh Posté le 18-03-2005 à 12:17:02    

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.
Reply

Marsh Posté le 18-03-2005 à 13:59:39    

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...
Reply

Marsh Posté le 18-03-2005 à 14:15:40    

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.
Reply

Marsh Posté le 18-03-2005 à 14:19:35    

ca fonctionne la soustraction de string ??


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 18-03-2005 à 14:20:08    

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 -
Reply

Marsh Posté le 18-03-2005 à 14:22:40    

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


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 18-03-2005 à 14:28:08    

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.
Reply

Marsh Posté le 18-03-2005 à 14:32:55    

[: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 -
Reply

Marsh Posté le 18-03-2005 à 14:33:15    

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]

Reply

Marsh Posté le 18-03-2005 à 14:33:45    


[:youpi]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 18-03-2005 à 14:33:52    

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...
Reply

Marsh Posté le 18-03-2005 à 14:34:53    

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
Reply

Marsh Posté le 18-03-2005 à 14:36:05    

skeye a écrit :

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


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

Reply

Marsh Posté le 18-03-2005 à 14:45:38    

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.
Reply

Marsh Posté le 18-03-2005 à 14:46:11    

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 -
Reply

Marsh Posté le 18-03-2005 à 14:50:17    

bon bha comment veux tu faire ?


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 15-04-2005 à 22:20:00    

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
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed