Variable de variable

cs_kicest Messages postés 4 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 15 décembre 2005 - 11 déc. 2005 à 20:14
cs_kicest Messages postés 4 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 15 décembre 2005 - 15 déc. 2005 à 00:20
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

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 déc. 2005 à 10:06
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".
0
cs_f6xara Messages postés 68 Date d'inscription samedi 1 novembre 2003 Statut Membre Dernière intervention 6 février 2008
13 déc. 2005 à 17:37
Pour créé des variables tu peux faire comme ca sinon :
$$mavar (sera le contenu de la variable $mavar)
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
13 déc. 2005 à 20:05
"$$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 !
0
cs_kicest Messages postés 4 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 15 décembre 2005
14 déc. 2005 à 23:22
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>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_kicest Messages postés 4 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 15 décembre 2005
15 déc. 2005 à 00:19
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.
0
cs_kicest Messages postés 4 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 15 décembre 2005
15 déc. 2005 à 00:20
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.
0
Rejoignez-nous