multiplication entre plusieurs tables

multiplication entre plusieurs tables - PHP - Programmation

Marsh Posté le 28-09-2004 à 16:53:25    

bonjour,
j'aimerais savoir comment faire pour multiplier un chiffre par un autre chiffre passé dans un requete.
je m'explique ....
1 - j'ai une table pays dans lequel il ya les champs id,nom_pays,coef.
2- la premiere page est un formulaire dans lequel l'utisateur va saisir ses coordonnées dans son pays de livraison

Code :
  1. <select name="pays">
  2.         <?
  3. //affichage des pays
  4. $req_pays = mysql_query("SELECT * FROM pays" );
  5. for($n=0;$n<mysql_num_rows($req_pays);$n++)
  6. {
  7. $resultatspays =mysql_fetch_array($req_pays);
  8. echo"<option value='" . $resultatspays['nom_pays'] ."'>" . $resultatspays['nom_pays'] ."</option>";
  9. }
  10. ?>
  11. </select>


et une fois validé il m'envoi vers une page qui recapitule sa commande .
3- selon le pays que l'utilisateur a selectionné dans la page precedante je voudrais que le prix de la livraison varie (chaque article a deja un prix de livraison de base pour la france et si un pays est selectionné alors il se multiplie par le coefficient du pays:le champ coef de la table pays)
actuellement ma page est la suivante (mais elle prends simplement en compte le champs prix_livraison de la table articles

Code :
  1. <?
  2. function calculer_livraison($caddy)
  3. {
  4.   $prix = 0.0;
  5.   if(is_array($caddy))
  6.   {
  7.     $conn = db_connect();
  8.     foreach($caddy as $ref => $quantite)
  9.     { 
  10. $query = "select prix_livraison from articles where ref='$ref'";
  11.       $result = mysql_query($query);
  12.       if ($result)
  13.       {
  14.         $prix_livraison = mysql_result($result, 0, 'prix_livraison');
  15.  $prix_pays=$prix_livraison*
  16.         $prix +=$prix_livraison*$quantite;
  17.       }
  18.     }
  19.   }
  20.   return $prix;
  21. }
  22. ?>


et ca donnerais un truc du genre

Code :
  1. <?
  2. function calculer_livraison($caddy)
  3. {
  4.   $prix = 0.0;
  5.   if(is_array($caddy))
  6.   {
  7.     $conn = db_connect();
  8.     foreach($caddy as $ref => $quantite)
  9.     { 
  10. $requete_pays = "select coef from pays where nom_pays='$je sais pas quoi'";
  11. $query = "select prix_livraison from articles where ref='$ref'";
  12.       $result = mysql_query($query);
  13.       if ($result)
  14.       {
  15.         $prix_livraison = mysql_result($result, 0, 'prix_livraison');
  16.  //premiere multiplication
  17.  $coef_pays=$prix_livraison*$coef
  18.  //deuxieme multiplication
  19.         $prix +=$coef_pays*$quantite;
  20.       }
  21.     }
  22.   }
  23.   return $prix;
  24. }
  25. ?>


...mais je ne sais pas comment m'y prendre
 
merci de votre aidebonjour,
j'aimerais savoir comment faire pour multiplier un chiffre par un autre chiffre passé dans un requete.
je m'explique ....
1 - j'ai une table pays dans lequel il ya les champs id,nom_pays,coef.
2- la premiere page est un formulaire dans lequel l'utisateur va saisir ses coordonnées dans son pays de livraison

Code :
  1. <select name="pays">
  2.         <?
  3. //affichage des pays
  4. $req_pays = mysql_query("SELECT * FROM pays" );
  5. for($n=0;$n<mysql_num_rows($req_pays);$n++)
  6. {
  7. $resultatspays =mysql_fetch_array($req_pays);
  8. echo"<option value='" . $resultatspays['nom_pays'] ."'>" . $resultatspays['nom_pays'] ."</option>";
  9. }
  10. ?>
  11. </select>


et une fois validé il m'envoi vers une page qui recapitule sa commande .
3- selon le pays que l'utilisateur a selectionné dans la page precedante je voudrais que le prix de la livraison varie (chaque article a deja un prix de livraison de base pour la france et si un pays est selectionné alors il se multiplie par le coefficient du pays:le champ coef de la table pays)
actuellement ma page est la suivante (mais elle prends simplement en compte le champs prix_livraison de la table articles

Code :
  1. <?
  2. function calculer_livraison($caddy)
  3. {
  4.   $prix = 0.0;
  5.   if(is_array($caddy))
  6.   {
  7.     $conn = db_connect();
  8.     foreach($caddy as $ref => $quantite)
  9.     { 
  10. $query = "select prix_livraison from articles where ref='$ref'";
  11.       $result = mysql_query($query);
  12.       if ($result)
  13.       {
  14.         $prix_livraison = mysql_result($result, 0, 'prix_livraison');
  15.  $prix_pays=$prix_livraison*
  16.         $prix +=$prix_livraison*$quantite;
  17.       }
  18.     }
  19.   }
  20.   return $prix;
  21. }
  22. ?>


et ca donnerais un truc du genre

Code :
  1. <?
  2. function calculer_livraison($caddy)
  3. {
  4.   $prix = 0.0;
  5.   if(is_array($caddy))
  6.   {
  7.     $conn = db_connect();
  8.     foreach($caddy as $ref => $quantite)
  9.     { 
  10. $requete_pays = "select coef from pays where nom_pays='$je sais pas quoi'";
  11. $query = "select prix_livraison from articles where ref='$ref'";
  12.       $result = mysql_query($query);
  13.       if ($result)
  14.       {
  15.         $prix_livraison = mysql_result($result, 0, 'prix_livraison');
  16.  //premiere multiplication
  17.  $coef_pays=$prix_livraison*$coef
  18.  //deuxieme multiplication
  19.         $prix +=$coef_pays*$quantite;
  20.       }
  21.     }
  22.   }
  23.   return $prix;
  24. }
  25. ?>


...mais je ne sais pas comment m'y prendre
 
merci de votre aide


Message édité par attentio le 24-03-2005 à 21:13:14

---------------
L'ordinateur a de la mémoire mais aucun souvenir ...
Reply

Marsh Posté le 28-09-2004 à 16:53:25   

Reply

Marsh Posté le 28-09-2004 à 19:57:57    

Salut,
je suis p'etre pas trés reveillé mais j'ai pas compris ton probleme, pourais tu le reformuler sans donner d'exemple, je pense que ce serait plus clair  :)

Reply

Marsh Posté le 28-09-2004 à 20:03:53    

sonikbuzz a écrit :

Salut,
je suis p'etre pas trés reveillé mais j'ai pas compris ton probleme, pourais tu le reformuler sans donner d'exemple, je pense que ce serait plus clair  :)


Pour une fois que qqn décrit son problème de manière détaillée, relativement structurée et avec un style et une orthographe décents, on va pas lui jeter la pierre.
 
Bon, à quel endroit est-ce que tu cales ? T'as l'air de savoir ce que tu fais, pointe-nous ton blème.
 


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 28-09-2004 à 20:22:53    

Heu dit donc sircam, puisque tu as tous compris pourquoi tu reponds pas à sa question ?
En plus je pense pas avoir été agressif...
Donc attentio reformule ton probleme mais sans exemple et je pourais t'aider.
Je suis kool là non ? :ange:  

Reply

Marsh Posté le 28-09-2004 à 20:39:04    

et bien en fait c'est sur cette fonction calculer_livraison
comment dois je formuler cela pour que en plus il multiplie par un coef propre a chaque pays
 
ex :  
table pays
nom_pays=france - coef=1
nom_pays=italie - coef=2,3
 
table articles
nom_article=meuble omega - prix_livraison=100
nom_article=lampe alpha - prix_livraison=63
donc si le client veut se faire livrer en italie le meuble omegav dont le prix de livraison a la base est de 100 €(prix_livraison de la table article)alors le prix de la livraison sera 230 € .par contre un francais lui paiera 100 € (100*1).
 
actuellement le code de ma fonction est le suivant mais il ne prends pas en compte le pays de livraison dont l'utilisateur a precedament indiqué dans  formulaire.php
[code]
<?  
function calculer_livraison($caddy)  
{  
  $prix = 0.0;  
  if(is_array($caddy))  
  {  
    $conn = db_connect();  
    foreach($caddy as $ref => $quantite)  
    {    
$query = "select prix_livraison from articles where ref='$ref'";  
 
      $result = mysql_query($query);  
      if ($result)  
      {  
        $prix_livraison = mysql_result($result, 0, 'prix_livraison');  
        $prix_pays=$prix_livraison*  
         
        $prix +=$prix_livraison*$quantite;  
      }  
    }  
  }  
  return $prix;  
}  
 
?>  
[code]
voila je ne sais pas trop comment faire pour recuperer le pays et le multiplier ... etc etc
 
 
merci de ton aide  
 

Reply

Marsh Posté le 28-09-2004 à 21:10:24    

re,
1)tu récupère la variable $pays provenant du formulaire tu l'intègres dans ta fonction
 
2)tu fais un requête pour avoir le coef:
 $query = "SELECT  
               pays.nom_pays          
           FROM pays
                  WHERE
                  (
                  (pays.nom_pays = '$pays')
                  )";
        $result = mysql_query($query);          
        $result_array = mysql_fetch_array($result);
donc
       $le_coef_du_pays = $result_array[0];
 
3)Tu appliques le coef au prix de livraison :
 
$prix_pays=$prix_livraison*$le_coef_du_pays;
 
Voilà j'espère bien avoir compris ton probleme.

Reply

Marsh Posté le 28-09-2004 à 21:56:00    

j'ai fais ca mais ca marche pas;
j'ai un Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 23 a la ligne  
$coef = mysql_result($resultat_pays, 0, 'normal');  

Code :
  1. function calculer_livraison($caddy)
  2. {
  3.   //  
  4.   $prix = 0.0;
  5.   if(is_array($caddy))
  6.   {
  7.     $conn = db_connect();
  8.     foreach($caddy as $ref => $quantite)
  9.     { 
  10. $query = "select prix_livraison from articles where ref='$ref'";
  11. $req_pays="select normal from pays where nom_pays='$pays'";
  12.    
  13.       $result = mysql_query($query);
  14.   $resultat_pays = mysql_query($req_pays);
  15.   $coef = mysql_result($resultat_pays, 0, 'normal');
  16.       if ($result)
  17.       {
  18.      if((isset($_POST['choix'])) and ($_POST['choix']=='prix_normal'))
  19.    {
  20.         $prix_livraison = mysql_result($result, 0, 'prix_livraison');
  21.  $prix_pays =$prix_livraison*$resultat_pays;
  22.    }
  23.   if((isset($_POST['choix'])) and ($_POST['choix']=='prix_express'))
  24.       {
  25.         $prix_livraison = mysql_result($result, 0, 'prix_livraison_express');
  26.    }
  27.         $prix +=$prix_pays*$quantite;
  28.       }
  29.     }
  30.   }
  31.   return $prix;
  32. }


 
en haut de page principale j'ai $pays = $HTTP_POST_VARS['pays'];
 
merci de ton aide

Reply

Marsh Posté le 28-09-2004 à 22:07:28    

sonikbuzz a écrit :

Heu dit donc sircam, puisque tu as tous compris pourquoi tu reponds pas à sa question ?
En plus je pense pas avoir été agressif...
Donc attentio reformule ton probleme mais sans exemple et je pourais t'aider.
Je suis kool là non ? :ange:


Dis donc, très cher, j'ai pas vraiment tout compris, puisque je lui demande de pointer avec plus de précision son problème. Mais son exposé est très au-dessus de la moyenne de 'jé un pb php kommen utilisé cet fonction?' comme on en voit trop.
 
Et pq parles-tu d'agressivité ?! Non, tu n'as pas été agressif, ça me paraît tout à fait normal, mais pq le fais-tu remarquer ?
 
Pour le surplus, je ne suis mentalement pas en état de jeter un oeil, suite à une baisse soudaine de perf sous Doom3 (de 75 à 44fps, c'est accablant).


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 28-09-2004 à 22:27:27    

re,
Oui mais regarde ta fonction il te manque la variable $pays :
function calculer_livraison($caddy, $pays)  
{
...
}
 
Et la ca devrait marcher.
 
sircam > 44fps sur Doom3 c'est deja pas mal...

Reply

Marsh Posté le 29-09-2004 à 02:15:55    

bon j'ai plus d'erreur par contre l'interaction avec la table pays ne marche pas.
ex:
si un article a un prix_livraison = 20 alors $prix_pays =460
si un article a un prix_livraison = 70 alors $prix_pays =1610
donc a chaque fois il ne multiplie pas par le coef du pays lui correspondant mais par 23  
 
souviens toi :

Code :
  1. Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 23


je comprends vraiment plus rien ... d'ou viens cette erreur
 
merci infiniment de votre aide

Reply

Marsh Posté le 29-09-2004 à 02:15:55   

Reply

Marsh Posté le 29-09-2004 à 09:32:15    

sonikbuzz a écrit :

sircam > 44fps sur Doom3 c'est deja pas mal...


Tu peux pas t'imaginer la déception de passer de 75 à 44, comme ça, sans raison apparente.  :pfff:  
 
Des heures et des heures de troubleshooting en perspective  :fou:


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 29-09-2004 à 09:41:12    

Le  plus simple serait de tout faire dans la requete SQL en faisant presque comme une jointude entre les tables.
Style:
select prix_article*coeff from articles, pays where ref="$ref" and nom_pays="$pays"
A priori si pays.nom_pays est unique ça devrait aller. Sinon le client vas se retrouver avec une facture salée. Mais fais le maximum avec mysql autant que ce soit lui qui bosse que php, il sait bien comment faire!
Essaie directement sous mysql avec ton éditeur favori et après porte ta requête sous php.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed