renommer le fichier le plus ancien
Bonjour a tous
je suis:
- Nouveau sur ce forum
- Debutant PHP
Merci donc d'avance de votre indulgence
J'ai un dossier contenant plusieurs fichiers et je voudrais les renommer
fichier-1, fichier-2, fichier-3.......fichier-x en commençant par le plus ancien
je n'ai pas trouve mon bonheur ni dans mes livres ni sur le net
alors merci d'avance de votre aide ou debut de dolution
a+
Réponses apportées à cette discussion
Salut,
as-tu essayé la documentation PHP ? On y trouve pourtant des choses intéressantes ;)
Par exemple, la fonction filemtime.
Bonjour Cyrano
merci de ta reponse
oui j'ai bien vu la doc php mais étant debutant ce n'est pas assez explicite pour moi vu mon faible niveau
je sais lire la date d'un fichier dont je connais le nom
mais trier un ensemble de fichiers d'un repertoire pour en retirer le plus ancien je sais pas encore le faire
alors si quelqu'un peut m'aider...
a+
Ok, alors on va y aller pas à pas.
Si tu arrives à extraire la date du fichier, il te reste à effectuer un tri. Si tu stockes la listes des fichiers avec leurs dates respectives dans un tableau associatif, tu pourrais utiliser les fonctions de tri comme par exemple array_multisort().
Les étapes seront donc schématiquement les suivantes :
- Ouvrir le dossier contenant les fichiers;
Lister les fichiers et stocker leurs noms ainsi que la date qui s'y rattache dans un tableau associatif;
Ce tableau pourrait avoir l'air de quelque chose comme ceci :$fichiers = array( 0 => array( 'nom' => 'mon_fichier_1.txt', 'date' => 1234567890123456 ), 1 => array( 'nom' => 'mon_fichier_2.txt', 'date' => 1234567890123457 ), etc ... );
Trier le tableau obtenu;
- Afficher ou traiter le résultat selon l'objectif poursuivi.
Note : la fonction filemtime retourne un timestamp, donc on aura pas besoin de transformer cette valeur pour effectuer un tri croissant ou décroissant.
Avant d'aller plus loin, il faudrait que j'aie une idée de ce que tu as déjà fait et l'endroit où ça bloque.
tout d'abord merci de m'aider
Voilà ce que jai et ce que je veux :
j'ai un formulaire d'upload d'images vers un repertoire temporaire
a chaque upload j'incremente une variable pour un max de 10 images
puis ces images sont deplacées dans le repertoire definitif apres avoir eté renommées la plus ancienne image1, image2...puis ainsi de suite jusque image10
je ne connais donc pas par avance le nom de chaque image presente dans le repertoire tempotaire
a+
Ok, et coté code, tu as fait quoi jusqu'à présent ? Et quelle partie fonctionne ?
A des fins didactiques j'ai utilise le script du tuto "Uploader des images sur un serveur que j'ai commençé à modifier pour l'utiliser dans un viewer d'images pour des artcles . pour l'affichage
limitation du nombre d'upload à 10 images: j'incrémente une variable pour cette limite avec une boucle while
modification du nom de l'image en utilisant la concatenation php soit :
'$numero_article'.'image'.'$numero_image'.'.$extension'ce qui donne par exemple :
$nom_image= '15468image8.jpg';Le dossier de drestination est "temp"
je cree une miniature que je nomme '$numero_article'.'image'.'$numero_image'.'thumb'.'.$extension'
Je sais c'est de la bidouille mais je debute et j'ai toujours eu cette ame de bidouilleur
On a tous plus ou moins commencé de cette manière, donc il n'y a pas de complexe à avoir là-dessus.
Attention avec la concaténation et certaines règles à respecter avec les variables. Si on fait ceci :
$nom_fichier = '$numero_article'.'image'.'$numero_image'.'.$extension';
Le résultat risque d'être un message d'erreur ou une curiosité inattendue. Il conviendrait de faire ceci :
$nom_fichier = $numero_article .'image'. $numero_image .'.'. $extension;
Il faut savoir qu'une variable entre apostrophe ne sera pas interprétée. Au pire, il faudrait remplacer les apostrophes par des guillemets et donc faire à la rigueur ceci :
$nom_fichier = "$numero_article" . 'image' . "$numero_image" . '.". $extension";
Pour le reste, il faudrait voir maintenant ce qui ne fonctionne pas et à quel moment du déroulement du code ?
ok,
j'ai encore du mal avec les guillemets ou apostrophes et certaines conventions d'écriture. J'ai commencé a programmer il y a près de 40 ans en basic à l'époque très permissif dans la syntaxe
j'ai essayé le script sur mon serveur vps :
erreur le répertoire cible ne peut être créé....
voici ma constante du répertoire cible :
define('TARGET', '/temp');
j'ai créé manuellement un dossier temp avec en chmod 777 dans le même répertoire que le script et ça ne fonctionne toujours pas
a+
Ok maintenant ca fonctionne
sauf que quand j'upload une image depassant le MAX_SIZE j'ai le mauvais message d'erreur soit :
Le fichier à uploader n'est pas une image
pourtant c'est bien une image en jpeg
merci encore
a+
Ok, alors pour la taille de fichier, il existe deux possibilités :
- Soit modifier le php.ini en augmentant la valeur par défaut;
- Soit modifier ce paramètre dynamiquement avec la fonction ini_set()
Là encore, la documentation PHP sera d'une aide précieuse pour l'utilisation de la fonction, c'est généralement illustré avec des exemples.
Je voulais simplement dire que je pense qu'il y a une petite erreur
dans les messages
sinon etant dans un server dedie vps je regle directement et facilement ces parametres enfin j'ai modifie le message de ton script et remplacé
"Le fichier à uploader n'est pas une image"
par :
"Le fichier à uploader est trop vomumineux veuillez reduire la taille de celui ci et réessayer"
sinon ma prochaine étape est de creer une miniature ce qui devrait être assez simple je pense .
Une question concernant le forum pourquoi utiliser le format Markdown ?
dans les forums comme fluxbb seulement deux balises par exemple pour pour du code <code></code>
enfin merci encore
a+
Pour le Markdown, on a guère le choix, je n'ai pas la main sur le code de ce forum. Ce n'est pas terriblement pratique mais bon, on fait avec.
Pour la création de miniatures, il existe plein de classes librement disponibles qui font ça très bien.
Quant à l'erreur lors de l'envoi d'un fichier, il y a des codes pré-fédinis dans PHP pour ça, il y a des exemples utiles dans la documentation.
Ok merci Cyrano
je poursuis mon apprentissage et mes modifs sur le script
a+