Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1452 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  multiplication entre plusieurs tables

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

multiplication entre plusieurs tables

n°859260
attentio
Posté le 28-09-2004 à 16:53:25  profilanswer
 

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 ...
mood
Publicité
Posté le 28-09-2004 à 16:53:25  profilanswer
 

n°859409
sonikbuzz
echo &#034;Hello World!&#034;;
Posté le 28-09-2004 à 19:57:57  profilanswer
 

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  :)

n°859415
sircam
I Like Trains
Posté le 28-09-2004 à 20:03:53  profilanswer
 

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}
n°859429
sonikbuzz
echo &#034;Hello World!&#034;;
Posté le 28-09-2004 à 20:22:53  profilanswer
 

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:  

n°859442
attentio
Posté le 28-09-2004 à 20:39:04  profilanswer
 

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  
 

n°859458
sonikbuzz
echo &#034;Hello World!&#034;;
Posté le 28-09-2004 à 21:10:24  profilanswer
 

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.

n°859504
attentio
Posté le 28-09-2004 à 21:56:00  profilanswer
 

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

n°859519
sircam
I Like Trains
Posté le 28-09-2004 à 22:07:28  profilanswer
 

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}
n°859532
sonikbuzz
echo &#034;Hello World!&#034;;
Posté le 28-09-2004 à 22:27:27  profilanswer
 

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...

n°859608
attentio
Posté le 29-09-2004 à 02:15:55  profilanswer
 

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

mood
Publicité
Posté le 29-09-2004 à 02:15:55  profilanswer
 

n°859657
sircam
I Like Trains
Posté le 29-09-2004 à 09:32:15  profilanswer
 

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}
n°859666
fguilleme
Posté le 29-09-2004 à 09:41:12  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  multiplication entre plusieurs tables

 

Sujets relatifs
Supp. de toutes les entrées de la tables système pg_shadow e PostgresAffichage de plusieurs pages incluses
Multiplication ligne à ligne uniquement en SQLlié des tables SQL server en lecture via Access (résolu)
Oracle - Metadata sur les tables ( * From Tab, Col )Plusieurs questions sur le dessin
[javascript] changer couleur dans plusieurs cellulesPartager des données entre plusieurs appli-web
document_root et plusieurs sites[SQL] Faire un update sur plusieurs critères provenant d'une table
Plus de sujets relatifs à : multiplication entre plusieurs tables


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR