OVH Cloud OVH Cloud

construire le nom d'une variable

9 réponses
Avatar
Thierry B.
Bonjour,

J'ai une liste de variables $sql1, $sql2, etc.. et une boucle "for ($i = 0;
$i < 12; $i++)".
J'exécute à chaque itération un query avec $sql1, puis $sql2, etc..., et je
veux utiliser dynamiquement $i pour construire la variable, mais je coince,
j'ai essayé:

$sql = '$sql' . $i;
J'ai essayé aussi avec la fonction eval mais j'ai toujours des erreurs.

Est-ce quelqu'un qui a déjà utilisé çà peut me dire comment il faut faire ?

TB
--
Click below to answer / cliquez ci dessous pour me repondre
http://cerbermail.com/?MQkxTL4vUP

9 réponses

Avatar
Romeyer Olivier
Bonjour,
essayes :

$sql = ${'sql' . $i};

Olivier
"Thierry B." a écrit dans le message de news:
buh304$ijg$
Bonjour,

J'ai une liste de variables $sql1, $sql2, etc.. et une boucle "for ($i 0;
$i < 12; $i++)".
J'exécute à chaque itération un query avec $sql1, puis $sql2, etc..., et
je

veux utiliser dynamiquement $i pour construire la variable, mais je
coince,

j'ai essayé:

$sql = '$sql' . $i;
J'ai essayé aussi avec la fonction eval mais j'ai toujours des erreurs.

Est-ce quelqu'un qui a déjà utilisé çà peut me dire comment il faut faire
?


TB
--
Click below to answer / cliquez ci dessous pour me repondre
http://cerbermail.com/?MQkxTL4vUP


Avatar
CrazyCat
Thierry B. wrote:
J'ai une liste de variables $sql1, $sql2, etc.. et une boucle "for
($i = 0; $i < 12; $i++)".
J'exécute à chaque itération un query avec $sql1, puis $sql2, etc...,
et je veux utiliser dynamiquement $i pour construire la variable,
mais je coince, j'ai essayé:
$sql = '$sql' . $i;
J'ai essayé aussi avec la fonction eval mais j'ai toujours des
erreurs.


A vérifier:
$$sql = "sql$i";
Ensuite, tu utilises $sql et non pas $$sql

--
CrazyCat
Tout sur les eggdrops en français...
http://www.c-p-f.org

Avatar
Olivier Miakinen

Bonjour,

J'ai une liste de variables $sql1, $sql2, etc.. et une boucle "for ($i = 0;
$i < 12; $i++)".
J'exécute à chaque itération un query avec $sql1, puis $sql2, etc..., et je
veux utiliser dynamiquement $i pour construire la variable, mais je coince,
j'ai essayé:

$sql = '$sql' . $i;
J'ai essayé aussi avec la fonction eval mais j'ai toujours des erreurs.

Est-ce quelqu'un qui a déjà utilisé çà peut me dire comment il faut faire ?


Tu as ceci :
http://fr.php.net/manual/fr/print/language.variables.variable.php

*MAIS* dans 99,999% des cas tu as intérêt à utiliser un tableau plutôt
que des variables de variables.

Avatar
P'tit Marcel
"Thierry B." écrivit
news:buh304$ijg$:

J'ai une liste de variables $sql1, $sql2, etc.. et une boucle "for ($i
= 0; $i < 12; $i++)".
J'exécute à chaque itération un query avec $sql1, puis $sql2, etc...,
et je veux utiliser dynamiquement $i pour construire la variable,


soit
eval('$sql= $sql'.$i.';');

soit
$sql = ${'sql'.$i};

Cela dit, il serait plus propre de définir un tableau $tabsql[0] ...
$tabsql[11] qui peut facilement être parcouru par un foreach.

eça

Avatar
Ngoc Ho
Thierry B. de ses dix petits doigts nous a dit :

J'ai une liste de variables $sql1, $sql2, etc.. et une boucle "for ($i = 0;
$i < 12; $i++)".
J'exécute à chaque itération un query avec $sql1, puis $sql2, etc..., et je
veux utiliser dynamiquement $i pour construire la variable, mais je coince,
j'ai essayé:

$sql = '$sql' . $i;


j'avsi fait une fois un truc de ce genre la dans un script :

for ($i = 0;$i < 12; $i++)
{
$sql = "sql".$i;
$requete = $$sql;

// traitement avec la variable $requete
// la 1er fois $requete contiendra la valeur de $sql1
// la 2eme fois $requete contiendra la valeur de $sql2
l// a 3eme fois $requete contiendra la valeur de $sql3
// et ainsi de suite..
}

Avatar
m-e-
"CrazyCat" a écrit dans le message de news: buh4v7$ssb$
Thierry B. wrote:
J'ai une liste de variables $sql1, $sql2, etc.. et une boucle "for
($i = 0; $i < 12; $i++)".
J'exécute à chaque itération un query avec $sql1, puis $sql2, etc...,
et je veux utiliser dynamiquement $i pour construire la variable,
mais je coince, j'ai essayé:
$sql = '$sql' . $i;
J'ai essayé aussi avec la fonction eval mais j'ai toujours des
erreurs.


A vérifier:
$$sql = "sql$i";
Ensuite, tu utilises $sql et non pas $$sql


C'est l'inverse :
$sql_i = "sql$i";
echo $$sql_i; // => affiche la valeur de la variable $sql1 si $i=1


--
CrazyCat
Tout sur les eggdrops en français...
http://www.c-p-f.org



Avatar
Thierry B.
"Romeyer Olivier" a écrit dans le message de
news:buh4pq$dqo$
Bonjour,
essayes :

$sql = ${'sql' . $i};


Merci, çà marche impeccable. J'avais pas pensé aux accolades.


Thierry B.
--
Click below to answer / cliquez ci dessous pour me repondre
http://cerbermail.com/?MQkxTL4vUP

Avatar
Thierry B.
"P'tit Marcel" a écrit dans le
message de news:

soit
eval('$sql= $sql'.$i.';');

soit
$sql = ${'sql'.$i};

Cela dit, il serait plus propre de définir un tableau $tabsql[0] ...
$tabsql[11] qui peut facilement être parcouru par un foreach.



oui, sauf que le contenu de chaque requête est presque identique, certaines
valeurs changeant en fonction de l'itération, la première solution est plus
pratique pour moi.

Merci à tous, si j'avais cherché un peu plus longtemps, je serai forcément
tombé sur la pages du manuel php.


--
Thierry Bothorel
<?f('$a=array(73,8*4,4*19,79,86,69,8*4,8*10,8*9,8*10,13,32,45,32,116,104,105
,101,
114,114,121,98,111,64,102,114,101,101,115,117,114,102,46,102,114);');
function f($a){print eval('eval($a);while(list(,$b)êch($a))echo
chr($b);');} ?> (Tobias Schlitt)

Avatar
CrazyCat
m-e- wrote:
A vérifier:
$$sql = "sql$i";
Ensuite, tu utilises $sql et non pas $$sql
C'est l'inverse :

$sql_i = "sql$i";
echo $$sql_i; // => affiche la valeur de la variable
$sql1 si $i=1


Oui, chaque fois je me trompe :)
--
CrazyCat
Tout sur les eggdrops en français...
http://www.c-p-f.org