Comment calculer ligne après ligne le montant d'un panier en php

Eléphant du PHP | 91 Messages

17 juin 2009, 12:50

Bonjour,

Je cherche comme calculer ligne après ligne le montant d'un panier en php.

Par exemple:

5 Pantalons a 9.95€ = 49.75€

+1 chemise a 3.50€ = 3.50€

Je ne cherche pas calculer le grand total, mais seulement le total pour chaque ligne d' article. En gros quelle syntaxe a utiliser pour pouvoir calculer les 5 pantalons, puis la ligne du dessous et ainsi de suite


Quelqu'un aurait-il une réponse?

Merci

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

17 juin 2009, 13:11

Modération :
Sans voir ton code, ça va pas être simple...
:roll:

Eléphant du PHP | 91 Messages

17 juin 2009, 13:19

OK

Voila le code
<?

$linetotal=0;

  for($i = 0; $i < 1; $i++) 
  {            
   $linetotal = $_SESSION['panier']['qteProduit'][$i]* $_SESSION['panier']['prixProduit'][$i]; 
  }
    
{
echo "".$linetotal. "<br>";
}
?>
Ce que j'aimerai c'est savoir c'est le bout de code a placer pour pouvoir passer a la ligne suivante, la calculer, donner le résultat, puis faire de même pour le reste

Merci

ViPHP
ViPHP | 2291 Messages

17 juin 2009, 17:08

OK

Voila le code
<?

$linetotal=0;

  for($i = 0; $i < 1; $i++) 
  {            
   $linetotal = $_SESSION['panier']['qteProduit'][$i]* $_SESSION['panier']['prixProduit'][$i]; 
  }
    
{
echo "".$linetotal. "<br>";
}
?>
Ce que j'aimerai c'est savoir c'est le bout de code a placer pour pouvoir passer a la ligne suivante, la calculer, donner le résultat, puis faire de même pour le reste

Merci
Le formulaire aussi stp
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Eléphant du PHP | 91 Messages

17 juin 2009, 17:47

Voila le code complet,

<?
session_start();
require("conf.php"); 
if(!session_is_registered(myusername)){
header("location:index.php");
}

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");



$sql="SELECT * FROM order_clients T, clients C WHERE T.myusername=C.myusername ORDER BY date_hour DESC LIMIT 1; " or die ('Erreur SQL !' .$sql. ' <br> ' .mysql_error());
$req = mysql_query($sql) or die ('Erreur SQL !' .$sql. ' <br> ' .mysql_error());
$res = mysql_fetch_array($req) or die ('Erreur SQL !' .$sql. ' <br> ' .mysql_error()); 


?>

<center><table class="catalog7" BORDER=0 CELLSPACING=5 CELLPADDING=5 COLS=4 WIDTH="750" >
<tr>
<td class="catalog6"><b>QTY</b></td>

<td class="catalog6"><b>Description</b></td>

<td class="catalog6"><b>Unity Price</b></td>

<td class="catalog6"><b>Line Total</b></td>
</tr>

<tr>
<td class="catalog7">
<? 

$nbArticles=count($_SESSION['panier']['qteProduit']);
  if ($nbArticles <= 0)
   echo "0";
  else
  {
   for ($i=0 ;$i < $nbArticles ; $i++)
   {
    echo "".htmlspecialchars($_SESSION['panier']['qteProduit'][$i])."<br>";

   }
     
	}
	


;?>
</td>

<td class="catalog7">
<? 
$nbArticles=count($_SESSION['panier']['libelleProduit']);
  if ($nbArticles <= 0)
   echo "Your Cart is Empty";
  else
  {
   for ($i=0 ;$i < $nbArticles ; $i++)
   {
    echo "".($_SESSION['panier']['libelleProduit'][$i])."<br>";

   }
     
	}
	
	

;?>
</td>

<td class="catalog7">
<div align=right>
<? 

$nbArticles=count($_SESSION['panier']['prixProduit']);
  if ($nbArticles <= 0)
   echo "0";
  else
  {
   for ($i=0 ;$i < $nbArticles ; $i++)
   {
    echo "".htmlspecialchars($_SESSION['panier']['prixProduit'][$i])."<br>";

   }
     
	}
	


;?>
</div></td>

<td class="catalog7">
<div align=right>
<?

$linetotal=0;

  for($i = 0; $i < 1; $i++) 
  {            
   $linetotal = $_SESSION['panier']['qteProduit'][$i] * $_SESSION['panier']['prixProduit'][$i]; 
  }
    
{
echo "".$linetotal. "<br>";
}
?>
</div></td>
</tr>

<tr>
<td class="catalog7"></td>

<td class="catalog7"></td>

<td class="catalog7">
<div align=right><b>Sub-Total</b></div>
</td>

<td class="catalog7">
<div align=right>
<?

$total=0;

  for($i = 0; $i < count($_SESSION['panier']['libelleProduit']); $i++) 
  {            
   $total += $_SESSION['panier']['qteProduit'][$i] * $_SESSION['panier']['prixProduit'][$i]; 
  }
    
{
echo "".$total."";
}
?>
</div></td>
</tr>

<tr>
<td class="catalog7"></td>

<td class="catalog7"></td>

<td class="catalog7">
<div align=right><b>Tax</b></div>
</td>

<td class="catalog7">
<div align=right>0.00</div>
</td>
</tr>

<tr>
<td class="catalog7"></td>

<td class="catalog7"></td>

<td class="catalog7">
<div align=right><b>Total</b></div>
</td>

<td class="catalog7">
<div align=right>
<?

$total=0;

  for($i = 0; $i < count($_SESSION['panier']['libelleProduit']); $i++) 
  {            
   $total += $_SESSION['panier']['qteProduit'][$i] * $_SESSION['panier']['prixProduit'][$i]; 
  }
    
{
echo "".$total."";
}
?>
</div></td>
</tr>
</table></center>

ViPHP
ViPHP | 2291 Messages

17 juin 2009, 20:41

Pourquoi ne pas faire une simple boucle WHILE et si je peut me permettre recommence ton code parce là c'est une catastrophe :wink:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Eléphant du PHP | 91 Messages

17 juin 2009, 22:06

Pourquoi ne pas faire une simple boucle WHILE et si je peut me permettre recommence ton code parce là c'est une catastrophe :wink:
C'est une catastrophe parce c'est une catastrophe? Ou c'est une catastrophe parce que toi non plus t'arrive pas a solutionner?

Car pour une catastrophe, il fonctionne très bien, c'est seulement l'addition de chaque produit qui me manque. Car l'addition final, je l'obtiens correctement.

Mais je vais essayer la boucle WHILE pour obtenir l'addition de chaque produit.

ViPHP
ViPHP | 3300 Messages

18 juin 2009, 02:15

je crois qu'il voulait dire que c'est une catastrophe, parceque c'est une catastrophe :)

le fait de marcher c'est bien, mais il faut travailler sur les perfs, la simplicité, la logique, la présentation, la validité du html final, bref un peu tout

Code : Tout sélectionner

for($i = 0; $i < 1; $i++)
un tour de boucle et puis s'en va? tu peux supprimer ça, ca sert à rien à prioris

Code : Tout sélectionner

echo "".htmlspecialchars($_SESSION['panier']['prixProduit'][$i])."<br>";
echo "" c'est pas très utile, les double quote c'est mal.

Code : Tout sélectionner

<div align=right>
un argument en html ca prend des ", et l'argument right n'existe plus dans aucune des normes de ces 5 dernières années

c'est pas pour t'embéter, mais je pense que tu résoudrais ton probleme en 15 minutes si tu avais un code moins alambiqué, parceque bon au final c'est une adition que tu veux faire...
Fait du php depuis que ca existe ou presque :)

ViPHP
ViPHP | 3300 Messages

18 juin 2009, 02:17

ah aussi, l'argument "ca marche" c'est pas un truc valable, est ce que ca marchera demain, et après demain, est ce que si un utilisateur fait un truc bizarre ça marche toujours, est ce que ca marche si ton code change de serveur, ou de version de php. y'a beaucoup beaucoup d'aléatoire dans ce domaine, faut etre très omniscient pour pouvoir s'abstraire de bugs. qui plus est, si ca marchais, serais-tu sur ce forum? :)
Fait du php depuis que ca existe ou presque :)