[PHP] Utilisation d'un nom de variable qui varie dans une boucle

Utilisation d'un nom de variable qui varie dans une boucle [PHP] - PHP - Programmation

Marsh Posté le 22-04-2006 à 11:37:44    

Bonjour à tous,
 
Voilà ma requête :
 
$requete =  "SELECT nom FROM MaTable WHERE id = $variable1";
 
Tout ça est exectuté dans une boucle FOR :

Code :
  1. for ($j=1; $j<11; $j++)
  2.  {
  3.        $requete =  "SELECT nom FROM MaTable WHERE id = $variable1";
  4.        $req = MYSQL_QUERY($requete);
  5.        $NomObjet1  = stripslashes(trim(mysql_result($req,0,"nom" )));
  6.  }


 
Je souhaite que mon $j soit utilisé pour faire tourné $variable1 à $variable10 et $NomObjet1 à $NomObjet10
J'ai bien essayé de composer le nom de la variable et de l'injecté ensuite mais ça me jète gentiement :)
 
Si vous pouviez m'aider : merci :)

 
EDIT  : c'est peut être mieux explique comme ça :
 
 
En gros je ré-explique ce que je souhaite.
 
J'ai $j la variable qui va passer de 1 à 10 dans une boucle FOR
Je veux utiliser dans cette boucle une variable $V1 à $V10.
Je veux utiliser $V1 quand $j=1, $V2 quand $j=2, etc.
 
Je voulais écrire "$V".$j pour construire ma variable $V1 par exemple mais cela ne marche pas : il doit bien y avoir une solution ?


Message édité par Falconpage le 22-04-2006 à 14:39:46
Reply

Marsh Posté le 22-04-2006 à 11:37:44   

Reply

Marsh Posté le 22-04-2006 à 11:52:15    

Utilise un tableau, c'est fait pour ça.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 22-04-2006 à 11:53:19    

rien compris à ce que tu voulais faire, mais déjà je pense que c'est pas du tout optimisé et que tu dois pouvoir faire autre chose.  
 
le mysql_fetch_array ca pourait te servir.
 
++


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 22-04-2006 à 11:59:42    

en gros je voudrais éviter ça grace à la boucle for  :
 

Code :
  1. $requete =  "SELECT nom FROM MaTable WHERE id = $variable1";
  2.  
  3.                                       $req = MYSQL_QUERY($requete);
  4.  
  5.                                       $NomObjet1  = stripslashes(trim(mysql_result($req,0,"nom" )));
  6.                                       $requete =  "SELECT nom FROM MaTable WHERE id = $variable2";
  7.  
  8.                                       $req = MYSQL_QUERY($requete);
  9.  
  10.                                       $NomObjet2  = stripslashes(trim(mysql_result($req,0,"nom" )));
  11.                                       $requete =  "SELECT nom FROM MaTable WHERE id = $variable3";
  12.  
  13.                                       $req = MYSQL_QUERY($requete);
  14.  
  15.                                       $NomObjet3  = stripslashes(trim(mysql_result($req,0,"nom" )));
  16. etc...


 
Le but étant de faire varier le nom des variables : mais si on fait ça les requête ne fonctionne plus.


Message édité par Falconpage le 22-04-2006 à 12:09:40
Reply

Marsh Posté le 22-04-2006 à 12:00:14    

newneo2001 a écrit :

rien compris à ce que tu voulais faire, mais déjà je pense que c'est pas du tout optimisé et que tu dois pouvoir faire autre chose.  
 
le mysql_fetch_array ca pourait te servir.
 
++


 
Je vais regardé, merci :)

Reply

Marsh Posté le 22-04-2006 à 14:37:52    

Ca marche forcément avec un tableau mais ça ne répond pas à ma question (je suis sur pourtant que ça doit être possible).
 
En gros je ré-explique ce que je souhaite.
 
J'ai $j la variable qui va passer de 1 à 10 dans une boucle FOR
Je veux utiliser dans cette boucle une variable $V1 à $V10.
Je veux utiliser $V1 quand $j=1, $V2 quand $j=2, etc.
 
Je voulais écrire "$V".$j pour construire ma variable $V1 par exemple mais cela ne marche pas : il doit bien y avoir une solution ?

Reply

Marsh Posté le 22-04-2006 à 14:58:07    

Et pourquoi tu utiliserais pas une variable $j[1] à $j[10] ? Ca marchera de la même façon en bcp plus propre...
PS. Oui c'est possible de concaténer des chaines pour en faire un nom de variable mais c'est une très mauvais pratique en général...

Reply

Marsh Posté le 22-04-2006 à 17:10:35    

Pour donner un nom dynamique à une varible faut utiliser des { }, soit dans ton cas : ${"variable".$j}

Reply

Marsh Posté le 22-04-2006 à 20:02:04    

:love: Merci beaucoup : ça va simplifier largement le code de mon application :)

Reply

Marsh Posté le 22-04-2006 à 20:08:52    

Neraud a écrit :

Pour donner un nom dynamique à une varible faut utiliser des { }, soit dans ton cas : ${"variable".$j}


 
Testé : ça marche impec !

Reply

Marsh Posté le 22-04-2006 à 20:08:52   

Reply

Marsh Posté le 22-04-2006 à 20:09:54    

gooopil a écrit :

Et pourquoi tu utiliserais pas une variable $j[1] à $j[10] ?


 
Tu parles d'un tableau J contenant entre 1 et 10 les valeurs V1 à V10 ?

Reply

Marsh Posté le 22-04-2006 à 22:30:26    

Falconpage a écrit :

Tu parles d'un tableau J contenant entre 1 et 10 les valeurs V1 à V10 ?


 
Ben oui :o
 
Le tableau c'est LA solution, les variables variables comme t'a indiqué Neraud, c'est vraiment pas propre et c'est source de bug (C'est bien pour ça que j'avais pas expliqué comment faire...) Après fait comme tu veux, je suis loin d'être la personne avec le plus d'expérience ou de connaissance en prog ici, mais je pense pas qu'on me contredise sur ce point la...

Reply

Marsh Posté le 23-04-2006 à 09:08:08    

Merci pour ton avis :)  J'ai bien noté tes commentaires mais j'étais quand même interessé pour connaitre au cas où :)
 
Je programme principal en VB pour mon boulot (petits programme, là non plus rien d'extraordinaire). C'est clair que les tableaux c'est LA solution ;)
 
Merci en tout cas pour vos aides et commentaires :)

Reply

Sujets relatifs:

Leave a Replay

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