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

  FORUM HardWare.fr
  Programmation
  PHP

  problème avec fonction FOREACH

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème avec fonction FOREACH

n°984387
seaside
Posté le 17-02-2005 à 00:33:54  profilanswer
 

Bonjour à tous, :)  
 
Je suis débutante en php,je rencontre un problème dans une page. ça risque d'être ennuyeux mes explications... :sleep:  
Cette page contient le caddie d'une boutique = tous les CD selectionnés
par l'internaute, ainsi que le total de la commande (tva + frais de transport + frais de transport suplémentaires/CD).  
Cette liste de CD peut encore être modifiée. Tous les CD sont à 16.52 HT (exceptés 3 CD à 18.85 euros).
On compte un tarif de frais de transport de 2.25 euros  
et un tarif de frais de transport suplémentaire (1.5 euros par CD en plus).  
Par exemple, on veut acheter :
             1 CD > Prix du CD (16.52 euros HT) + TVA (3.23 euros)  
                   + frais de transport (2.25 euros)  
                   = 22 euros ttc.
             2 CD > Prix du CD (16.52 euros HT)x2 + TVA (6.46 euros)  
                 + frais de transport (2.25 euros)  
                 + frais suplémentaire (1.5euros)  
                 = 43.25 euros ttc.
      3 CD > Prix du CD (16.52 euros HT)x3 + TVA (9.69 euros)  
                  + frais de transport (2.25 euros)  
                  + frais suplémentaire (3 euros)  
                  = 64.50 euros ttc.
 
Le tarif du frais de transport change les trois CD à 18.85 euros (dont le poids est plus lourd),il est de 3.45 euros.
Exemple pour l'achat d'un de ces CD :  
            1 CD > Prix du CD (18.85 euros HT) + TVA (3.69 euros)  
                + frais de transport (3.45 euros)  
                = 25.99 euros ttc.
            2 CD > Prix du CD (18.85 euros HT)x2 + TVA (7.38 euros)  
                + frais de transport (3.45 euros)  
                + frais suplémentaire (1.5euros)  
                = 50.03 euros ttc.  
            Etc...
 
J'utilise donc la fonction foreach et une condition pour calculer $frais (frais de transport).
$valeur 4 19 20 correspond à l'id de chacun des trois CD à 18.85 HT.
 
 
//// (connexion à ma base)
 
foreach ($panier as $valeur=>$cde)
   {
   $sql="select * from cd where id='$valeur'";
   $fraisnb=2.25;
   if ($valeur==4 OR $valeur==19 OR $valeur==20)
   {$fraisnb=3.45;
   }  
   $frais=$fraisnb;
          }
 
Je ne rencontre aucun problème si l'internaute ne selectionne que des CD à 16.52 HT,  
le frais de transport sera toujours ici de 2.25 euros.  
Ensuite, s'il selectionne un des trois CD à 18.85 HT, 3.45 euros de frais de transport s'affiche correctement.
Mais voilà le gros problème: si après ça l'internaute reselectionnes un CD à 16.52 HT, le frais de transport revient à
2.25 euros. La fonction foreach n'analyse que la dernière ligne et je voudrais que $frais soit égal à 3.45 si dans le caddie
est selectionné au moins un des trois CD à 18.85 euros HT.
Avez-vous une piste ??? Dois-je utiliser une autre fonction que foreach??  
 
Merci de votre attention!

mood
Publicité
Posté le 17-02-2005 à 00:33:54  profilanswer
 

n°984397
manatane
En vous remerciant, bonsoir
Posté le 17-02-2005 à 00:48:51  profilanswer
 

foreach n'est pas une fonction [:aloy]  
Tu peux marquer le fait qu'un cd à 18.85 a été selectionné dans une variable booleenne et orienté le traitement en fonction.

Code :
  1. $btranspmax = 0;
  2. foreach ($panier as $valeur=>$cde){
  3.    $sql="select * from cd where id='$valeur'";
  4.  
  5.    if ($valeur==4 OR $valeur==19 OR $valeur==20){
  6.      $btranspmax = 1;
  7.    } 
  8.    if( $btranspmax)
  9.      $frais = 3.45;
  10.    else
  11.      $frais = 2.25;
  12. }

n°984399
seaside
Posté le 17-02-2005 à 00:54:29  profilanswer
 

J'essaie ça dessuite!
Mille mercis pour ta réponse!

n°984401
seaside
Posté le 17-02-2005 à 01:02:32  profilanswer
 

Waouh!!!!ça marche.  
Merci encore Manatane, ton aide m'a été très précieuse!

n°984403
manatane
En vous remerciant, bonsoir
Posté le 17-02-2005 à 01:05:16  profilanswer
 

de rien :)

n°984406
seaside
Posté le 17-02-2005 à 01:18:19  profilanswer
 

et au fait, si FOREACH c'est pas une fonction, c'est quoi alors?  
(demande l'élève ignorant...)

n°984424
naceroth
Posté le 17-02-2005 à 04:03:58  profilanswer
 

C'est une structure de contrôle, comme if, while ou switch par exemple :)

n°984540
seaside
Posté le 17-02-2005 à 10:08:28  profilanswer
 

Merci Naceroth!
En tous cas, il est vraiment super ce forum!


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

  problème avec fonction FOREACH

 

Sujets relatifs
Problème de Procedure avec liste chainée et fichierprobleme d'insertion dans Mysql avec easyphp
Probleme avec request.getRequestDispatcher()PROBLEME AVEC " mms:// "
Fonction tri qui plante mon codeProblème d'overflow d'un cadre sur IE : ça foire en largeur [Résolu]
problème filtrage données tableProblème avec libxml2
Problème socket UDPDOMParser et problème avec noeud bidon
Plus de sujets relatifs à : problème avec fonction FOREACH


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