renommer le fichier le plus ancien

Rechercher
Boutique en ligne, solution e-commerce, script PHP et PERL : RAYNETTE

renommer le fichier le plus ancien

Par grisbi  -  13 reponses  -  Le 28/05/2015 22:30  -  Editer  - 

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

Par Cyrano  -  Le 28/05/2015 23:36  -  Haut de page  - 

Salut,
as-tu essayé la documentation PHP ? On y trouve pourtant des choses intéressantes ;)
Par exemple, la fonction filemtime.

 
Par grisbi  -  Le 29/05/2015 09:14  -  Haut de page  - 

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+

 
Par Cyrano  -  Le 29/05/2015 09:28  -  Haut de page  - 

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 :

  1. Ouvrir le dossier contenant les fichiers;
  2. 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 ...  
    );  
    
  3. Trier le tableau obtenu;

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

 
Par grisbi  -  Le 29/05/2015 14:27  -  Haut de page  - 

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+

 
Par Cyrano  -  Le 29/05/2015 15:59  -  Haut de page  - 

Ok, et coté code, tu as fait quoi jusqu'à présent ? Et quelle partie fonctionne ?

 
Par grisbi  -  Le 30/05/2015 14:05  -  Haut de page  - 

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

 
Par Cyrano  -  Le 30/05/2015 16:38  -  Haut de page  - 

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 ?

 
Par grisbi  -  Le 31/05/2015 13:36  -  Haut de page  - 

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+

 
Par grisbi  -  Le 31/05/2015 18:04  -  Haut de page  - 

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+

 
Par Cyrano  -  Le 31/05/2015 19:56  -  Haut de page  - 

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.

 
Par grisbi  -  Le 31/05/2015 21:34  -  Haut de page  - 

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+

 
Par Cyrano  -  Le 31/05/2015 23:28  -  Haut de page  - 

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.

 
Par grisbi  -  Le 01/06/2015 09:28  -  Haut de page  - 

Ok merci Cyrano

je poursuis mon apprentissage et mes modifs sur le script

a+

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !