Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2698 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Pb variable dynamique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pb variable dynamique

n°1740275
babakill
Posté le 02-06-2008 à 14:55:11  profilanswer
 

Bonjour,
 
Je fais des tests pour utiliser les variables dynamiques mais je suis confronter au problème suivant :
 
$racine = simplexml_load_file("http://localhost/test.xml" );
$test = "racine->lien[1]->objet[0]->attribut[0]";
echo "<p>".$$test."</p>";                                                 // Ne marche Pas
echo "<p>".$racine->lien[1]->objet[0]->attribut[0]."</p>";     // Marche ( affiche la valeur concernée)
 
En fait j'ai une première page qui parse un fichier xml avec un formulaire afin de modifier la valeur des attributs du fichier parsé.
La page de réception des données du formulaire doit mettre a jour le xml, pour cela je re-parse l'ancien fichier xml afin d'affecter les nouvelles valeurs.
 
 
Merci d'avance,
 
Adrien


Message édité par babakill le 02-06-2008 à 14:56:37
mood
Publicité
Posté le 02-06-2008 à 14:55:11  profilanswer
 

n°1740289
sielfried
Posté le 02-06-2008 à 15:01:53  profilanswer
 

$racine->lien[1]->objet[0]->attribut[0] ?? [:autobot]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1740292
skeye
Posté le 02-06-2008 à 15:04:53  profilanswer
 

Je n'essaierai même pas de répondre avant d'avoir une explication acceptable justifiant l'utilisation de cette syntaxe immonde.


---------------
Can't buy what I want because it's free -
n°1740294
babakill
Posté le 02-06-2008 à 15:06:12  profilanswer
 

sielfried a écrit :

$racine->lien[1]->objet[0]->attribut[0] ?? [:autobot]


 
Oui dans mon exemple c'est la valeur que je veux afficher ! Mais je souhaiterais passer par une variable dynamique.

n°1740298
skeye
Posté le 02-06-2008 à 15:07:31  profilanswer
 

babakill a écrit :


 
Oui dans mon exemple c'est la valeur que je veux afficher ! Mais je souhaiterais passer par une variable dynamique.


 
pourquoi tu as besoin de ça?


---------------
Can't buy what I want because it's free -
n°1740300
babakill
Posté le 02-06-2008 à 15:08:31  profilanswer
 

Voici le xml que je parse :
 
<application id="E7D1E9C6482A05BA" responsable="abx">
<attribut name="Name">ALLOWIN</attribut>
<attribut name="Application Code">ALLOWIN</attribut>
<lien name="Org-Unit" type="Acteur">
<objet id="E7D1E880482A0128" name="ASOSS">
<attribut name="Ordre">1234</attribut>
</objet>
</lien>
<lien name="Processus" type="Processus">
<objet id="E7D1E880482A2222" name="Traitement1">
<attribut name="Ordre">3456</attribut>
</objet>
 
<objet id="E7D1E880482A3333" name="Traitement2">
<attribut name="Ordre">4567</attribut>
</objet>
</lien>
</application>
 
$racine->lien[1]->objet[0]->attribut[0] a donc la valeur 3456

n°1740303
skeye
Posté le 02-06-2008 à 15:09:09  profilanswer
 

oui enfin ça explique toujours pas pourquoi tu aurais besoin d'une variable dynamique, comme tu dis.


---------------
Can't buy what I want because it's free -
n°1740304
sielfried
Posté le 02-06-2008 à 15:09:15  profilanswer
 
n°1740310
anapajari
s/travail/glanding on hfr/gs;
Posté le 02-06-2008 à 15:14:14  profilanswer
 

Code :
  1. echo "<p>".(eval('return $'.$test.';'))."</p>";


les variables "dynamiques" marchent très mal avec les tableaux en php ( voir la doc )
 
Maintenant, comme dit plus haut ce genre de chose est une horreur absolue et un motif de flagellation au petit suisse.


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1740311
babakill
Posté le 02-06-2008 à 15:14:34  profilanswer
 

Je récupère les nouvelles valeurs dynamiquement, je connais pas leur nom a l'avance.
 
A la suite de mon formulaire, je récupère dans un boucle :  
 
racine->attribut[0] = ALLOWIN
 
racine->attribut[1] = ALLOWIN
 
racine->lien[0]->objet[0]->attribut[0] = 1234
 
racine->lien[1]->objet[0]->attribut[0] = 3456
 
racine->lien[1]->objet[1]->attribut[0] = 4567
 
J'aimerais pouvoir appliquer si il y a lieu les modifs, c'est pour cela que j'aimerais utiliser les variables dynamiques.
 

mood
Publicité
Posté le 02-06-2008 à 15:14:34  profilanswer
 

n°1740315
skeye
Posté le 02-06-2008 à 15:17:38  profilanswer
 

Bon, on avance. Il te reste plus qu'à nous expliquer pour quelle raison saugrenue tu ne connais pas le nom de tes variables et on pourra t'expliquer quoi utiliser à la place.


---------------
Can't buy what I want because it's free -
n°1740316
babakill
Posté le 02-06-2008 à 15:18:07  profilanswer
 

anapajari a écrit :

Code :
  1. echo "<p>".(eval('return $'.$test.';'))."</p>";


les variables "dynamiques" marchent très mal avec les tableaux en php ( voir la doc )
 
Maintenant, comme dit plus haut ce genre de chose est une horreur absolue et un motif de flagellation au petit suisse.


 
Ca marche ! Merci beaucoup !

n°1740318
skeye
Posté le 02-06-2008 à 15:19:38  profilanswer
 

anapajari a écrit :

Code :
  1. echo "<p>".(eval('return $'.$test.';'))."</p>";



Tu tiens vraiment à ce qu'il continue à écrire ce genre de code?[:delarue5]


---------------
Can't buy what I want because it's free -
n°1740321
babakill
Posté le 02-06-2008 à 15:22:15  profilanswer
 

skeye a écrit :

Bon, on avance. Il te reste plus qu'à nous expliquer pour quelle raison saugrenue tu ne connais pas le nom de tes variables et on pourra t'expliquer quoi utiliser à la place.


 
Je ne connais pas le nom de mes variables car les xml que je parse ont une structure variable, j'ai donc plus ou moins de variables et a chaque fois que je les récupère dans un  
 
foreach($_POST as $nom_var=>$value) {
...
}

n°1740323
skeye
Posté le 02-06-2008 à 15:24:11  profilanswer
 

babakill a écrit :

 

Je ne connais pas le nom de mes variables car les xml que je parse ont une structure variable


Et alors?[:pingouino]
Pour autant que je sache un xml peut être représenté sans aucune difficulté par un tableau ou un objet php...

Message cité 1 fois
Message édité par skeye le 02-06-2008 à 15:24:55

---------------
Can't buy what I want because it's free -
n°1740347
babakill
Posté le 02-06-2008 à 15:36:29  profilanswer
 

skeye a écrit :


Et alors?[:pingouino]
Pour autant que je sache un xml peut être représenté sans aucune difficulté par un tableau ou un objet php...


Oui mais je recois les nouvelles valeurs depuis un formulaire donc indépendement.
Pour m'y retrouver je génère des noms de variables implicite afin de m'y retrouver que je traite pour devenir :
 
racine->attribut[0], racine->attribut[1], racine->lien[0]->objet[0]->attribut[0] ...
 
maintenant j'aimerais affecter des nouvelles valeurs mais pas moyen de faire :
 
$test = "racine->lien[1]->objet[0]->attribut[0]";
$$test = "12345"
 
Mais je vois pas comment faire autrement ....
Le eval me permet l'affichage mais j'aimerais maintenant attribuer les nouvelles valeurs a mon xml.

n°1740359
babakill
Posté le 02-06-2008 à 15:40:31  profilanswer
 

code de mon formulaire :
 
<input type=text name='attribut/1\' value='ALLOWIN'>
<input type=text name='attribut/0\' value='ALLOWIN'>
<input type=text name='lien/0\->objet/0\->attribut/0\' value='1234'>
<input type=text name='lien/1\->objet/0\->attribut/0\' value='3456'>
.....
 
Je traite la reception :
 
// On ouvre le fichier
$racine = simplexml_load_file("http://localhost/test.xml" );
echo "<p>".$racine->asXml()."</p>";
foreach($_POST as $nom_var=>$value) {
 
 //Traitement des noms de variables
 $nom_var_modif = str_replace("/", "[", $nom_var);
 $nom_var_modif = str_replace("\\", "]", $nom_var_modif);
 //$nom_var_modif = str_replace("&", " ", $nom_var_modif);
 //
 $nom_var_modif = "racine->".$nom_var_modif;
 $nom_var_modif = trim($nom_var_modif);
 
 echo '<p>'.$nom_var_modif.' = '.$value.'</p>';
 
 //$$nom_var_modif = $value; // Voici maintenant ce que j'aimerais reussir a faire
}

n°1740371
anapajari
s/travail/glanding on hfr/gs;
Posté le 02-06-2008 à 15:47:53  profilanswer
 

skeye a écrit :

Tu tiens vraiment à ce qu'il continue à écrire ce genre de code?[:delarue5]


J'ai, il y a bien longtemps, abandonné tout espoir sur l'apprentissage des bonnes méthodes de programmation en php. Tout le monde lui explique que c'est pas une bonne idée, qu'en plus pour y arriver il faut utiliser des moyens détournés.

 

Si tout cela ne l'interpelle pas et qu'il choisit d'utiliser cet horreur c'est qu'on pouvait pas grand chose pour lui, alors autant qu'il utilise le eval [:spamafote]

 

edit:

babakill a écrit :

<input type=text name='attribut/1\' value='ALLOWIN'>
<input type=text name='attribut/0\' value='ALLOWIN'>
<input type=text name='lien/0\->objet/0\->attribut/0\' value='1234'>
<input type=text name='lien/1\->objet/0\->attribut/0\' value='3456'>


[:prozac]
tiens pour l'affectation tu peux utiliser:

Code :
  1. $test = "racine->lien[1]->objet[0]->attribut[0]";
  2. eval('$'.$test.' = 12345;');

Message cité 2 fois
Message édité par anapajari le 02-06-2008 à 15:50:42

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1740375
babakill
Posté le 02-06-2008 à 15:50:49  profilanswer
 

anapajari a écrit :


J'ai, il y a bien longtemps, abandonné tout espoir sur l'apprentissage des bonnes méthodes de programmation en php. Tout le monde lui explique que c'est pas une bonne idée, qu'en plus pour y arriver il faut utiliser des moyens détournés.
 
Si tout cela ne l'interpelle pas et qu'il choisit d'utiliser cet horreur c'est qu'on pouvait pas grand chose pour lui, alors autant qu'il utilise le eval [:spamafote]


 
Je suis bien entendu ouvert au bonnes méthodes mais pour l'instant je n'en vois pas de meilleur, alors ce genre de remarque me semble encore moins constructive !

n°1740380
babakill
Posté le 02-06-2008 à 15:54:09  profilanswer
 

anapajari a écrit :


J'ai, il y a bien longtemps, abandonné tout espoir sur l'apprentissage des bonnes méthodes de programmation en php. Tout le monde lui explique que c'est pas une bonne idée, qu'en plus pour y arriver il faut utiliser des moyens détournés.
 
Si tout cela ne l'interpelle pas et qu'il choisit d'utiliser cet horreur c'est qu'on pouvait pas grand chose pour lui, alors autant qu'il utilise le eval [:spamafote]
 
edit:


 

anapajari a écrit :


[:prozac]
tiens pour l'affectation tu peux utiliser:

Code :
  1. $test = "racine->lien[1]->objet[0]->attribut[0]";
  2. eval('$'.$test.' = 12345;');



 
Merci beaucoup !

n°1740387
flo850
moi je
Posté le 02-06-2008 à 16:14:11  profilanswer
 

babakill a écrit :


 
Je suis bien entendu ouvert au bonnes méthodes mais pour l'instant je n'en vois pas de meilleur, alors ce genre de remarque me semble encore moins constructive !


 
deja commencer par utiliser des tableaux directement dans les noms de variables
 
 
genre  
<input name="champ[249][]">
 
que tu vas récupérer dans $_POST['champ'][249]


---------------

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Pb variable dynamique

 

Sujets relatifs
Tableau avec année dynamiqueAssigner à une variable JS le contenu d'un champ
Récupération variable entre pages[Flash - Action Script] variable clickTag
Récuperer une variable dans Textbox d'un formviewVirtualhost sous domaine dynamique
[JAVA] [Résolu] Variable Calendar incrémentée dans une boucle[ActionScript] Problème de débutant avec une variable de fonction
[RESOLU] [VBA Excel] ajout dynamique de boutons dans une feuille excelProbleme Boucle "pour" en nombre variable
Plus de sujets relatifs à : Pb variable dynamique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR