2009-11-23 8 views
0

Je tente de calculer un sous-total et un total à partir d'une série de valeurs stockées dans un tableau renvoyé à partir d'une base de données mysql.Calcul du sous-total et du total du script du panier de base

ce i ce que j'ai thusfar

while($row = mysql_fetch_array($cart)){ 
    foreach($row AS $key => $value) { $row[$key] = stripslashes($value); } 
    $id = $row['id']; 
    $contents = unserialize($row['contents']); 
     foreach($contents as $key => $value){ 
      if($key == "price"){$subtotal = $subtotal+$value;} 
      echo "$key : $value <br />"; 
     } 
    echo "<br><br><br>"; 
    } 
echo "<font color=red>SubTotal $subtotal</font>"; 

contenu $ contient un tableau [name] => super [price] => 65.87 [quantity] => 25

i besoin donc de multiplier le prix par la quantité, puis prendre ce montant (par article) et l'ajouter dans total après la boucle

+1

Vous selfproviding aux étapes à entreprendre pour le calcul du total;) Il suffit de mettre ces étapes dans une procédure ou une fonction et que vous avez terminé, vous devez bien sûr garder une trace du sous-total: Mais cela se fait facilement en plaçant un var (par exemple $ carttotal) en dehors de votre boucle et ajoutez le sous-total par ligne (qty * price) au $ carttotal. – Ben

Répondre

2
foreach($contents as $key => $value) 
{ 
    if($key == "price") $total = $total+$value; 

    if($key == "name") 
    { 
     if(!isset($subtotal[$key])) $subtotal[$key] = 0; 
     $subtotal[$key] = $subtotal[$key] + $value; 
    } 
} 

Ensuite, vous avez prix total au total de $ et pour chaque élément individuel dans le tableau de sous-total $

+0

que diriez-vous de la quantité? – Eineki

+0

foreach ($ sous-total en $ key => valeur $) { $ count [$ key] = count ($ sous-total [$ key]); $ totalCount = $ totalCount + $ count [$ clé]; } alors vous aurez un tableau avec chaque nombre d'éléments et le nombre total à $ totalCount – dfilkovi

1

Je ne suis pas sûr de ce que vous voulez dire pour total et sous-total. Je suppose que le sous-total est le prix d'un article multiplié par sa quantité.

Pour Total, je suppose que vous avez l'intention d'imprimer le sous-total en rouge.

Votre code devient:

$total=0; 
while($row = mysql_fetch_array($cart)){ 
    foreach($row AS $key => $value) { $row[$key] = stripslashes($value); } 
    $id = $row['id']; 
    foreach($row AS $key => $value) { $row[$key] = stripslashes($value); } 
    $id = $row['id']; 
    $contents = unserialize($row['contents']); 
    $contents['subtotal'] = $contents['price']*$contents['quantity']; 
    foreach($contents as $key => $value){echo "$key : $value <br />"; } 
    $total +=$content['subtotal']; 
} 
echo "<font color=red>Total: $total</font>"; 

Si le formatage est pas obligatoire j'utiliser une légère solution différente pour formater la sortie. (Vous devriez vérifier la printf format string placeholder syntax)

$billLine = "%s (%0.2f x %d): %0.2f<br /><br /><br />"; 
$total=0; 
while($row = mysql_fetch_array($cart)){ 
    foreach($row AS $key => $value) { $row[$key] = stripslashes($value); } 
    $id = $row['id']; 
    foreach($row AS $key => $value) { $row[$key] = stripslashes($value); } 
    $id = $row['id']; 
    $contents = unserialize($row['contents']); 
    $subtotal = $contents['price']*$contents['quantity']; 
    printf($billLine, $contents['name'], 
         $contents['quantity'], 
         $contents['price'], 
         $subtotal); 
    $total +=$subtotal; 
} 
echo "<font color=red>Total: $total</font>";