Page 1 sur 1

comment additionner toutes les quantités

Posté : 31 août 2022, 09:17
par flexi2202
bonjour a tous
j'ai un bon de commande avec des articles qui ont une quantité de 1
d'autres articles qui ont une quantité de 10 ,20 ou 30

je souhaiterais lors d'une commande récupérer toutes ces quantités et les additionner

voici mon code qui ne fonctionnent pas

par exemple si je rentre dans ma commande 3 articles 77777 + 2 articles 88888 +5 articles 99999 + 1 article 2006 +1 article 3025 +8 articles 4005

le total doit être de 20

Code : Tout sélectionner

// je commence a decompresser commande pour recuperer les champs $datanom = $commande; $decodenom = json_decode($datanom); $mailData1 = ""; $mailData2 = ""; $mailData3 = ""; $mailData4 = ""; $counts = []; foreach ($decodenom as $curr_elementnom) { $fieldName = $curr_elementnom->nom; $fieldQty = $curr_elementnom->quantite; $fieldPrice = $curr_elementnom->prix; $fieldimg = $curr_elementnom->url; if ( $fieldQty != 0 ) { if ($fieldPrice != 0) { if ($fieldName == 77777) { $input1 = '<div style ="border:solid;"> <div style ="float: left;width: 50%;"> voici le nom</div > <div style =""> ' . $fieldName . '</div> <div style ="float: left;width: 50%;"> qanditée</div > <div style =""> ' . $fieldQty . '</div > </div><br><br><br>'; $mailData1 .= $input1; @$counts[$fieldName]++; } elseif ($fieldName == 88888) { $input2 = '<div style ="border:solid;"> <div style ="float: left;width: 50%;"> voici le nom</div > <div style =""> ' . $fieldName . '</div> <div style ="float: left;width: 50%;"> qanditée</div > <div style =""> ' . $fieldQty . '</div > </div><br><br><br>'; $mailData2 .= $input2; @$counts[$fieldName]++; } elseif ($fieldName == 99999) { $input3 = '<div style ="border:solid;"> <div style ="float: left;width: 50%;"> qanditée</div > <div style =""> ' . $fieldQty . '</div > <div style ="float: left;width: 50%;"> voici le nom</div > <div style =""> ' . $fieldName . '</div> </div><br><br><br>'; $mailData3 .= $input3; @$counts[$fieldName]++; } else { $input4 ='<div style ="border:solid;"> <div style ="float: left;width: 50%;"> qanditée</div > <div style =""> ' . $fieldQty . '</div > <div style ="float: left;width: 50%;"> voici le nom</div > <div style =""> ' . $fieldName . '</div> </div><br><br><br>'; $mailData4 .= $input4; @$counts['other']++; } } } }

Re: comment additionner toutes les quantités

Posté : 31 août 2022, 13:40
par Spols
initie une variable à 0 avant la boucle, rempli là dans ta boucle avec += et tu aurra ton total en fin de boucle

Re: comment additionner toutes les quantités

Posté : 31 août 2022, 16:34
par flexi2202
merci pour la réponse mais cela n'est pas si simple voici un extrait de json

Code : Tout sélectionner

[{"nom":0001,"prix":4.75,"quantite":"15"},{"nom":0002,"prix":4.75,"quantite":"5"},{"nom":003,"prix":4.75,"quantite":"8"},{"nom":111,"prix":77,"quantite":"3"},{"nom":222,"prix":79,"quantite":"4"},{"nom":333,"prix":92,"quantite":"5"}]

dans ce cas je souhaiterais avoir comme sortie

3 pour les 111

4 pour les 222

5 pour les 333

et 28 pour les autres

Re: comment additionner toutes les quantités

Posté : 31 août 2022, 18:54
par Spols
quelle est la règle qui dit que tel nom à sa somme et quelle nom s'additionne ?

tu peux remplacer ma proposition de variable par un tableaux avec le nom du produit en index, mais c'est à toi de définir les règles

Re: comment additionner toutes les quantités

Posté : 31 août 2022, 19:44
par flexi2202
avec ce code je parviens a récupérer les 111 , les 222 et les 333
Mais pour les autres j'ai un soucis je ne parviens pas a récupérer 28 pour les autres

Code : Tout sélectionner

$datanom = $commande; $decodenom = json_decode($datanom); $mailData1 = ""; $mailData2 = ""; $mailData3 = ""; $mailData4 = ""; $test = ""; $test1 = ""; $test2 = ""; $test3 = ""; $mailData = ""; $counts = []; foreach ($decodenom as $curr_elementnom) { $fieldName = $curr_elementnom->nom; $fieldQty = $curr_elementnom->quantite; $fieldPrice = $curr_elementnom->prix; $fieldimg = $curr_elementnom->url; if ( $fieldQty != 0 ) { if ($fieldPrice != 0) { if ($fieldName == 111) { $input1 = '<div style ="border:solid;"> <div style ="float: left;width: 50%;"> voici le nom</div > <div style =""> ' . $fieldName . '</div> <div style ="float: left;width: 50%;"> qanditée</div > <div style =""> ' . $fieldQty . '</div > </div><br><br><br>'; $test=$fieldQty; $mailData1 .= $input1; @$counts[$fieldName]++; } elseif ($fieldName == 222) { $input2 = '<div style ="border:solid;"> <div style ="float: left;width: 50%;"> voici le nom</div > <div style =""> ' . $fieldName . '</div> <div style ="float: left;width: 50%;"> qanditée</div > <div style =""> ' . $fieldQty . '</div > </div><br><br><br>'; $test1=$fieldQty; $mailData2 .= $input2; @$counts[$fieldName]++; } elseif ($fieldName == 333) { $input3 = '<div style ="border:solid;"> <div style ="float: left;width: 50%;"> qanditée</div > <div style =""> ' . $fieldQty . '</div > <div style ="float: left;width: 50%;"> voici le nom</div > <div style =""> ' . $fieldName . '</div> </div><br><br><br>'; $test2=$fieldQty; $mailData3 .= $input3; @$counts[$fieldName]++; } else { $input4 ='<div style ="border:solid;"> <div style ="float: left;width: 50%;"> qanditée</div > <div style =""> ' . $fieldQty . '</div > <div style ="float: left;width: 50%;"> voici le nom</div > <div style =""> ' . $fieldName . '</div> </div><br><br><br>'; $test3=$fieldQty; $mailData4 .= $input4; @$counts['other']++; } } } }

Re: comment additionner toutes les quantités

Posté : 31 août 2022, 20:42
par Spols
si ta quantité est un nombre, pourquoi l'initie tu en string ?

si tu as des nombres tu pourra les additionner

intval() te permet de retrouver un entier à partir d'un string

Code : Tout sélectionner

$datanom = $commande; $decodenom = json_decode($datanom); $mailData1 = ""; $mailData2 = ""; $mailData3 = ""; $mailData4 = ""; $test = 0; $test1 = 0; $test2 = 0; $test3 = 0; $mailData = ""; $counts = []; foreach ($decodenom as $curr_elementnom) { $fieldName = $curr_elementnom->nom; $fieldQty = intval($curr_elementnom->quantite); $fieldPrice = $curr_elementnom->prix; $fieldimg = $curr_elementnom->url; if ( $fieldQty != 0 ) { if ($fieldPrice != 0) { if ($fieldName == 111) { $input1 = '<div style ="border:solid;"> <div style ="float: left;width: 50%;"> voici le nom</div > <div style =""> ' . $fieldName . '</div> <div style ="float: left;width: 50%;"> qanditée</div > <div style =""> ' . $fieldQty . '</div > </div><br><br><br>'; $test=$fieldQty; $mailData1 .= $input1; @$counts[$fieldName]++; } elseif ($fieldName == 222) { $input2 = '<div style ="border:solid;"> <div style ="float: left;width: 50%;"> voici le nom</div > <div style =""> ' . $fieldName . '</div> <div style ="float: left;width: 50%;"> qanditée</div > <div style =""> ' . $fieldQty . '</div > </div><br><br><br>'; $test1=$fieldQty; $mailData2 .= $input2; @$counts[$fieldName]++; } elseif ($fieldName == 333) { $input3 = '<div style ="border:solid;"> <div style ="float: left;width: 50%;"> qanditée</div > <div style =""> ' . $fieldQty . '</div > <div style ="float: left;width: 50%;"> voici le nom</div > <div style =""> ' . $fieldName . '</div> </div><br><br><br>'; $test2=$fieldQty; $mailData3 .= $input3; @$counts[$fieldName]++; } else { $input4 ='<div style ="border:solid;"> <div style ="float: left;width: 50%;"> qanditée</div > <div style =""> ' . $fieldQty . '</div > <div style ="float: left;width: 50%;"> voici le nom</div > <div style =""> ' . $fieldName . '</div> </div><br><br><br>'; $test3+=$fieldQty; // < ==================================== j'ai ajouté un + $mailData4 .= $input4; @$counts['other']++; } } } }

Re: comment additionner toutes les quantités

Posté : 31 août 2022, 22:38
par flexi2202
en fait je viens de trouver
il suffit que je remplace
$test3=$fieldQty;
par $test3 += $fieldQty;
Mais alors j'ai une belle erreur
Warning: A non-numeric value encountered in

Re: comment additionner toutes les quantités

Posté : 31 août 2022, 23:09
par flexi2202
je devais juste mettre
$test3 = "0"; au lieu de $test3 = "";

Re: [RESOLU] comment additionner toutes les quantités

Posté : 01 sept. 2022, 08:13
par Spols
$test3 = 0; serait encore mieux

COMME JE L'AI MIS DANS LE CODE QUE TU SEMBLE NE MÊME PAS LIRE. c'est en comprenant les solutions donnée qu'on progresse

Re: [RESOLU] comment additionner toutes les quantités

Posté : 01 sept. 2022, 20:17
par flexi2202
oupsss désolé d'avoir pas vu la solution
cela arrive quand on a la tête dans le guidon
Mais un tres grand merci