[Résolu] créer une variable quand on ne connait pas son contenu ?

créer une variable quand on ne connait pas son contenu ? [Résolu] - PHP - Programmation

Marsh Posté le 30-12-2013 à 17:37:32    

Bonjour,  
la question peut paraître conne mais ,je m'explique .
 
je cherche à définir un fichier csv présent dans un répertoire spécifique en variable php.
 
le nom du fichier pourra être janvier.csv , décembre.csv, ou nimporte_quel_nom.csv  
 
normalement ce répertoire n’accueillera qu'un seul .csv à la fois
 
mais peut importe le nom je souhaite que ce fichier soit pris comme variable  
 
connaissez vous un moyen ?  
 
 
j'avais penser à un truc du genre  
 
$directory = 'C:/Users/machin/www/repertoir_csv/';
 
$nomdufichier = glob($directory);
 
$fichier = $directory . "" .'.csv';
 
 
mais ça marche pas


Message édité par Djeweler le 31-12-2013 à 11:21:37
Reply

Marsh Posté le 30-12-2013 à 17:37:32   

Reply

Marsh Posté le 30-12-2013 à 18:09:16    

Ne pourais-tu lire le nom du fichier dans le répertoire ?

Reply

Marsh Posté le 30-12-2013 à 18:10:41    

Mais si ça marche, mis à part un petit problème de syntaxe.
 
Essayer :  

$mois = "janvier"
$fichier = "C:/Users/machin/www/repertoir_csv/" . $mois . ".csv";
echo $fichier

Reply

Marsh Posté le 30-12-2013 à 21:49:38    

Code :
  1. $directory = 'C:/Users/machin/www/repertoir_csv/';
  2. $nomdufichier = glob($directory);
  3. $fichier = $directory . "" .'.csv';


 
C'est normal, ce code n'a pas de sens.  
Si tu utilises glob, il faut pour lui filer un joker/wildcard (*), et la ligne "$fichier = ..." est aussi utile que la ligne qui la précède.
 
Si tu veux un code qui fait des trucs logiques il ressemblerait plutôt à ça :
 

Code :
  1. $directory = 'C:/Users/machin/www/repertoir_csv/';
  2. $fichier = glob($directory. '*.csv');
  3. // $fichier contient C:/Users/machin/www/repertoir_csv/qqchose.csv
  4. $nomfichier = basename($fichier_csv);
  5. // $nomfichier contient qqchose.csv


 
reste à savoir s'il fonctionne comme tu le souhaites...


Message édité par czh le 30-12-2013 à 21:54:11
Reply

Marsh Posté le 31-12-2013 à 10:08:25    

tout d'abord merci pour les raiponces et le temps que vous y avez consacré.  
 
Ambition ,  c'est pas ce qu'est censé faire glob ?
 
olivthill , non c'est pas du tout ça, les noms de fichiers ne sont pas définit et ne le seront jamais, seul le format l'est. du coup je ne peut pas mettre une variable  $mois = "janvier" , les mois était simplement pour illustrer.
 
czh merci pour l'astuce du joker, je ne connaissais pas.
 
par contre, on va dire que mon fichier se nomme 007.csv, si je fais
 

Code :
  1. $fic = ($directory  .  $fichier );
  2. echo $fic;


je devrais avoir à l'affichage  
 

Code :
  1. C:/Users/machin/www/repertoir_csv/007.csv


 
mais au lieu de ça j'ai  
 

Code :
  1. C:/Users/machin/www/repertoir_csv/Array


 
c'est moche...


Message édité par Djeweler le 31-12-2013 à 10:58:36
Reply

Marsh Posté le 31-12-2013 à 11:06:30    

Citation :

GLOB
 
Valeurs de retour
 
Retourne un tableau contenant les fichiers et dossiers correspondant au masque, un tableau vide s'il n'y a aucune correspondance, ou FALSE si une erreur survient.

Reply

Marsh Posté le 31-12-2013 à 11:07:22    

Un tableau ne peut pas être "echo".  
Ca se lit comme ca : $tab[x]

Reply

Marsh Posté le 31-12-2013 à 11:18:27    

ok c'est bon j'ai trouvé .
 
c'est pas du tout avec  

Code :
  1. $fic = ($directory  .  $fichier );
  2. echo $fic;


 
a la suite de  
 

Code :
  1. $directory = 'C:/Users/machin/www/repertoir_csv/';
  2. $fichier = glob($directory. '*.csv');
  3. // $fichier contient C:/Users/machin/www/repertoir_csv/qqchose.csv
  4. $nomfichier = basename($fichier_csv);
  5. // $nomfichier contient qqchose.csv


 
même si le retour Array m'a aiguillée  
 
oui bistouille  un tableau  
 
en fait il faut prendre ça comme une liste en l'occurance ma liste n'a qu'une entrée $fichier[0] et c'est bien mon chemain de fichier complet.
 
du coup je fait  
 

Code :
  1. $fic = $fichier[0];
  2. echo $fic;


 
 
si je reprend l'exemple avec 007.csv,  j'ai en retour d'echo

Code :
  1. 'C:/Users/machin/www/repertoir_csv/007.csv'


 
tout est nickel .
 
Merci tout le monde.


Message édité par Djeweler le 31-12-2013 à 11:22:09
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed