Page 1 sur 1

Problème de variable

Posté : 28 juin 2009, 11:10
par Vincent91
Bonjour! J'ai un problème pour la création d'une variable:
Je voudrais créer une variable dont le nom pourrais varier en fonction du $id. C'est à dire: $name$id. En gros si $id vaut 1 ça ferait $name1. Le seul problème, c'est que le $name est directement converti en sa valeur, c'est à dire rien du tout. Donc avec $name$id, je n'obtient que le $id. J'ai essayé de remplacer le $name par $name mais la variable de fin n'est du coup plus considéré comme une variable et donc ça affiche sur ma page $name1 alors que j'aurais voulu que ça affiche la valeur de $name1. Bref je suis pour l'instant dans l'impasse je ne trouve pour l'instant aucune solution :(.
Merci pour vos futures réponses!

Posté : 28 juin 2009, 11:20
par dunbar
Salut,

Montre nous ton code stp, c'est plus facile pour t'aider.

Posté : 28 juin 2009, 11:23
par momox
Et si tu utilisais un tableau ?
$name[$id]

Posté : 28 juin 2009, 11:35
par Vincent91
Voilà le code:
<?php $id=($_GET['id']) ?>

<?php if (($_GET['id'])=='') {$idname="...";} 
else {$idname="$name$id" ;} ?>

<?php echo "<table border=\"2\" widht=\"753\">
<tr>
<td>
<a title=\"Nom\">$idname</a>
</td>
</tr>
</table>" ?>

Posté : 28 juin 2009, 11:58
par Ryle
Utilise des accolades dans le nom de ta variable, cela te permet de la construire comme une chaine :
$id = 1;
${'name' . $id} = 'toto';
echo $name1; // affiche toto

Posté : 28 juin 2009, 19:46
par Vincent91
Ah merci Ryle ça marche :D.

Posté : 28 juin 2009, 22:20
par enneite
ah oui ça c'est une fonctionnalité que je ne connaissais pas et qui est vraiment interessante

Posté : 28 juin 2009, 22:37
par zeus
Effectivement, c'est une possibilité du langage, mais après, c'est pas optimal.

Je pense que le temps que PHP analyse le nom de la variable, puis ailles chercher son contenu, ce doit être plus lent qu'un tableau.
De plus, ce que tu cherches à faire, c'est typiquement l'utilisation d'un tableau ;)

Re: Problème de variable

Posté : 14 août 2009, 12:19
par enneite
Bah j'ai trouvé une utilité à cette fonctionalité, après, j'aurais pu faire autrement.

J'ai deux classe
la classe parent et la classe enfant

pour chaque classe, les properties correspondent aux colonnes d'une table
pour en fant : id_enfant,id_parent, mode,prop1,prop2,etc..
pour parent : id_parent, mode,propbis1,propbis2 ...


Je souhaite affecter à la classe enfant les propriétés de son parent.
function affecte_properties_parent()
{
parent::__construct($id_parent);
}
C'est la première solution, mais là je me dis pour peu que les colonnes aient des noms qui correspondent et qui ont des valeurs que ne signifient pas la meme chose, y a un problème. Typiquement la property "mode" va recevoir comme valeur celle de la classe parente, ce qui m'ennuie car, les modes ne servent pas à la meme chose pour chaque classe.

Du coup j'ai la solution 2
function affecte_properties_parent()
{
$resultat=mysql_query("select * from parent where id_parent=$this->id_parent");
$recapitulatif=mysql_fetrch_assoc($resultat);
foreach($recapitulatif as $id=>$valeur)
{
if(!(isset($this->$id))
          $this->$id=$valeur;
}
mysql_free_result($resultat);
}
là c'est mieux, si la property est déjà définie alors on ne prend pas celle de la classe parente.
Oui mais en fait j'ai besoin des deux modes par exemple, la ca ne va plus non plus car je n'aurait pas le mode de la classe parent
function affecte_properties_parent()
{
$resultat=mysql_query("select * from parent where id_parent=$this->id_parent");
$recapitulatif=mysql_fetrch_assoc($resultat);
foreach($recapitulatif as $id=>$valeur)
{
if(!(isset($this->{$id.'_parent'}))
          $this->{$id.'_parent'} = $valeur;


}
mysql_free_result($resultat);
}
La du coup je peux utiliser les deux modes
Grace à $enfant->mode et $enfant->mode_parent

Re: Problème de variable

Posté : 14 août 2009, 15:32
par megapoulpe
Opérateur de concaténation en PHP : .