Readdir sans expansion - PHP - Programmation
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...
Citation : |
C'est quoi le but?
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.
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
Marsh Posté le 18-03-2005 à 10:34:58
ok, j'avais pas tout lu, c'est donc pire que je pensais...
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()...
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 :
|
et depuis mon autre page j'ai:
Code :
|
Voilà, c'est pas extraordinaire mais bon je débute.
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
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.
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
- 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)
Marsh Posté le 18-03-2005 à 11:41:59
J'espère pour toi que tu fais pas de while pour lire un tableau Perso je trouve ça beaucoup plus simple d'avoir un tableau, surtout pour effectuer du sorting naturel.
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) |
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
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é...
|
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... |
Ah bin en même temps, print_r c'est plus fait pour le debug qu'autre chose
Marsh Posté le 18-03-2005 à 13:59:39
pour récupérer le nom sans l'extension
Code :
|
Marsh Posté le 18-03-2005 à 14:15:40
KangOl a écrit : pour récupérer le nom sans l'extension
|
Faut lire tout le topic avant de balancer bêtement un bout de code...
skeye a écrit : |
Xav_ a écrit : |
Marsh Posté le 18-03-2005 à 14:19:35
ca fonctionne la soustraction de string ??
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...
Marsh Posté le 18-03-2005 à 14:22:40
bha non !
donc tu utilise pathinfo puis tu fais un str_replace ??
un peu lourdingue...
Marsh Posté le 18-03-2005 à 14:28:08
KangOl a écrit : bha non ! |
Bin autant que de faire strrpos() et substr()
Marsh Posté le 18-03-2005 à 14:32:55
J'adore quand je fais une blague moisie et qu'on me répond complètement à-coté...
(putain c'est quoi déjà le mlc avec des bras et des jambes?:o)
Marsh Posté le 18-03-2005 à 14:33:15
skeye a écrit :
|
Marsh Posté le 18-03-2005 à 14:33:45
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
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 :
|
et qui revient poster dans le 1/4 d'heure pour dire que ça marche pas...
Marsh Posté le 18-03-2005 à 14:36:05
ReplyMarsh 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) |
Pourquoi ça planterait ?
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...
Marsh Posté le 18-03-2005 à 14:50:17
bon bha comment veux tu faire ?
Marsh Posté le 15-04-2005 à 22:20:00
bonjour
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
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:
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+