Variable de variable

Signaler
Messages postés
4
Date d'inscription
vendredi 25 novembre 2005
Statut
Membre
Dernière intervention
15 décembre 2005
-
Messages postés
4
Date d'inscription
vendredi 25 novembre 2005
Statut
Membre
Dernière intervention
15 décembre 2005
-
Bonjour,

voila je débute en PHP.

J'ai fait un formulaire, qui affiche en checkbox les valeurs d'une colonne d'une table (Colonne Libelle). La valeur des checkbox est 'ok'

Lors de l'envoi du Form, je veux verifier si la case a été cochée ou non, malheureusement je n'arrive pas à coder le $_GET

Voici un peu de detail :

/* Recuperation des valeurs dans BDD */

while ..... Parcours du resultat SQL ....

Je stocke la valeur dans $Sect
$Sect=$line['Libelle'];

/* Exemple si Libelle = LIBELLE_UN
Mon formulaire a donc une case à cocher nommé LIBELLE_UN avec value='ok'
Il faut donc que je récupère $_GET['LIBELLE_UN']
Et c est cela que je n'arrive pas à faire !!*/

/*J'ai essayé :*/

$Form=${'_GET[\''.$Sect.'\']'};
$Form=${'_GET['.$Sect.']'};
$Form=$_GET['$Sect'];
$Form=$_GET['.$Sect.'];


$Un='_GET[\'';
$Deux='\']';
$Form=${$Un.$Sect.$Deux};

/*Comme cela c'est étrange je récupère : LIBELLE_UN et non ok ...*/

Pouvez-vous m'aider ?

Merci par avance.

6 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
24
Hello,

tu devrais plutôt montrer comment tu as codé ton formulaire.
Parce que à mon avis, tu te plantes à ce niveau.

Sinon, si je comprends ton principe, ce serait $_GET[$Sect].

Encore faut-il :
- avoir passé $Sect avec le reste du formulaire...
- que ton formulaire soit bien en méthode "get" et non pas "post".
Messages postés
68
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
6 février 2008

Pour créé des variables tu peux faire comme ca sinon :
$$mavar (sera le contenu de la variable $mavar)
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
"$$mavar (sera le contenu de la variable $mavar)"
Mal dit :

$$mavar; sera la variable du contenu de la variable $mavar;
C'est du charabia, mais jpeux pas faire mieux :p
Ah si :

$test = 'meuh';
$test2 = 'test';
echo $$test2; // Affichera 'meuh'

Voila !
Messages postés
4
Date d'inscription
vendredi 25 novembre 2005
Statut
Membre
Dernière intervention
15 décembre 2005

Merci de vos réponses.

Je débute certes! Mais je sais quand même faire la différence entre POST et GET ...

Je pense avoir un début de réponse les variables de type GLOBALES ne peuvent être dynamiques (Variables de variables), enfin c'est ce que j'en ai compris lors de la lecture d'un tuto.

En fait imaginons qu'une variable $_POST['mavar'] existe, alors il s'agit d'exprimer mavar par une variable .... Ce qui donne $_POST['$unevar'] bien sur $unevar='mavar'

Voila ce que je n'arrive pas à faire ... voici un bout du form comme réclamé par malalam :

session_start(); // On relaye la session
/* Verification du bon cheminement du surfer */

<?php
if ( isset($_POST['Submit'])) {
// on fait Selection des libelle dans la base de données
$SelSection="SELECT DISTINCT(Libelle) FROM section WHERE Libelle != 'Toutes' ORDER BY 1 ASC";
mysql_select_db($database, $link);
$result = mysql_query($SelSection, $link) or die(mysql_error());
while ($line = @mysql_fetch_array($result)) {
$Sect=$line['Libelle'];
$Un='_POST[\'';
$Deux='\']';
/*$Form=$$_POST['$Sect'];*/
$Form=${$Un.$Sect.$Deux};
echo "$Form#";
if (isset(${$Un.$Sect.$Deux})) {echo "Selectionne : $Sect
"; }
if ($_POST['$Sect'] == '$Sect' ) { $SECTIONS="$SECTIONS ".$Sect."#--#"; }
}
echo "$SECTIONS
";
exit;
}
?>
<html>
<head>
<title>******</title>
<link href="<?php echo $_SESSION['StyleLink'];?>" rel="stylesheet" type="text/css">
</head>

<form action="<?php echo $PHP_SELF;?>" method="POST" name="add">

- : : : ****** : : : -


<tr>
<td>Restriction de catégorie pour les news</td>
<td>Cochez les sections autorisée</td>
<?php
mysql_select_db($database, $link);
$SelSection="SELECT DISTINCT(Libelle) FROM section WHERE Libelle != 'Toutes' ORDER BY 1 ASC";
$result = mysql_query($SelSection, $link) or die(mysql_error());
while ($line = @mysql_fetch_array($result)) {
echo "<tr><td> </td><td>" .$line['Libelle']. "</td></tr>";
}
?>
<tr>
<td height="50" colspan="2">



</td>
</tr>
</table>
</form>
[accueil.php Retour accueil]


</html>
Messages postés
4
Date d'inscription
vendredi 25 novembre 2005
Statut
Membre
Dernière intervention
15 décembre 2005

Bonsoir ,

je m'en sors avec :

extract($_POST);
$Sect=$line['Libelle'];
$chaine = str_replace(" ", "_",${Sect});
$chaine = str_replace(".", "_",${chaine});
if ( ${$chaine} == "$Sect" ) { $SECTIONS="$SECTIONS ".$Sect."#--#"; }
unset(${$chaine});

En fait il y avait un probleme à la base puisque mes libelles comportaient des "expaces" ou des "points" ce qui est interdit comme NOM de variables.

Il y a surement plus "propre", c'est pour cela que je laisse mon sujet ouvert.

Merci.
Messages postés
4
Date d'inscription
vendredi 25 novembre 2005
Statut
Membre
Dernière intervention
15 décembre 2005

Comme tout le monde l'a remarqué depuis le premier post j'ai modifié le formulaire de la methode GET par la methode POST.

Cdt.