Problème de variable

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème de variable

Re: Problème de variable

par megapoulpe » 14 août 2009, 15:32

Opérateur de concaténation en PHP : .

Re: Problème de variable

par enneite » 14 août 2009, 12:19

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

par zeus » 28 juin 2009, 22:37

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 ;)

par enneite » 28 juin 2009, 22:20

ah oui ça c'est une fonctionnalité que je ne connaissais pas et qui est vraiment interessante

par Vincent91 » 28 juin 2009, 19:46

Ah merci Ryle ça marche :D.

par Ryle » 28 juin 2009, 11:58

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

par Vincent91 » 28 juin 2009, 11:35

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>" ?>

par momox » 28 juin 2009, 11:23

Et si tu utilisais un tableau ?
$name[$id]

par dunbar » 28 juin 2009, 11:20

Salut,

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

Problème de variable

par Vincent91 » 28 juin 2009, 11:10

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!