[PHP] nom de variables formée a partir d'autres variables

nom de variables formée a partir d'autres variables [PHP] - PHP - Programmation

Marsh Posté le 12-06-2003 à 21:59:57    

J'ai un soucis pour traiter les données soumises par un formulaire plutot complexe composé d'une vingtaine de listes déroulantes contenant des noms de membres.
Chaque liste retourne une variable (nom d'un membre).
La première liste retourne $h1sb1_participants et la dernière $h3sb3_participants
 
Pour traiter les résultats du formulaire, il faut que je crée une requete qui va chercher dans une table l'id membre qui correspond au nom retourné dans la variable $h1sb1_participants.
 
Jusque la tout va bien avec une requete du type :  
"SELECT * FROM participants_hommes WHERE nom_participants='".$h1sb1_participants."'"
 
Pour traiter toutes les listes, je souhaiterai créer un double boucle FOR imbriquée du type :
$j=1;
for($j=1;$j<3;$j++)
{
   $i=1;
   for($i=1;$i<4;$i++)
   {
      "SELECT * FROM participants_hommes WHERE nom_participants='".$h1sb1_participants."'"
   }
}
 
En gérant avec $i et $j les différentes variables de $h1sb1_participants à $h3sb2_participants comme si j'avais une variable $h.$j."sb".$i."_participants
 
Comment faire ? Ou si vous avez une solution plus simple ?
 
PS : j'espere que vous allez comprendre ce que je raconte :)
 
 

Reply

Marsh Posté le 12-06-2003 à 21:59:57   

Reply

Marsh Posté le 12-06-2003 à 22:07:21    

Je viens de penser a un truc ...
Ce qui me faut la c'est un table a 2 dimensions.
Genre : $d[$j][$i]
Ca fonctionne sous php ?

Reply

Marsh Posté le 12-06-2003 à 22:10:32    

OK j'ai trouvé   :)  
 
google !!!

Code :
  1. <?php
  2. $fruits = array ( "fruits"  => array ( "a" => "orange",
  3.                                        "b" => "banane",
  4.                                        "c" => "pomme"
  5.                                      ),
  6.                   "nombre" => array ( 1,
  7.                                        2,
  8.                                        3,
  9.                                        4,
  10.                                        5,
  11.                                        6,
  12.                                      ),
  13.                   "trou"   => array (      "premier",
  14.                                        5 => "second",
  15.                                             "troisi&egrave;me"
  16.                                      )
  17.                 );
  18. // Exemples d'utilisations des tableaux ci-dessus  
  19. echo $fruits["trou"][5];    // affiche "second"
  20. echo $fruits["fruits"]["a"]; // affiche "orange"
  21. unset($fruits["trou"][0]);  // supprime "premier"
  22. // Cr&eacute;er un tableau multidimensionnel
  23. $juices["pomme"]["vert"] = "bon";
  24. ?>

Reply

Marsh Posté le 12-06-2003 à 22:10:35    

Tu peux accéder à une variable par ${'nom de la variable'};
Il suffit simplement que la chaine de caractère entre accolades (que tu construits comme tu veux, par concaténations, appels de fonction ... ) corresponde à un nom de variable :)
 
edit : j'ai pas du comprendre la question :pt1cable:


Message édité par mrbebert le 12-06-2003 à 22:12:00
Reply

Marsh Posté le 12-06-2003 à 22:15:02    

Non c'est nickel mrBebert  :love:  
Avec ton astuce j'ai pas besoin de changer tous les noms de variables de mon forumlaire. Alors que si j'avais opté pour le tableau a plusieurs dimensions , j'aurai du tout changer
 
MERCI


Message édité par redrat le 12-06-2003 à 22:15:41
Reply

Marsh Posté le 12-06-2003 à 22:18:25    

Je viens de tester et c'est exactement ce que je voulais !!

Code :
  1. echo ${'d'.$j.'sb'.$i.'_participants'};

retourne le nom du membre
Trop classe


Message édité par redrat le 12-06-2003 à 22:19:02
Reply

Marsh Posté le 12-06-2003 à 22:21:56    

:sol:

Reply

Marsh Posté le 12-06-2003 à 22:23:08    

Je me demande comment t'as fait pour comprendre ce que je racontait plus haut :)
T'es télépathe  :heink:

Reply

Marsh Posté le 12-06-2003 à 22:24:40    

Citation :

... comme si j'avais une variable $h.$j."sb".$i."_participants

je crois que c'est ca qui m'a mis sur la voie :)

Reply

Marsh Posté le 13-06-2003 à 09:36:26    

rien qu'avec le titre j'avais la réponse à donner.
Ton titre etait 10x plus clair que l'explication :-D

Reply

Marsh Posté le 13-06-2003 à 09:36:26   

Reply

Marsh Posté le 15-06-2003 à 16:21:39    

J'ai un autre soucis à présent mais toujours lié a la meme problématique
 
Je voudrais avoir dans une boucle les valeurs du type $data['h1sb1_handicap'] par exemple
 
Comment former correctment la variable ?
$data['."{'h'.$j.'sb'.$i.'_handicap'}".'] ne marche pas
et $data['{"h".$j."sb".$i."_handicap"}'] non plus


Message édité par redrat le 15-06-2003 à 16:25:59
Reply

Marsh Posté le 15-06-2003 à 18:14:59    

très intéressant topic, j'y ai lu des trucs qui vont m'être bien utiles :)
 
redrat > ce serait pas plutôt :
 

Code :
  1. ${"data['h".$j."sb".$i."_handicap]"}


 
:??:

Reply

Marsh Posté le 15-06-2003 à 18:21:09    

HORNY-GRANDCORNU a écrit :


Code :
  1. ${"data['h".$j."sb".$i."_handicap']"}



Manqué un ', enfin, si c'est ça...

Reply

Marsh Posté le 16-06-2003 à 00:00:53    

Apparemment c'est pas ca ou alors j'ai une erreur dans mon code mais ca m'étonnerait car tout sembl correct.
En tout cas j'ai plus d'erreur de syntax mais

Code :
  1. ${"data['h".$j."sb".$i."_handicap']"}
  2. retourne NULL

 
 
Si quelqu'un d'autre à la solution

Reply

Marsh Posté le 16-06-2003 à 00:03:28    

La chaine de caractères correspondant au nom de la variable est dans un tableau ?
${data['h' . $j . 'sb' . $i . '_handicap']}
 
sit tu écris 'data[indice]', ca te met la chaine de caractères : data[indice], car PHP n'évalue pas ce qui est entre ' ' [:proy]

Reply

Marsh Posté le 16-06-2003 à 00:17:50    

Avec ton code j'ai : Parse error: parse error, unexpected '['  

Reply

Marsh Posté le 16-06-2003 à 00:26:19    

Il faut peut être passer par une variable intermédiaire alors :
$var = $data['h' . $j . 'sb' . $i . '_handicap'];
echo ${$var};
 
Je crois qu'on peut même écrire $$var; [:figti]
 
edit : nan, en fait, il manquait un $ :D  
${$data['h' . $j . 'sb' . $i . '_handicap']}
 
Il est peut être aussi possible d'écrire directement :
$$data['h' . $j . 'sb' . $i . '_handicap'];


Message édité par mrbebert le 16-06-2003 à 00:29:30
Reply

Marsh Posté le 16-06-2003 à 20:31:42    

Merci mrbebert mais c'est toujours pas ca (retourne toujours NULL)
Ca commence a me rendre dingue
 
PS : j'ai essayé les trois techniques si dessus et aussi tester ma requete qui retourne bien un enregistrement)


Message édité par redrat le 16-06-2003 à 20:41:31
Reply

Marsh Posté le 16-06-2003 à 21:25:32    

En fait la solution c'est $data['h'.$j.'sb'.$i.'_participants'];
Sans utiliser de $$ ou de { }
Merci mrbebert et merci aussi a MichaelFR de phpdebutant.com

Reply

Marsh Posté le 16-06-2003 à 21:28:18    

Tu voulais juste récupérer le contenu du tableau :pt1cable:  
 
Je croyais que tu voulais récupérer le contenu d'une variable dont le nom était dans un tableau :sol:

Reply

Marsh Posté le 16-06-2003 à 21:33:23    

Effectivement, on a un peu compliqué la chose  :lol:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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