Interpréter une équation avec des variables dynamiques

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 : Interpréter une équation avec des variables dynamiques

Re: Interpréter une équation avec des variables dynamiques

par VaN » 03 sept. 2010, 09:14

super, ça marche. merci beaucoup.

Re: Interpréter une équation avec des variables dynamiques

par stealth35 » 03 sept. 2010, 00:45

tu fais un double echo la puisque y'en a 1 dans le eval

fais plutôt comme ca
function get_part_variable($config)
{
    $equation = $config->get_equation();
    $equation = str_replace(array("%RESULTATS%", "%OBJECTIFS%"), array($this->user_resultats, $this->user_objectifs), $equation) ;
               
    eval('$out = ' . $equation . ';');
    return $out;
}
et met tes public/private sur tes classes :wink:

Re: Interpréter une équation avec des variables dynamiques

par VaN » 03 sept. 2010, 00:34

eval attend du php derrière donc faut mettre le ; a la fin, eval tout seul dans ton cas fera pas grand chose, donc faut mettre un echo dans le coin
si l’équation est toujours la même seul les valeur change, tu pourrai même mettre direct le résultat en mysql
Ok, ça marche mieux, j'ai bien le résultat qui s'affiche, mais pas où il devrait.

J'ai le tableau suivant :
echo "<table border=\"1\" cellpadding=\"5\">" . "\n";
	echo "<thead>" . "\n";
	echo "<tr>" . "\n";
	echo "<th>#</th>" . "\n";
	echo "<th>Prénom</th>" . "\n";
	echo "<th>Salaire</th>" . "\n";
	echo "<th>Résultats</th>" . "\n";
	echo "<th>Objectifs</th>" . "\n";
	echo "<th>Part variable</th>" . "\n";
	echo "<th>Actions</th>" . "\n";
	echo "</tr>" . "\n";
	echo "</thead>" . "\n";
	echo "<tbody>" . "\n";
	foreach($employes as $employe) {
		echo "<tr>" . "\n";
		echo "<td>".$employe->get_id()."</td>" . "\n";
		echo "<td>".$employe->get_prenom()."</td>" . "\n";
		echo "<td>".$employe->get_salaire()."</td>" . "\n";
		echo "<td>".$employe->get_resultats()."</td>" . "\n";
		echo "<td>".$employe->get_objectifs()."</td>" . "\n";
		echo "<td>".$employe->get_part_variable($config)."</td>" . "\n";
		echo "<td><a href=\"edit.php?user_id=".$employe->get_id()."\">modifier</a> - <a href=\"index.php?action=delete_user&user_id=".$employe->get_id()."\">supprimer</a></td>" . "\n";
		echo "</tr>" . "\n";
	}
	echo "</tbody>" . "\n";
	echo "</table>" . "\n";
et ma fonction get_part_variable() : (6e td du tableau)
function get_part_variable($config) {
		$equation = $config->get_equation();
		$equation = str_replace("%RESULTATS%", $this->user_resultats, $equation);
		$equation = str_replace("%OBJECTIFS%", $this->user_objectifs, $equation);
		
		eval("echo ".$equation.";");
	}
et voilà le code source généré :
<table border="1" cellpadding="5">
<thead>
<tr>
<th>#</th>
<th>Prénom</th>
<th>Salaire</th>
<th>Résultats</th>
<th>Objectifs</th>
<th>Part variable</th>
<th>Actions</th>

</tr>
</thead>
<tbody>
<tr>
<td>2</td>
<td>David</td>
<td>45000</td>
<td>55000</td>
<td>50000</td>
500<td></td>
<td><a href="edit.php?user_id=2">modifier</a> - <a href="index.php?action=delete_user&user_id=2">supprimer</a></td>

</tr>
</tbody>
</table>
Etrangement, le 6e <td> se place après la valeur, ce qui fait que ma valeur s'affiche en dehors du tableau. A quoi est-ce du ?

Et pour répondre à ta question, hélas non, l'équation peut être amené à changer, c'est pour cela que je la stocke en base de données.

Re: Interpréter une équation avec des variables dynamiques

par stealth35 » 02 sept. 2010, 20:02

$equation = $config->get_equation();
		$equation = str_replace("%RESULTATS%", $this->user_resultats, $equation);
		$equation = str_replace("%OBJECTIFS%", $this->user_objectifs, $equation);
		
		eval($equation);
me donne
Parse error: syntax error, unexpected $end in D:\www\Projects\OOP\project_4\class.user.php(45) : eval()'d code on line 1
Qu'entends par faire autrement ?

C'est une équation que je dois stocker en base de données, et dont je dois remplacer les variables par des valeurs, en fonction de l'utilisateur affiché.
Existe t-il un autre moyen de faire ce que je souhaite ?
eval attend du php derrière donc faut mettre le ; a la fin, eval tout seul dans ton cas fera pas grand chose, donc faut mettre un echo dans le coin
si l’équation est toujours la même seul les valeur change, tu pourrai même mettre direct le résultat en mysql

Re: Interpréter une équation avec des variables dynamiques

par VaN » 02 sept. 2010, 19:45

$equation = $config->get_equation();
		$equation = str_replace("%RESULTATS%", $this->user_resultats, $equation);
		$equation = str_replace("%OBJECTIFS%", $this->user_objectifs, $equation);
		
		eval($equation);
me donne
Parse error: syntax error, unexpected $end in D:\www\Projects\OOP\project_4\class.user.php(45) : eval()'d code on line 1
Qu'entends par faire autrement ?

C'est une équation que je dois stocker en base de données, et dont je dois remplacer les variables par des valeurs, en fonction de l'utilisateur affiché.
Existe t-il un autre moyen de faire ce que je souhaite ?

Re: Interpréter une équation avec des variables dynamiques

par stealth35 » 02 sept. 2010, 19:14

fais un eval, mais t'as pas moyen de faire autrement ?

Interpréter une équation avec des variables dynamiques

par VaN » 02 sept. 2010, 19:12

Bonjour,

En base de données, je stocke l'équation suivante : (%RESULTATS% - %OBJECTIFS%) / 10

Et dans une classe, je récupère cette équation, et je remplace les 2 variables par leurs valeurs :
function get_part_variable($config) {
		$equation = $config->get_equation();
		$equation = str_replace("%RESULTATS%", $this->user_resultats, $equation);
		$equation = str_replace("%OBJECTIFS%", $this->user_objectifs, $equation);
		
		echo $equation;
	}
Le problème, c'est que lors cela m'affiche
(55000 - 50000) / 10
au lieu de faire le calcul. Que dois-je faire pour que le calcul se fasse ?