IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Creation de dossier script PHP


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2018
    Messages : 8
    Par défaut Creation de dossier script PHP
    Bonjour tous le monde !
    Je vous expose mon soucis :
    Voila en fait j'aimerais créer un dossier en fonction des nom de mes images.
    Je m'explique : j'ai un dossier Vrac qui comprend des images j'aimerais un script qui va venir créer deux dossier en fonction des nom de mes image .En l'occurence j'ai deux sorte d'image des montagnes et des avions. Donc je voudrais un script qui reconnaisse le nom de mes images pour venir créer un dossier montagne et un dossier avions et les place dans leur dossier respectif . J'espère mettre fais comprendre .

    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    <?php
     
     
     
    class Image
    {
     
        public function getImages($image_dir)
        {
            //Nous ouvrons le dossier $image_dir avec opendir 
            // Et affectons le résultat à la variable $handle 
            if($handle = opendir($image_dir))
            {
               //
                while (false !== ($entry = readdir($handle) ))
                {
     
                    /*la variable $entry ne pourra pas se voir affecté les . et les ..
                    */
                    if ($entry != "." && $entry != "..")
                    {
                      /*nous affectons le résultat dans un array */
                      $images[] = $entry ; 
                    }
                }
            }
            closedir($handle); //Nous fermons le repertoire avec closedir
            return $images;//Nous retournons le tableau de données 
        }
    }
     
    $image_dir = '/Users/romaing/Sites/rangement-image/image/vrac';
    $avions = '/Users/romaing/Sites/rangement-image/image/vrac/avions';
    $montagne = '/Users/romaing/Sites/rangement-image/image/vrac/montagne_2009';
    $image = new Image();
    $images = $image->getImages($image_dir);
     
     
     
    if(!is_dir($image_dir))
    {
        mkdir($image_dir);
    }
    foreach($image as $key => $name)
    {
        $explode = explode('-',$name);
        if($explode[4] == 'avions')
        {
            if(!is_dir($avions))
            {
                mkdir($avions);
                rename($image_dir.$name,$avions.$name);
            }
            else
            {
                rename($image_dir.$name,$avions.$name);
            }
        }
        elseif($explode[0] == 'montagne_2009')
        {
            if(!is_dir($montagne))
            {
                mkdir($montagne);
                rename($image_dir.$name,$montagne.$name);
            }
            else
            {
                rename($image_dir.$name,$montagne.$name);
            }
        }
        else
        {
            echo 'Echec de la procédure';
        }
    }
     
    ?>

  2. #2
    Membre expérimenté
    Avatar de Sparky95
    Homme Profil pro
    Full Stack (web) developer
    Inscrit en
    Décembre 2016
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Full Stack (web) developer
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2016
    Messages : 384
    Par défaut
    Bonjour,
    Pourrais tu nous fournir un exemple de nom d'images? => le but étant de voir comment est constitué le format
    ex. 4-5 noms
    Merci

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2018
    Messages : 8
    Par défaut
    bonjour pour l'exemple du nom d'image c'est

    avions_001.jpeg
    avions_003.jpg
    avions_004.jpg
    avions_002.jpg
    montagne_2009_001.jpg
    montagne_2009_003.jpg
    montagne_2009_002.jpg


  4. #4
    Membre expérimenté
    Avatar de Sparky95
    Homme Profil pro
    Full Stack (web) developer
    Inscrit en
    Décembre 2016
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Full Stack (web) developer
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2016
    Messages : 384
    Par défaut
    ha donc le format serra toujours nom_dossier_3chiffres.extension

    Alors ici donc tu vas te retrouver avec un petit soucis de nom => tu ne connais pas la taille du nom du dossier ni les characters qu'il contient
    Donc ce que tu dois faire c'est quand tu fais ton explode tu reprends la fin de ton explode $nom_fichier = $sizeof(explode($ancienNomDuFichier));ensuite tu supprimes cette partie la de ton ancien string pour avoir le nom du dossier

    voici un petit code de teste qui t'aidera à faire cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    <?php
        $name = "montagne_2009_001.jpg";
     
        var_dump(explode("_", $name));
     
     
        // je récupère le nom du fichier
        var_dump(explode("_", $name)[sizeof(explode("_", $name))-1]);
     
     
        //je récupère la taille du nom
        var_dump(strlen(explode("_", $name)[sizeof(explode("_", $name))-1]));
        $lenghtName = strlen(explode("_", $name)[sizeof(explode("_", $name))-1]);
     
        //je récupère le dossier
        $lengthDirectory = strlen($name) - $lenghtName - 1; // -1 pour supprimer le _ supplémentaire
        var_dump(substr($name, 0, $lengthDirectory));
     
     
    ?>
    Ce qui te donnera en plus propre et plus lisible pour débuter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <?php
        $name = "montagne_2009_001.jpg";
     
        var_dump(explode("_", $name));
     
     
        //quantité d'explodes 
        $qtExplodes = sizeof(explode("_", $name)) - 1;
     
     
        // je récupère le nom du fichier
        var_dump(explode("_", $name)[$qtExplodes]);
        $nomFichier = explode("_", $name)[$qtExplodes];
     
     
        //je récupère la taille du nom
        var_dump(strlen($nomFichier));
        $lenghtName = strlen($nomFichier);
     
        //je récupère le dossier
        $lengthDirectory = strlen($name) - $lenghtName - 1; // -1 pour supprimer le _ supplémentaire
        var_dump(substr($name, 0, $lengthDirectory));
        $nomDossier = substr($name, 0, $lengthDirectory);
     
     
        echo "dossier: $nomDossier<br/>\n";
        echo "fichier: $nomFichier<br/>\n";
    ?>
    je penses que cela t'aidera à résoudre ton problème
    Si besoin n'hésite pas à revenir

    bonne journée

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1-
    Citation Envoyé par Sparky95 Voir le message
    ha donc le format serra toujours nom_dossier_3chiffres.extension
    Perso, je ne miserais pas un kopeck là-dessus...

    2- Au contraire, je pense qu'il serai plus judicieux de proposer le choix du dossier dans le formulaire.
    Via des boutons radio, une liste déroulante,...

    3- A la rigueur, on peut envisager de cocher/sélectionner automatiquement le "bon" dossier dynamiquement en JavaScript (donc AVANT upload) si le nom de l'image contient "avion" ou "montagne".
    Tout en laissant la possibilité de changer de dossier manuellement.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <p>
      <label>fichier : <input type="file" name="file-img" id="file-img" /></label>
    </p>
    <p>
      <label>dossier : 
        <select name="file-rep" id="file-rep">
          <option value="">...</option>
          <option value="avion">Avion</option>
          <option value="montagne">Montagne</option>
          <option value="maintenance">Maintenance</option>
        </select>
      </label>
    </p>
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    "use strict";
    const img = document.querySelector('#file-img');
    const opts = document.querySelectorAll('#file-rep option');
    img.addEventListener('change', function(){
      let file_name = this.files[0].name;
      //console.log( file_name );
      // ----------
      // Sélecion automatique
      opts.forEach( function(opt){
        //console.log( opt.value );
        let regex = new RegExp(opt.value, "g");
        if( file_name.match(regex) )
          {
            opt.setAttribute('selected','selected');
          }
      })
      // ----------
    });
    Dernière modification par Invité ; 25/01/2020 à 18h09.

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2018
    Messages : 8
    Par défaut
    Re-bonsoir ,

    Tout d'abord merci pour vos réponse .

    Non je cherche à le faire avec du PHP et non du javascript .
    Je suis plus sur la logique que m'as donner Sparky du coup mais je ne comprend pas bien comment je dois l'indenter enfaite je me demande pourquoi actuellement avec mon code les dossiers et le triage des fichiers ne se font pas .
    Ai-je oublié quelque chose ?? Mon code est-il faux ? Il ne retourne cependant pas d'erreur ....
    Quel est le problème donc ?

    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/06/2017, 15h47
  2. Réponses: 3
    Dernier message: 21/02/2011, 23h40
  3. [Bénévole] creation d'un script php de gestion d'objets
    Par animetheque dans le forum Autres
    Réponses: 0
    Dernier message: 23/10/2010, 07h31
  4. creation de dossier script shell
    Par myriamulrik dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 01/07/2009, 13h09
  5. Réponses: 4
    Dernier message: 07/02/2009, 09h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo