Php : la fonction eval()... - Programmation
Marsh Posté le 21-02-2002 à 14:11:51
pourkoi tu passes pas plutôt tes variables sous forme de tableau ?
Marsh Posté le 21-02-2002 à 14:14:34
Bah... je débute...
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?
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]
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);
}
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...
}
--------------------------
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...
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!
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 ..
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]
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