[PHP/SQL] Concaténation de variables

Bonjour,

mon problème est simple à expliquer :

j'ai une variable $groupe qui prend en réalité autant de forme que d'enregistrement dans une table : $groupe1, $groupe2, $groupe3...

En clair s'il y a 3 enregistrements dans la table, il y a 3 variables $groupeX (où X =1,2 ou 3) et je souhaite afficher les valeurs de chacune de ces variables si ces valeurs sont différentes de "" (en fait si elles contiennent une valeur).

je souhaite donc utiliser $i pour avoir le numéro, et donc avoir $groupe suivi de $i qui s'incrémente tant que la boucle n'atteint pas le nombre total d'enregistrement.

mais si je fais echo $groupe.$i il écrit l'un a coté de l'autre les valeurs de la variable $groupe et de la variable $i.

Comment faire pour qu'il comprène que je souhaite la valeur de la variable constitué de la chaine "groupe" suivi d'un chiffre contenu dans la variable $i ??

je ne sais pas si je me suis bien expliqué, au besoin demandez moi !

merci à tous

4 réponses

  1. Modérateur
    Salut,

    Pour ça il faut utiliser les variables dynamiques.
    Comme ceci : ${nom_variable}

    Et nom_variable peut être n'importe quelle chaine de caractère.
    Pour toi ce sera
    ${ 'groupe' . $i }

    C'est plutôt déconseillé d'utiliser les variables dynamiques mais bon....
    1. Salut Killian, merci de ta réponse !

      je testerai donc avec les variables dynamiques, et si je rencontre un problème j'essaierai la solution de Darshu, merci à toi aussi pour ton aide!

      Et au fait quel est le défaut des variables dynamiques ?
    2. Modérateur
      Et au fait quel est le défaut des variables dynamiques ?

      Ca peut rendre le code moins lisible (ça peut être difficile en lisant le code de savoir à quelle variable on se réfère).
      Et tu peux parfois tomber sur une variable qui n'existe pas...
  2. Je suis en train de creer mon cms est je bloqué dans la partie administration simplifier mais grace à vous ca marche

    Mille merci

    if ($submit=="Ajouter"){
    $val1="NULL";
    $bloc=$nombre_de_champ_de_la_table-1;
    for($i=1; $i != $nombre_de_champ_de_la_table ; $i++){
    if ($i<>"$bloc"){
    $toto=${ 'champ' . $i };
    //echo "$toto";
    $liste1="`$toto` , ";
    $liste2=$liste2.$liste1;
    } else {
    $toto=${ 'champ' . $i };
    //echo "$toto";
    $liste1="`$toto`";
    $liste2=$liste2.$liste1;};

    };

    for($i=1; $i != $nombre_de_champ_de_la_table ; $i++){

    if ($i<>"$bloc"){
    $val=${ 'val' . $i };
    //echo "$val";
    $liste3="'$val' , ";
    $liste4=$liste4.$liste3;
    } else {
    $val=${ 'val' . $i };
    //echo "$val";
    $liste3="'$val'";
    $liste4=$liste4.$liste3;};

    };
    //echo "<br>finale = $liste2<br>";
    //echo "finale = $liste4";

    $insert="INSERT INTO $nom_de_la_table ($liste2) VALUES ($liste4);";
    //echo "$insert";
    mysql_query("$insert");

    };
    1. Salut. Il y a également une autre méthode, c'est de faire $groupe['$i'], ça te rajoute juste une paire de crochets et ça devrait marcher, j'ai fait comme ça plusieurs fois !