Bonjour Kakiman,
Je ne suis pas sûr d'avoir parfaitement saisi la problématique qui est la tienne mais il me semble, à première vue qu'il y a une sérieuse erreur de conception de ta base de données.
1) il semblerait qu'il y ait redondance dans les données (articles, désignations, prix_vente)
2) on ne stocke jamais dans une base un résultat qui peut être calculé. On le calcule "à la volée".
A première vue, avec les infos que j'ai, je modéliserai ainsi :
Produits ([num_article], designation, prix_vente)
Clients ([num_client], nom, prenom, etc...)
Commander ([num_bon, num_client, num_article, date], quantité)
NB: Les champs entre crochets sont clefs-primaire.
Exemples:
PRODUITS:
153 | Chaussettes | 2.00
315 | Pantalon | 15.50
287 | Chemises | 14.80
CLIENTS:
1 | DUPONT | Jean ...
2 | DUVAL | Paul ...
3 | MOREAU | Isabelle ...
COMMANDER:
12 | 2 | 153 | 2007-11-20 15:43:12 | 4
13 | 2 | 287 | 2007-11-20 15:43:12 | 2
14 | 2 | 315 | 2007-11-20 15:43:12 | 1
15 | 3 | 315 | 2007-11-20 16:34:27 | 1
avec:
$requete = "INSERT INTO Commander (num_client,num_article,`date`,quantite) VALUES ("
. "'" . $_POST["num_client"] . "','"
. "'" . $_POST["num_article"] . "','"
. "'" . date("Y-m-d H:i:s") . "','"
. "'" . $_POST["quantite"] . "');";
Au moment d'afficher ou d'imprimer le bon de commande numéro 52 (par exemple):
===================================================
// ici, connexion à la base de données
$hote = "localhost";
$base = "adpub;
$user = "root";
$pass = "car";
$cnx = mysql_pconnect($hote, $user, $pass) or die(mysql_error());
$ret = mysql_select_db($base) or die(mysql_error());
// ici, requête et exécution
$total_commande = 0;
$requete = "SELECT Produits.*, Clients.*, Commander.*"
. " FROM Produits, Clients, Commander"
. " WHERE Produits.num_article = Commander.num_article"
. " AND Clients.num_client = Commander.num_client"
. " AND Commander.num_non = 52;";
$resultat = mysql_query($requete,$cnx);
// Traitement 1ère ligne du résultat
$r = mysql_fetch_object($resultat);
echo "$r->nom $r->prenom (commande numéro $r->num_bon) :<br/>";
$total_article = $r->quantite * $r->prix_vente;
echo "$r->designation x $r->quantite = $total_article<br/>";
$total_commande += $total_article;
// traitement des autres lignes, s'il y en a
while($r = mysql_fetch_object($resultat)) {
$total_article = $r->quantite * $r->prix_vente;
echo "$r->designation x $r->quantite = $total_article<br/>";
$total_commande += $total_article;
}
// affichage total commande
echo "TOTAL COMMANDE: $total_commande<br/>";
===================================================
T'auras toujours des problèmes en cas d'évolutoin des données (par ex changement de tarifs) si tu stockes dans ta base des calculs qu'on peut faire en consultant la base.
Je ne sais pas si ça réponds à ton besoin mais moi, je ferais comme ça...
Bon courage.