erreur de calcul

Par sirine, il y a 11 ans


Bonsoir,svp j'ai une formule à calculer et je suis sur d'elle mais le résultats est toujours fausse je c pas ou est le probleme exactement.
voila la formule:$score=( ($coef1$p['moy1'])+($coef2$p['moy2'])+ ($coef3$p['moy3'])+ ($coefbac$moybac)-(2$nbratt) )(1-(0.1*$nbred));
exemple: si coef1=1.5 coef2=2 coef3=1 coefbac=1 nbratt=2 nbred=0 moy1=10 moy2=10 moy3=11 et moybac=14
mon code me donne comme résultat=54 par contre c'est bien 56,
avec les coef sélectionner de la base et les informations aussi.
le résultat manque toujours 2. svp pouvez vous m'aider?

14 réponses

skp, il y a 11 ans

Bonsoir, il ne manque pas quelque chose entre tes 2 grosses parenthèses ? et aussi entre "0.1$nbred" ?

sirine, il y a 11 ans

$score=( ($coef1$p['moy1'])+($coef2$p['moy2'])+ ($coef3$p['moy3'])+ ($coefbac$moybac)-(2$nbratt) ) (1-(0.1 * $nbred));
faute de frappe mais c'est ce que j'ai écrit dans mon code

skp, il y a 11 ans

As-tu essayé d'afficher les valeurs avant le calcul et vérifier que c'est bien les bonnes valeurs ?

sirine, il y a 11 ans

justement je sais pas comment je peux les afficher pour les vérifier pouvez vous me dire comment svp?

skp, il y a 11 ans

Par exemple,

var_dump($p, $coef1, $coef2, $coef3, $coefbac, $moybac, $nbratt, $nbred);

Tu peux aussi faire des simples "echo"

sirine, il y a 11 ans

Et ou ils seront m'afficher?

skp, il y a 11 ans

Sur la page en question

sirine, il y a 11 ans

il m'affiche rien,le score s'ajoute directement à la base sans etre afficher

skp, il y a 11 ans

Tu peux essayer :

var_dump($p, $coef1, $coef2, $coef3, $coefbac, $moybac, $nbratt, $nbred); $score=( ($coef1*$p['moy1'])+($coef2*$p['moy2'])+ ($coef3*$p['moy3'])+ ($coefbac*$moybac)-(2*$nbratt) ) * (1-(0.1 * $nbred)); exit();
sirine, il y a 11 ans

meme résultat :(

skp, il y a 11 ans

Si le "exit()" ne fonctionne pas ce que ton code ne passe pas par la.

sirine, il y a 11 ans

j'ai pas compris

1ud0v1c, il y a 11 ans

skp, te dis seulement que si ton exit() ne fait pas le travail d'arrêter le script juste après l'affichage, c'est surement car tu ne dois pas rentrer dans ta boucle (?), où tu effectues ton calcul ! Peut-être nous mettre plus de code, on sera mieux en mesure de t'aider !

sirine, il y a 11 ans

voila mon code, meme je le répete avec un autre choix de master (mpRITEL) avec des différents coeff et de différent formule j'obtient la meme résultat (54) :(
$choixma="select from candexttech";
$obj2=$c->query ($choixma);
if ($obj2->rowCount()==0)
return "impo " ; else { $row=$obj2->fetch(PDO ::FETCH_ASSOC); $choixma= $row["choix"];}
if ($choixma=='mpRITEL') {
$coef1="select
from coef_ritel ";
$obj2=$c->query($coef1); if ($obj2->rowCount()==0)
return "impo " ; else { $row=$obj2->fetch(PDO ::FETCH_ASSOC); $coef1= $row["coef_moy_1a"];}

$coef2="select * from coef_ritel ";
$obj2=$c->query($coef2); if ($obj2->rowCount()==0)
return "impo " ;else { $row=$obj2->fetch(PDO ::FETCH_ASSOC); $coef2= $row["coef_moy_2a"];}

$coef3="select * from coef_ritel ";
$obj2=$c->query($coef3); if ($obj2->rowCount()==0)
return "impo " ;else { $row=$obj2->fetch(PDO ::FETCH_ASSOC); $coef3= $row["coef_moy_3a"];}

$moybac="select * from candexttech ";
$obj2=$c->query($moybac); if ($obj2->rowCount()==0)
return "impo " ; else { $row=$obj2->fetch(PDO ::FETCH_ASSOC); $moybac= $row["moy_b"];}

$coefbac="select * from coef_ritel ";
$obj2=$c->query($coefbac); if ($obj2->rowCount()==0)
return "impo " ;else { $row=$obj2->fetch(PDO ::FETCH_ASSOC); $coefbac= $row["coef_bac"];}

$nbratt=$p['ratt1']+$p['ratt2']+$p['ratt3'];
$nbred=$p['redoub1']+$p['redoub2']+$p['redoub3'];

$score=( ($coef1$p['moy1'])+($coef2$p['moy2'])+ ($coef3$p['moy3'])+ ($coefbac$moybac)-(2$nbratt) ) (1-(0.1 * $nbred));
var_dump($p, $coef1, $coef2, $coef3, $coefbac, $moybac, $nbratt, $nbred);
$tech="update candexttech SET score= '$score' where id_tech_ext='".$_SESSION["id_can"]."'" ;
if($c->query($tech)) {return "score ajoute avec succes";}else return "impossible score ";
}