[RESOLU] Calcul note moyenne Php sur page .tpl (Besoin d'aide)

Eléphanteau du PHP | 20 Messages

13 janv. 2016, 03:05

Bonjour, j'ai un petit problème sur mon site, je souhaiterai faire la moyenne de deux attributs (pour l'instant deux mais j'en ai d'autres à ajouter si ça marche) sur une page produit opencart, mais il semble que cela ne soit pas si simple pour l'afficher directement sur la page. Je ne sais pas si je pourrais calculer la moyenne avec ces éléments en php. Si vous avez des idées je suis preneur, je ne trouve pas de solution.

Code : Tout sélectionner

<?php //Note moyenne presse et public <?php if ($attribute_groups) { ?> <?php foreach ($attribute_groups as $attribute_group) { ?> <?php foreach ($attribute_group['attribute'] as $attribute) { ?> <?php if ($attribute_group['name'] == 'Notation Presse') { ?> $note1=<?php echo substr($attribute['text'], 0, -4); ?>; $ref1=<?php echo substr($attribute['text'], -3); ?>; <?php } ?> <?php } ?> <?php } ?> <?php } ?> <?php if ($attribute_groups) { ?> <?php foreach ($attribute_groups as $attribute_group) { ?> <?php foreach ($attribute_group['attribute'] as $attribute) { ?> <?php if ($attribute_group['name'] == 'Notation Public') { ?> $note2=<?php echo substr($attribute['text'], 0, -4); ?>; $ref2=<?php echo substr($attribute['text'], -3); ?>; <?php } ?> <?php } ?> <?php } ?> <?php } ?> //Moyenne des 2 en pourcentage $moyenne=(+$note1+$note2)*100/(+$ref1+$ref2); //Resultat note moyenne echo $moyenne; ?>
Sans surprise j'ai un message d'erreur, si quelqu'un peut m'aider je suis vraiment nul et je comprend rien à tout ça ! :(

Mammouth du PHP | 1967 Messages

13 janv. 2016, 08:38

hello,

Quelle message d'erreur ??

$noteX et $refX sont défini en dehors des tag <?php et ?> donc surement pas pris en compte. défini ces variables dans ton php, calcul ta moyenne et affiche la avec echo

et ne ferme pas tes balises php si ce n'est pas nécessaire
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 20 Messages

13 janv. 2016, 21:43

Bonsoir,

merci beaucoup pour ta réponse. En fait, je suis vraiment débutant - - en php, et j'aurai besoin de voir si quelqu'un pourrait m'aider à condenser tout ça en un code qui fonctionne. Si tu as une idée je suis preneur et je ferai le test :D La pour l'instant je suis en stand by à cause de ce truc :(

Code : Tout sélectionner

Parse error: syntax error, unexpected '<' in /httpdocs/catalog/view/theme/default/template/product/product.tpl on line 699

Mammouth du PHP | 1967 Messages

13 janv. 2016, 23:35

Code : Tout sélectionner

<?php //Note moyenne presse et public if ($attribute_groups) { foreach ($attribute_groups as $attribute_group) { foreach ($attribute_group['attribute'] as $attribute) { if ($attribute_group['name'] == 'Notation Presse') { $note1= substr($attribute['text'], 0, -4); $ref1= substr($attribute['text'], -3); echo $note1;echo $ref1; } if ($attribute_group['name'] == 'Notation Public') { $note2= substr($attribute['text'], 0, -4); $ref2= substr($attribute['text'], -3); echo $note2;echo $ref2; }}}} //Moyenne des 2 en pourcentage $moyenne=($note1+$note2)*100/($ref1+$ref2); //Resultat note moyenne echo $moyenne; ?>
Il te faut comprendre le principe des tag <?php et ?>
Il servent a encadrer un script php qui est exécuté coté serveur, donc avant d'être envoyé au navigateur.
Il ne peuvent pas être imbriqué.

Essaie le code ci dessus, tu devrais voir les 5 valeur qui s'affiche les unes après les autres sans autres mise en page mais c'est un début
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 20 Messages

14 janv. 2016, 01:07

Je t'aime mdr t'es trop fort tu me sauves ! :)
Si je pouvais choisir t'aurais un prix nobel ! =D>

*j'ai trouvé une astuce pour masquer tout ça et afficher que le résultat ci-dessous:

Code : Tout sélectionner

<div style="display:none"> <?php //Note moyenne presse et public et autre multipliable autant de fois que necessaire if ($attribute_groups) { foreach ($attribute_groups as $attribute_group) { foreach ($attribute_group['attribute'] as $attribute) { if ($attribute_group['name'] == 'Notation Presse') { $note1 = substr($attribute['text'], 0, -4); $ref1 = substr($attribute['text'], -3); echo $note1;echo $ref1; } if ($attribute_group['name'] == 'Notation Public') { $note2 = substr($attribute['text'], 0, -4); $ref2 = substr($attribute['text'], -3); echo $note2;echo $ref2; } if ($attribute_group['name'] == 'Notation Autre') { $note3 = substr($attribute['text'], 0, -4); $ref3 = substr($attribute['text'], -3); echo $note3;echo $ref3; } }}} //Moyenne des avis en pourcentage $moyenne=(+$note1+$note2+$note3)*100/(+$ref1+$ref2+$ref3); //Resultat note moyenne echo $moyenne; ?></div> <h1>Ce produit obtient une note moyenne de <?php echo substr($moyenne, 0, 5); ?> %*</h1></br> * Presse, public, notation autre
PS: Attention pour ceux qui font un copier coller il faut changer (substr($attribute['text'], 0, -4)) en fonction de vos attributs car j'enregistre mes notes sous la forme: 80/100 ou 17/20. (en laissant un espace après le 0 du 20)

Voilà et ça marche, de quoi faire des moyennes d'attributs sur des pages produit opencart. Je pense que tu viens d'aider beaucoup de noobs comme moi qui chercheront à le faire aussi et qui tomberont sur ce sujet :D

Mammouth du PHP | 1967 Messages

14 janv. 2016, 08:38

retire les instruction echo plutot que de mettre une div dsiplay none
ca aura le même effet
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 20 Messages

14 janv. 2016, 10:53

Merci beaucoup, en fait c'est pour éviter d'afficher les erreurs si il manque une note sinon le calcul de moyenne fait apparaitre une erreur en cas de non présence d'un attribut.