Variable variable.

Variable variable. - PHP - Programmation

Marsh Posté le 05-08-2006 à 23:34:36    

Salut,
 
Voila j'ai une variable qui depend d'une autre donc je voulais deja savoir si c'était correcte d'écrire ca:

Code :
  1. $test{$numero};


pour avoir la variable $test1, si avant on a $numero=1 mais ce qui me fais surtout souci c'est comment fait dans le cas des variables superglobales (c'est bien comme ca qu'on dit ?) dans ce cas de figure:  

Code :
  1. $_FILES['fichier{$numero}']['name']


car dans le formulaire correspondant on peut avoir ces cas de figure

Code :
  1. <input type="file" name="fichier1" />
  2. <input type="file" name="fichier2" />
  3. <input type="file" name="fichier3" />
  4. etc...


les acolades apparement c'est faux alors quelle est la bonne syntaxe ?
 
P.S. au passage j'ai une petite question sur les fichier qu'on envoie avec un formulaire html (formulaire qui produit la variable $_FILES) je voulais savoir comment faire pour savoir si l'utilisateur a bien choisit un fichier avant de cliquer sur le bouton submit ou si il a laisser le champ vide. Est ce que c'est avec un isset() comme pour le cas de la variable $_POST, qui elle n'est pas un tableau à deux dimansions comme $_FILES.


Message édité par cimourdain le 05-08-2006 à 23:42:49
Reply

Marsh Posté le 05-08-2006 à 23:34:36   

Reply

Marsh Posté le 06-08-2006 à 00:09:13    

en fait tu utilises un tableau là ;)
 
et la syntaxe c'est comme pour une chaine (puisque la clef en est une)
 
$tableau['numero'.$mavariable] donnera $tableau['numero1'] si $mavariable vaut 1
 
pour les variables variables  ta syntaxe est bonne, y'a juste confusion dans ce cas précis


Message édité par Sh@rdar le 06-08-2006 à 00:09:54

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 06-08-2006 à 16:40:08    

ca marche pas, est ce que c'est parce que c'est dans une fonction la ligne

Code :
  1. $test{$numero};


et que $numero est un argument de la fonction ?

Code :
  1. function transformation($numero)
  2. {
  3.                 ...
  4. $test{$numero} = ...
  5.                 ...
  6. }


 
j'obtiens une erreur

Citation :

Parse error: syntax error, unexpected T_STRING


j'ai vérifié 10 fois et je ne vois pas de quoi d'autre cette erreur pourrait venir.


Message édité par cimourdain le 06-08-2006 à 16:42:46
Reply

Marsh Posté le 06-08-2006 à 16:45:10    

alors si ça marche pas [:spamafote]
 
y'a une erreur de syntaxe mais sans code c'est dur à corriger...


Message édité par Sh@rdar le 06-08-2006 à 16:45:59

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 06-08-2006 à 17:14:30    

Code :
  1. function up_fichier($numero)
  2. {
  3. $erreur='';
  4. if ($_FILES['fichier'.$numero]['error'] > 0 )
  5. {
  6. $erreur = $erreur." Erreur lors du transfert du fichier ".$numero;
  7. }
  8. $maxsize=1000000;
  9. if ($_FILES['fichier'.$numero]['size'] > $maxsize)
  10. {
  11. $erreur = $erreur." Le fichier ".$numero." est trop gros";
  12. }
  13. $ext_valides = array( 'jpg', 'JPG');
  14. $ext_fichier{$numero} = substr(  strrchr($_FILES['fichier'.$numero]['name'], '.')  ,1);
  15. if ( !(in_array($ext_fichier{$numero}, $ext_valides)))
  16. {
  17. $erreur = $erreur.' Extensions incorrectes pour le fichier '.$numero.': jpg seulement !';
  18. }
  19. $maxwidth=1280;
  20. $maxheight=1024;
  21. $fichier{$numero}_sizes = getimagesize($_FILES['fichier'.$numero]['tmp_name']);
  22. ....
  23. }


 
ca bloque sur la dernière ligne:

Code :
  1. $fichier{$numero}_sizes = getimagesize($_FILES['fichier'.$numero]['tmp_name']);


 
j'appelle la fonction ainsi: up_fichier(2); par exemple pour faire mes essais.


Message édité par cimourdain le 06-08-2006 à 17:17:33
Reply

Marsh Posté le 06-08-2006 à 17:53:52    

c'est crade ce que tu fais :/

Reply

Marsh Posté le 06-08-2006 à 18:12:39    

pourquoi ?

Reply

Marsh Posté le 06-08-2006 à 18:20:36    

Ce serait pas plus simple de stocker dans un tableau plutot que des variables variables ?
 
Par exemple : $fichier[$numero]["ext"]=substr(  strrchr($_FILES['fichier'.$numero]['name'], '.')  ,1);
et pareil pour la taille :)

Reply

Marsh Posté le 06-08-2006 à 18:56:20    

c'est pas crade c'est infâme en plus d'être incorrect


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 06-08-2006 à 19:17:48    

ouais ben au lieu de me descendre vous voulez pas me filer un coup de main svp ?


Message édité par cimourdain le 06-08-2006 à 19:19:31
Reply

Marsh Posté le 06-08-2006 à 19:17:48   

Reply

Marsh Posté le 06-08-2006 à 19:26:44    

Qu'est ce que j'ai fais ?

Reply

Marsh Posté le 06-08-2006 à 19:38:17    

au lieu de me dire que mon code c'est de la merde, vous pourriez pas juste me dire comment résoudre mon probleme ?

Reply

Marsh Posté le 06-08-2006 à 19:44:32    

utilise un tableau, Je@nb t'as montré comment faire :o


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 07-08-2006 à 14:24:03    

pourquoi est ce que quand j'écris ca:

Code :
  1. $numero=2;
  2. $nom_fichier{$numero}="test encore";
  3. echo "<br/>";
  4. echo $nom_fichier2;


pourquoi est ce que j'obtiens a chaque fois que la premiere lettre de la chaine ? ici en l'occurence "t" ?

Message cité 1 fois
Message édité par cimourdain le 07-08-2006 à 14:24:49
Reply

Marsh Posté le 07-08-2006 à 14:29:36    

On ne peut pas dire que tu es entêté quand même

Reply

Marsh Posté le 07-08-2006 à 14:43:45    

pourquoi tu veux pas juste répondre a ma question ? sérieux ca te sers a quoi de me dire

Citation :

On ne peut pas dire que tu es entêté quand même

??


Message édité par cimourdain le 07-08-2006 à 14:43:57
Reply

Marsh Posté le 07-08-2006 à 14:47:35    

On te dis de faire des tableaux et toi tu t'entetes à faire des variables variables qui te compliquent la vie en plus d'être crade.
On te donne la ligne qui va bien, bref tout et toi tu reviens à la charge :/

Reply

Marsh Posté le 07-08-2006 à 14:48:27    

cimourdain a écrit :

pourquoi est ce que quand j'écris ca:

Code :
  1. $numero=2;
  2. $nom_fichier{$numero}="test encore";
  3. echo "<br/>";
  4. echo $nom_fichier2;


pourquoi est ce que j'obtiens a chaque fois que la premiere lettre de la chaine ? ici en l'occurence "t" ?


 
 
on abrège plutôt :
 
${'nom_fichier'.$numero}  
 
et ça passera mieux
 


Message édité par Sh@rdar le 07-08-2006 à 14:49:51

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 07-08-2006 à 19:00:18    

ok merci.
Je me suis apercu que ce que j'avais fait est completement stupide, non pas a cause de ce que vous disiez mais a cause que je n'ai pas besoin des indices sur les variables ! en fait j'ai fait la conneries de ne pas distinguer les variables locales de ma fonction et les variables du reste du code. J'ai voulu faire une fonction car la meme opération devait se répéter plusieurs fois au fur et a mesure que j'avancais dans le code et donc pour faire la fonction j'ai fait un copier coller d'une seule des 3 lingnes identiques a chaque fois (à l'indice pres) et c'est pour ca que j'avais voulu faire une variable pour l'indice. Bon je sais pas si je suis très clair mais toujours est-il que j'ai résussi a faire ce que je voulais.
Par contre je sais toujours pas pourquoi c'est crade de pas faire sous forme de tableau et pourquoi dans le dernier exemple que je donne j'obtiens que la premiere lettre de la chaine ! J'aimerais bien le savoir pour m'instruire !!

Reply

Sujets relatifs:

Leave a Replay

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