Pb avec un for each ::: SOS svp !

Résolu
ViNCiNTO Messages postés 20 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 1 juillet 2010 - 27 mars 2006 à 17:02
ViNCiNTO Messages postés 20 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 1 juillet 2010 - 27 mars 2006 à 18:06
Bonjour a tous, je poste ce message parce que j'ai un petit problème avec une boucle for each. Voila en fait je parcours
un cookie qui contient des produits. Donc pour chaque produit je recupere le nom, la quantité, le prix unitaire... et
je concatène toutes ces infos dans une variable que j'appelle $chaine. De plus, je recupere le prix*quantité dans une
variable $total. Le but de la manoeuvre étant de pouvoir etablir une facture a partir de 2 variables $contenu et $prix
qui contiendrai la somme des variables $chaine (concatenation) et $total (somme algébrique). Pour cela je fais un truc du genre $prix +$total et $contenu $contenu.$chaine. Le problème c'est que cela ne marche pas, au lieu d'ajouter ou de
concaténer ca recupere les valeurs que pour le dernier produit. J'avais deja fait ce genre de truc (+=) pour additionner
des nombres a partir d'un for each et ca marchait. Voila j'espere que tu pourras m'aider (encore une fois), je t'envoie
le code dans le fichier texte. Merci d'avance...

//////////////////////////////////////////
/////////////// Code /////////////////
//////////////////////////////////////////

foreach ($_COOKIE['Cookie'] as $key => $val) {
// On recupere toutes les infos du produit courant
$result = $produits->getInfos($key) ;
if (sizeof($result) > 0) {
// Initialisation des variables
$contenu = "" ;
$prix = 0 ;
// On affiche tout les produits ($key2) et leur quantité ($val2)
foreach ($result as $key2 => $val2) {
// On recupère le nom du produit
$produit = $val2->field("prod_NomProduit".$lang2."") ;
// On récupère le prix du produit
$prix_produit = $val2->field("prpd_ValeurTTCPrixProduit") ;
// On recupere la quantité dans le cookie (dans la variable $qte)
$quantity = $val ;
// On calcule le prix*quantité pour chaque produit
$total = $prix_produit*$quantity ;
// On crée une chaine en concaténant le nom, la quantité et le prix unitaire de chaque produit
$chaine = $produit." - x".$val." - ".$prix_produit."?" ;
// On concatène tous les produits ($chaine)
$contenu = $contenu.$chaine ;
// On calcule le prix total
$prix += $total ;
//////////////////////////////////////////
// On fait la trace des variables utilisées :
echo "$ chaine : ".$chaine."
" ;
echo "$ total : ".$total."
" ;
echo "$ contenu : ".$contenu."
" ;
echo "$ prix : ".$prix."
" ;
echo "--------------------
" ;
//////////////////////////////////////////
}
}
}
//////////////////////////////////////////
echo "*****************************
" ;
echo "$ contenu : ".$contenu."
" ;
echo "$ prix : ".$prix ;
exit;
//////////////////////////////////////////

//////////////////////////////////////////
///////////// Résultat ///////////////
//////////////////////////////////////////

$ chaine : casquette - x1 - 14.80?
$ total : 14.8
$ contenu : 0
$ prix : 14.8
--------------------
$ chaine : chaussette - x4 - 4.70?
$ total : 18.8
$ contenu : 0
$ prix : 18.8
--------------------
$ chaine : echarpe - x2 - 8.85?
$ total : 17.7
$ contenu : 0
$ prix : 17.7
--------------------
*****************************
$ contenu : 0
$ prix : 17.7

3 réponses

sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
27 mars 2006 à 17:51
*****************************
$ contenu : 0
$ prix : 17.7

par contre pour ça, c'est normal( pour le prix), tu remets à zero
dans le second foreach

$contenu = "" ;
$prix = 0 ;
3
ViNCiNTO Messages postés 20 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 1 juillet 2010
27 mars 2006 à 18:06
Ok merci beaucoup, j'ai fait une erreur de débutant. J'étais sûr que ca devait marcher et en fait c'est bon j'avais juste mal initialisé mes variables. En initialisant avant le premier for each ca marche nikel. Comme tu disais .= et += c'est pareil, les 2 marches. Merci beaucoup !
3
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
27 mars 2006 à 17:47
$contenu.= $chaine ;

tu peux essayer comme ça aussi
mais ça devrait marcher...
je ne vois pas pourquoi $contenu=0 ?
0
Rejoignez-nous