Php : la fonction eval()...

Php : la fonction eval()... - Programmation

Marsh Posté le 21-02-2002 à 14:01:48    

Salut,
 
J'ai une fonction dotée d'un grand nombre de paramètre.
de la forme :
--------------------
TraitementCra($OP1,$OP2,$OP3,$OP4,$OP5,$OP6,$OP7,$OP8,...) {
blabla }
--------------------
Je veux la construire avec une boucle "for", puis l'exécuter.
Comment faire?
 
Pour ce qui est de la construction, j'ai créé un string avec "for" qui vaut :
$str = "TraitementCra($OP1,$OP2,$OP3,$OP4,$OP5,$OP6,$OP7,$OP8,...) {
blabla }";
Donc jusque là, c bon.
 
Mais ensuite? Comment exécuter cette fonction dans mon code?
J'ai voulu utiliser "eval()" mais apparemment, je n'y arrive pas...
 
Quelqu'un a des explications?
 
Merci  :hello:

Reply

Marsh Posté le 21-02-2002 à 14:01:48   

Reply

Marsh Posté le 21-02-2002 à 14:11:51    

pourkoi tu passes pas plutôt tes variables sous forme de tableau ?


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 21-02-2002 à 14:14:34    

Bah... je débute... :D  
 
En fait, j'ai 900 varaibles à passer dans ma fonction.
Je l'ai fait à la main (avec l'aide d'excel hein... ;) ) et ça marche très bien.
Maintenant, c vrai que j'aimerai bien faire ça proprement.
 
Je suis pas sûr que le tableau va changer grand chose : je vais tout de même devoir les définir 'à la main', non?

Reply

Marsh Posté le 21-02-2002 à 14:15:03    

En fait, mon message d'erreur actuel est :
-----
Parse error: parse error in c:\program files\easyphp\www\phpnuke1\html\Tmis\Formulaires\cracra.php(52) : eval()'d code on line 4
-----
 
avec apparemment un bug à la ligne suivante :
$str1 .= "{
...
\$fp_Cra = \$fopen(\"Tmis/Formulaires/Tmp/leCra_\".\$no
m.\".html\",\"w\" );
...
}";
--------
J'ai essayé en mettant de antislaches ou non devant les $, mais ça change rien...

 

[jfdsdjhfuetppo]--Message édité par Thocan--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 21-02-2002 à 14:20:48    

je pige toujours pas ce que tu veux faire...
 
explique tout bien (que fait la fonction,qu'y a t il dans les $OP etc..)
 
sinon à vue de nez soit un tableau, soit une fonction récursive
 
Function Op($OP) {
  global $OP;
  traitement ...;
  $OP++;
  Op($OP);
}


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 21-02-2002 à 14:31:11    

En fait, j'ai un formulaire avec... 900 checkbox !
Vi, quand même!  ;)  
Pour les besoins du site, je dois enregistrer le résultat de ce formulaire dans un fichier htm.
Il faut donc que je passe toutes les variables dans une fonction qui va écrire ce fichier htm.
 
Tout marche si je définis ma fonction manuellement.
Mais j'aimerai, pour plus de lisibilité, construire ma fonction grâce à des boucles "for" imbriquées pour obtenir grosso modo :
--------------------------
function TraitementCra($P1AM1,$P1AM2,$P1AM3,...$P1AM31,P2AM1,P2AM2,P2AM3,...,...,P14AM31) {
//le reste de ma fonction avec des \", des $ et tout ce qui va bien...  :wahoo:  
}
--------------------------
Et ensuite exécuter cette fonction :
--------------------------
TraitementCra();
--------------------------
Voilà...
Le problème c'est que je me retrouve avec le message d'erreur cité plus haut et je ne vois pas vraiment d'où vient le bug... :cry:  
 
 :sweat:  :)

Reply

Marsh Posté le 21-02-2002 à 15:49:50    

Dans ma fonction, j'ai mes paramètres $P1AM1 etc...
Comment faire pour que, lors de l'eval, il ne me les exécute pas? (ie qu'il ne me mettent pas la valeur associée).
 
J'ai essayé de mettre \$P1AM1... mais ça n'a pas l'air de fonctionner!

Reply

Marsh Posté le 21-02-2002 à 17:01:41    

personne?  :??:  :sweat:  :cry:  
 
 :hello:

Reply

Marsh Posté le 21-02-2002 à 17:15:25    

à mon avis tu t'y prends pas par le bon bout
 
déjà ça serait vachement plus simple (et moins gourmant en ressources) de pas faire de fonction et de traiter tes variables en boucle une par une.
 
ensuite, en mettant <input type="checkbox" name="OP[]" value="..."> tu récupère les valeur dans le tableau OP[], y a plus qu'a le traiter avec une bête boucle style
 
.. ouverture du fichier ..
$i=0;
while (is_array($OP["$i"])) {
  $OP["$i"] = ....
  .. écriture du fichier HTML ..
  $i++;
}
.. fermeture du fichier ..


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 21-02-2002 à 17:51:27    

Ok, merci, je vais essayer ça...  :jap:

Reply

Marsh Posté le 21-02-2002 à 17:51:27   

Reply

Marsh Posté le 21-02-2002 à 20:54:15    

essayes comme ca :
 
for ($i=1;$i<=900;$i++)
{
   $tmp = "OP".$i;
   TraitementCra ($$tmp);
}

 

[jfdsdjhfuetppo]--Message édité par Yack--[/jfdsdjhfuetppo]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed