Problème avec variable (débutant) HELP !

pierrej -  
 YannOuch -
Bonjour,

J'ai un petit problème !

voilà, j'ai un code PHP:
$dir_paste = './clients/membre/KG/';

et je voudrai introduire cette variable à la place de "membre"

<?php echo $_SESSION['membre_pseudo'] ?>


J'ai bien tenté de faire celà:
$dir_paste = './clients/echo $_SESSION['membre_pseudo']/KG/';


Mais ca ne marche pas...

Je suis sur que la solution est toute simple, mais je débute en php et j'en suis au chapitre des variable et supervariable .... et la je bloque... Pouvez-vous m'aider SVP ? :)

13 réponses

  1. Monkey_nhk
     
    Montre ton code s'il te plait histoire d'avoir une vue d'ensemble.
    pour les session n'oublie pas session start ();
    0
  2. pierrej
     
    Merci de me répondre ! C'est vraiment cool :)
    voilà mon code:

    <?php
    
    function copy_dir ($dir2copy,$dir_paste) {
    
            // On vérifie si $dir2copy est un dossier
            if (is_dir($dir2copy)) {
           
                    // Si oui, on l'ouvre
                    if ($dh = opendir($dir2copy)) {     
    
                            // On liste les dossiers et fichiers de $dir2copy
                            while (($file = readdir($dh)) !== false) {
                           
                                    // Si le dossier dans lequel on veut coller n'existe pas, on le créé
                                    if (!is_dir($dir_paste)) mkdir ($dir_paste, 0777);
                           
                                    // S'il s'agit d'un dossier, on relance la fonction récursive
                                    if(is_dir($dir2copy.$file) && $file != '..'  && 
    $file != '.') copy_dir ( $dir2copy.$file.'/' , $dir_paste.$file.'/' );     
                                    // S'il sagit d'un fichier, on le copue simplement
                                    elseif($file != '..'  && $file != '.') copy ( $dir2copy.$file , $dir_paste.$file );
                                           
                            }
                           
                    // On ferme $dir2copy
                    closedir($dh);
              
                    }
                   
            }       
              
    }
    
    $dir2copy = './KG007/';
    $dir_paste = './clients/membre/KG/';
    
    // Copie le dossier $dir2copy dans le dossir $dir_paste, inutile de créé les dossiers
    copy_dir ($dir2copy,$dir_paste);
    ?>


    Et j'aimerai remplacer "membre" par cette variable:

    <?php echo $_SESSION['membre_pseudo'] ?>
    0
  3. Monkey_nhk
     
    
    ...
    
    $mbr  =$_SESSION['membre_pseudo'];
    
    $dir2copy = './KG007/';
    $dir_paste = './clients/'.$mbr.'/KG/';
    
    // Copie le dossier $dir2copy dans le dossir $dir_paste, inutile de créé les dossiers
    copy_dir ($dir2copy,$dir_paste);
    ?>
    ...
    
    


    a tester mais pas sur.
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. pierrej
     
    le code passe sans problème, mais il ne créer pas le dossier "KG" comme prévu :/

    Je pense qu'il doit y avoir un problème avec /'.$mbr.'/, car il doit comprendre /'lenomdumembre'/ hors, il doit comprendre /lenomdumembre/ sans les " ' "
    0
  6. vinc
     
    Tu n'as pas l'air très clair dans ta tête sur ce que tu veux faire exactement, du coup on comprend mal de notre coté (enfin moi j'avais rien compris au début)

    Essaie ça directement :
    $dir_paste = './clients/'.$_SESSION['membre_pseudo'].'/KG/';

    Pour ta question, les chaines sont concaténées mais les quotes ne sont pas inclus dedans, tu devrait rechercher un tutoriel sur la manipulation de chaine, et tester ce que ça donne en l'affichant tout simplement, ce sera probablement plus clair pour toi par la suite
    0
  7. pierrej
     
    merci de ta réponse, enfaite, je suis claire dans ma tête sur ce que je veux faire, en revanche, je manque énormément de vocabulaire pour me faire comprendre clairement !

    je test ca ! merci encore ! :)
    0
  8. pierrej
     
    non ... rien à faire , le code passe très bien, mais il ne fait pas ce que je veux...
    0
  9. pierrej
     
    peut être que je n'ai pas été claire... Je voudrai que le code copi le dossier KG007 et le colle dans ce répertoire: /clients/nomdumembre/ en créant un nouveau dossier qui va s'appeler KG... c'est bien ce que fait mon code ? non ?

    je sèche là :/
    0
  10. pierrej
     
    ce code est il correct ?

    $dir_paste = './'.$_SESSION['membre_pseudo'].'/KG/'; 


    pouvez-vous me dire ce que php va comprendre avec ce code ?
    0
    1. vinc
       
      pour savoir ce que ça donne fait
       echo $dir_paste ;
      
      0
    2. pierrej
       
      JE NE COMPREND PAS ! j'ai utilisé echo et le code est bon pourtant ! Mais je n'y arrive pas ! :(
      le fichier ne veut pas se générer dans le répertoire "session ['membre_pseudo'] "!
      0
    3. vinc
       
      Il doit y avoir un problème dans ta fonction copy_dir, si les paramètres sont corrects

      identifie exactement ce qui cloche, en affichant tes variables à chaque étape (ou à l'aide d'un débugeur), puis on sera en mesure de t'aider
      0
  11. le père
     
    Bonsoir

    Ajoute l'instruction error_reporting(E_ALL); au début de ton script. Il t'affichera très probablement un warning au niveau du mkdir qui t'aidera à comprendre.

    si './'.$_SESSION['membre_pseudo'] existe déjà, il n'a peut-être pas les bons droits (d'ailleurs, c'est './'.$_SESSION['membre_pseudo'] ou './clients/'.$_SESSION['membre_pseudo'] ?)

    S'il n'existe pas déjà, c'est normal que mkdir ne marche pas : mkdir ne crée pas deux niveaux de sous-répertoire à la fois. Il faut créer d'abord './clients/'.$_SESSION['membre_pseudo'], puis './clients/'.$_SESSION['membre_pseudo'].'/KG/'

    Remarque : pourquoi tester if (!is_dir($dir_paste)) à l'intérieur du while ? C'est une perte de temps : une seule fois avant le while suffit. $dir_paste ne vas pas apparaître et disparaître entre deux fichiers
    0
  12. YannOuch
     
    Salut pourquoi ne pas faire comme tu l'as dis toi même :

    $dir_paste = './clients/<?php echo $_SESSION['membre_pseudo'] ?>/KG/';

    Non ?
    0
    1. le père
       
      Bonjour

      Parce que c'est sûr que ça ne marche pas. Tu ne vas pas ouvrir une balise <?php alors que tu es déjà en php ! D'ailleurs, à l'endroit où tu le mets, ça n'ouvre même pas de balise php, ça insère juste une chaîne qui se termine en parse_error.
      0
    2. YannOuch
       
      Ôui oops ! Pas tilté !

      <?php
      $id=$HTTP_SESSION_VARS['membre_pseudo'];
      Pour ta session membre, donc $id (ou autre .. ) pour ton fichier.
      Ensuite tes requêtes sql pour récupérer ce fichier.

      $id=$HTTP_SESSION_VARS['membre_pseudo'];
      if (is_numeric($id)) {
      $$dir_paste=intval($id);
      $sql=mysql_query("SELECT * FROM blabla WHERE fid=$id"); // pour ton fichier
      }
      else {
      @$sql=mysql_query("SELECT * FROM blabla WHERE doss='$doss'") or die("erreur");
      }
      if(!mysql_num_rows($sql))
      {
      echo " ";
      ?>

      à tester
      0