Question sur les variables

Question sur les variables - PHP - Programmation

Marsh Posté le 09-01-2009 à 16:13:59    

Bonjour,
Je voulais savoir comment faire la chose suivante
 
J'ai une variable $id_rank, je souhaiterais que cette variable prenne la valeur de $rank$i ...
 
Préalablement un formulaire contient plusieurs input name=rank1 ... input name=rank2 ...
 
Je voudrais que $id_rank = $rank1, $id_rank = $rank2,  ...et pour ce faire je souhaite avec une boucle recupere $i et le concaténer avec la valeur rank ...
 
Pas evident a expliquer si qq'un à une idée
 
Merci d'avance

Reply

Marsh Posté le 09-01-2009 à 16:13:59   

Reply

Marsh Posté le 09-01-2009 à 16:15:38    

Je pige rien [:pingouino] Essaye d'expliciter mieux, en donnant plutôt des valeurs de départ et d'arrivée. Genre tes rank1 et rank2 qu'est-ce qu'on met dedans, et dans $id_rank qu'est-ce que tu veux retrouver (un cas concret) :)

Reply

Marsh Posté le 09-01-2009 à 16:23:54    

FORMULAIRE
 
> Requete SQL listant le nombre d'items d'une table ...
> Affichage en boucle de ces items
<input name=rank1>
<input name=rank2>
<input name=rank3>
Recuperation du nombre total d'items stocké dans la variable $a
 
VALIDATION
for ($i=1;$i<=$a;$i++)
{
  echo $rank$i; // C'est la que je souhaite afficher le contenu de la variable $rank1, puis $rank2, ... mais je sais pas comment faire
}

Reply

Marsh Posté le 09-01-2009 à 16:26:54    

Ah ok :D Il te faut les variable variables
 

Code :
  1. for($i = 1; $i < $a; $i++) {
  2.   $rankVar = 'rank' . $i;
  3.   echo ${$rankVar};
  4. }


 
Sinon tu peux utiliser un tableau plutôt pour nommer les input ?

Reply

Marsh Posté le 09-01-2009 à 16:43:59    

Merci FlorentG, je viens de me rendre compte que les valeurs rank1, rank2 ... peuvent etre recup qu'en utilisant $_POST['rank1'], ...
Du coup je sais plus quoi faire ... en utilisant un tableau pkoi pas mais honnetement je sais pas trop faire :(

Reply

Marsh Posté le 09-01-2009 à 16:45:19    

Récupère-les avec $_POST['rank1'], si l'autre méthode fonctionne ($rank1), c'est parce que l'option PHP register_globals est activée, et c'est très déconseillé de l'utiliser.

Reply

Marsh Posté le 09-01-2009 à 17:34:26    

Justement je dois utiliser $_POST['rank1'], mais comment dire a PHP que je veux $_POST['rank1'] ...  
$rankVar = 'rank' . $i;
echo $_POST[{$rankVar}]; ne marche pas par ex ... tu vois ce que je veux dire ?

Reply

Marsh Posté le 09-01-2009 à 17:35:41    

$_POST['rank'.$i] ?

Reply

Marsh Posté le 09-01-2009 à 17:39:35    

euh, c'est très simple...
 

Code :
  1. $key = 'rank';
  2.  
  3. $_POST['rank']; //acces à la clé "rank" du tableau $_POST
  4. $_POST[$key]; //acces à la clé $key (donc "rank" ) du tableau $_POST
  5.  
  6. $variable = 'valeur';
  7. $nomvar = 'variable';
  8.  
  9. $variable; //appel à $variable : classique
  10. ${'variable'}; //acces à la variable de nom "variable" : $variable
  11. ${$nomvar}; //acces à la variable de nom $nomvar donc "variable"
  12. $$nomvar; //pareil, mais ne peut pas accéder à des variables dont les noms sont spéciaux

Reply

Marsh Posté le 10-01-2009 à 11:27:05    

Hmm... comme a dit FlorentG, les tableaux c'est fait pour ça, ce serait nettement moins crade amha.  [:petrus75]


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

Marsh Posté le 10-01-2009 à 11:27:05   

Reply

Marsh Posté le 10-01-2009 à 11:34:11    

+1 pour les tableaux
 

Code :
  1. <form>
  2.  <input type="text" name="array[1]" />
  3.  ...
  4.  <input type="text" name="array[n]" />
  5.  <submit />
  6. </form>


Code :
  1. <?php
  2. $array = isset($_REQUEST['array']) ? $_REQUEST['array'] : array();
  3. foreach($array as $v)
  4. {
  5.  echo $v.'<br />';
  6. }
  7. ?>


---------------
http://www.gabouel.com
Reply

Marsh Posté le 10-01-2009 à 12:49:25    

sielfried a écrit :

Hmm... comme a dit FlorentG, les tableaux c'est fait pour ça, ce serait nettement moins crade amha.  [:petrus75]


oui, c'est vrai, c'est pour çà que je lui explique les tableaux et variables dynamiques. [:petrus75]

Reply

Sujets relatifs:

Leave a Replay

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