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

JavaScript Discussion :

Décomposer une variable


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 38
    Par défaut Décomposer une variable
    Bonsoir,

    J'ai une une fonction javascript comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function openFile(file) {
       document.location= 'editer?f='+file;		
    }
    Qui me permtet de récupérer un nom de fichier par contre il me met aussi les retour dossier, c'est à dire qu'avec ce code j'ai sa comme résultat:
    editer?f=../../../../content/accessoires.php
    Pourriez-vous m'expliquer la démarche pour supprimer cette partie
    ../../../../content/
    et avoir que le nom du fichier?

    Je met quand même tout le code ce seras plus compréhensible:

    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
     
    <script type="text/javascript">
    		function openFile(file) {
    			document.location= 'editer?f='+file;		
    		}
     
    		$(document).ready( function() {
    			$('#arbo').fileTree({ 
    				root: '../../../../content/', 
    				script: 'plugins/jqueryFileTree/connectors/jqueryFileTree.php', 
    				folderEvent: 'click', 
    				expandSpeed: 750, 
    				collapseSpeed: 750, 
    				multiFolder: false 
    				}, function(file) { 
    					openFile(file);
    			});
    		});
    </script>
    merci

  2. #2
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Bonjour,

    Il y a sans doute moyen de s'en sortir avec les expressions régulières mais je ne les manie pas fort bien.
    Il existe par contre des méthodes sur les chaines de caractères. Un Chaine.lastIndexOf("/") suivi d'un Chaine.substring(depart,fin) est tout à fait possible. De même qu'un Chaine.split("/") dont vous prendriez la dernière valeur.

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    en effet avec les RegExp ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    chaine="../../../../content/accessoires.php" 
    alert(chaine.match(/[^/]*$/))
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 38
    Par défaut
    Merci pour vos réponse, sa fonctionne avec le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function openFile(file) {
    				var url = file;
    				var elem = url.split('/');
    				lien = elem[5];
    			document.location= 'editer?f='+lien;
    		}
    Le souci maintenant c'est que je souhaite créer une arborescence avec mon code j'arrive à afficher les fichiers et dossiers contenu dans le dossier root et maintenant quand je clique sur un fichier il s'ouvre dans un textarea, seulement si je clique sur un dossier qui contient des fichiers je ne peux pas éditer ces fichiers puisqu'avec cette solution il renvoie l'adresse suivante:

    editer?f=NOM_DU_DOSSIER

    alors qu'il me faudrait

    editer?f=NOM_DU_DOSSIER/NOM_DU_FICHIER

    alors j'ai bien compris qu'il fallait que je récupert l'élément elem[6] pour avoir la suite mais déja quand je fais ça sa ne marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function openFile(file) {
    				var url = file;
    				var elem = url.split('/');
    				lien = elem[5] '/' elem[6];
    			document.location= 'editer?f='+lien;
    		}
    la sa me plante tout, je ne sais pas comment lui dire qu'il faut un slash entre les deux element,de plus comme je cherche à faire une arborescence pour éditer de fichier il faut que je fasse une fonction qui prend l'element elem[5] pour les fichiers qui sont directement dans le dossier root "content" en l'occurence mais il faut qu'il prenne les autres element quand il y a des sous dossier, vous voyez ce que je veux dire

    un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function openFile(file) {
    				var url = file;
    				var elem = url.split('/');
                                    if (elem[6] == NULL){
    				lien = elem[5];
                                    }else{
                                    lien = elem[5] + elem[i]++;
                                    }
    			document.location= 'editer?f='+lien;
    		}
    sa fonctionne pas ce code c'est juste pour vous expliquer ou je veux en venir.

    merci pour votre aide.

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    tu ne crois pas que l'incrément serait mieux sur le i ???


    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Vous devez utiliser un opérateur de concaténation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lien = elem[5] + '/'  + elem[6];
    La version split renvoi un tableau dont vous pouvez prendre la dernière et l'avant dernière valeur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var derniere = elem.length;
    var avant_derniere = elem.length -1;
    La version de l'expression régulière vous donne directement la dernière. En adaptant l'expression régulière, vous pouvez obtenir "le dernier dossier/le fichier". A vous de voir.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 38
    Par défaut /[^/]*$/
    Merci pour vos réponses;

    C'est vrai qu'avec l'expression régulière sa fonctionne bien comme ceci mais c'est le problème inverse j'ai le nom du fichier mais pas le nom du dossier.

    En faite il me faut tout les élément après le dossier "content" sa doit être faisable avec les expression régulière

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function openFile(file) {
    				lien = file.match(/[^/][content/]*$/);
    			document.location= 'editer?f='+lien;
    		}
    mais je suis pas fort en expression régulière non plus

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    il te faut le repertoire content et le fichier file .ext ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    chaine="../../../../content/accessoires.php" 
    res=/([^\/]*)\/([^\/]*)$/.exec(chaine)
    alert( 'le repertoire est : '+res[1] +'\nle fichier est :' +res[2])
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 38
    Par défaut
    sa fonctionne presque mais pas encore

    En faite quand c le fichier est dans content j'ai pas besoin de qu'il me le mette dans le lien juste quand c'est dans un sous dossier alors là il me faut le nom du sous-dossier j'ai éssayé ceci sans succès

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    chaine = file;
    res=/([^\/]*)\/([^\/]*)$/.exec(chaine)
    if (empty(res[3])){
      lien = res[2];
    }else{
      lien = res[2]+ '/' + res[i++];
    }
    alert(lien);
    ma condition ne fonctionne pas, je vais allez chercher comment on fait les condition en javascript merci beaucoup pour votre aide.

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    En faite quand c le fichier est dans content j'ai pas besoin de qu'il me le mette dans le lien juste quand c'est dans un sous dossier alors là il me faut le nom du sous-dossier j'ai éssayé ceci sans succès
    ?????



    tu peux mettre un exemple de path ou tu as besoin du rep et un exemple ou tu n'en n'a pas besoin ... ???
    je comprends pas
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  12. #12
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut Mode: Traducteur pour grenouille verte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    chaine="../../../../content/test/dossier/accessoires.php";
    //Récupérer tout après le répertoire "content"
    "test/dossier/accessoires.php"

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 38
    Par défaut
    Oui j'explique pas très bien je vois ça:

    en faite j'ai un script qui me permet d'afficher l'arborescence partir du dossier "content" par rapport au script ( script trouver ici: Créer une arborescence de fichiers avec jQuery) mon dossier "content" ce trouve ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    root: '../../../../content/'
    maintenant il m'affiche donc tout le contenu du dossier "content" fichiers et sous-répertoire.

    Ce que je souhaite c'est avoir une fonction qui me donne tout ce qui ce trouve après le dossier "content" , si il y'a 10 sous répertoires il me faut donc tout les sou-répertoire pour affiché les fichier contenu dedans et pourvoir les éditer.

    mais si il n'y as aucun sous repertoire et qu'un fichier ce trouve directement dans "content" il faut que sa me renvoie juste le nom du fichier.

    j'avoue que c'est galère quand même


    pour l'exemple:

    j'ai une arboresence comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    article/
       article1.php
    fichier1.php
    fichier2.php
    quand je clique sur fichier1.php il me faut juste le nom du fichier, mais si je clique sur article1.php il me faut le nom du dossier et le nom du fichier et ainsi de suite si j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    article/
        commentaire/
             visiteur/
                article1.php
    fichier1.php
    fichier2.php

    et que je souhaite afficher article1.php, il faudrait que la fonction me renvoie toute l'arborescence à partir du dossier "article"


    l'exemple de vermine est tout à fait juste

  14. #14
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file = file.replace(/.+content\//,'');
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 38
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file = file.replace(/.+content\//,'');


    Trop fort !!!!!!!!!!!!!!!!!!

    merci à toi et à spaceFrog et à vermine.

    bonne journée

  16. #16
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    chaine="../../../../content/test/dossier/accessoires.php";
    res=/content\/([a-z\/]*\/)([^\/]*)$/.exec(chaine)
    alert( 'je recupère :\t'+res[0] +'\nle repertoire est :\t'+res[1] +'\nle fichier est :\t' +res[2])
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. Décomposer une variable en plusieurs variables
    Par id301077 dans le forum SAS Base
    Réponses: 5
    Dernier message: 30/09/2009, 11h49
  2. [Tableaux] Décomposer une variable en un tableau
    Par camcam8782 dans le forum Langage
    Réponses: 2
    Dernier message: 02/09/2009, 22h55
  3. Décomposer une variable de liste déroulante.
    Par GYK dans le forum Langage
    Réponses: 11
    Dernier message: 07/03/2009, 16h00
  4. [Tableaux] Décomposer une variable
    Par lama85 dans le forum Langage
    Réponses: 1
    Dernier message: 07/09/2006, 13h29
  5. Réponses: 5
    Dernier message: 11/08/2006, 10h29

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