[PHP/SQL] pb requete inter tables

pb requete inter tables [PHP/SQL] - PHP - Programmation

Marsh Posté le 01-10-2004 à 13:14:44    

bonjour  
 
je suis en train de faire des requetes sur plusieurs tables, mais G quelques difficultés
je vais essayer de vous expliquer :
 
1 - G une page ou l'utilisateur va laisser C coordonnées et la dedans il va selectionner un pays .
 
2 - pays etant une table avec comme champs pays_id |nom_pays | livraison_id
 
3 - livraison_id est un numero qui doit etre egal au champ livraison_id de la table livraison
 
4 - la table livraison comporte egalement le champ normal , ce sont des coeficients selon la zone de livraison  
 
5 - une precision : lorsque l'utisateur va commander un article, chaque article a egalement un prix de livraison de base  (dans la table articles le champ prix_livraison $query)
 
un exemple
si l'utilisateur souhaite se faire livrer le meuble alpha au japon
ca lui coutera  (prix_livraison)*coef du pays (champ 'normal' de la table livraison dont livraison_id=livraison_id de la table pays
 
mais mon probleme C qu'il va non pas chercher un champ normal dans la table livraison mais dans la table pays (j'ai fait des tests, si je mets un champ normal dans cette table ca marche mais ce n'est pas ce que je veux ...
 
voici le code de ma fonction qui permet de faire ce calcul  :
 

Code :
  1. function calculer_livraison($caddy,$id_pays,$selection_pays)
  2. {
  3.   //  
  4.   $prix = 0.0;
  5.   if(is_array($caddy))
  6.   {
  7.     $conn = db_connect();
  8.     foreach($caddy as $ref => $quantite)
  9.     { 
  10. //recherche de l'identifiant du pays
  11. $req_pays="select livraison_id from pays where pays_id='$id_pays'";
  12. $resultat_pays = mysql_query($req_pays) or die('Erreur SQL : '.mysql_error());
  13. $row = mysql_fetch_row($resultat_pays);
  14. //print_r($row);  
  15. $selection_pays = $row[0];
  16. $req_liv_norm="select normal from livraison where livraison_id='$selection_pays'";
  17. $resultat_liv_norm = mysql_query($req_liv_norm) or die('Erreur SQL : '.mysql_error());
  18. $row_normal = mysql_fetch_row($resultat_liv_norm); 
  19. $coef_normal = $row_normal[0];
  20. $query = "select prix_livraison from articles where ref='$ref'";       
  21. $result = mysql_query($query);
  22.       if ($result)
  23.       {
  24.         $prix_livraison = mysql_result($result, 0, 'prix_livraison');
  25.  $prix_pays =$prix_livraison*$coef_normal;
  26.       }
  27.   }
  28.   return $prix;
  29. }


 
merci infiniment de votre aide


Message édité par attentio le 24-03-2005 à 21:10:26

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

Marsh Posté le 01-10-2004 à 13:14:44   

Reply

Marsh Posté le 01-10-2004 à 23:17:16    

En supposant que ta table de livraison comporte entre autres les champs suivants: livraison_id | article_id
Tu peux utiliser la jointure de ce genre

Code :
  1. $SQL = "select p.nom_pays, p.livraison, a.article_id, a.prix from pays as p, livraison as l, articles as a where p.livraison_id = l.livraison_id and l.article_id = a.article_id and p.pays_id = '$pays_id'";


 
Si tu veu qu'on t'aide un peu plus il faudrait que tu poste plus en détail le MCD de ta base ou un extrait qui montre les liaisons entre tes table articles, livraison et pays.

Reply

Marsh Posté le 01-10-2004 à 23:25:04    

ok merci

Reply

Sujets relatifs:

Leave a Replay

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