[E-Commerce] pb de passage de paramètre à une fonction

pb de passage de paramètre à une fonction [E-Commerce] - PHP - Programmation

Marsh Posté le 09-06-2003 à 12:15:35    

Je suis encore bloqué, merci de bien vouloir m'aider un peu.  
/!\ ATTENTION : ce message est très très long ... si vous êtes courageux aujourd'hui pour le lire ...  
 
Mise en situation : C'est une liste d'article avec plusieurs cases à cocher qui après avoir cliquer sur le bouton "VALIDER" doit (normalement) tout ajouter au caddie.  
 
Voici les bout de mon programme :  
 
* les noms cases à cocher dans mon fichier index.php  

Code :
  1. <form name=bm_table action="/caddie/add_caddie.php" method=post>
  2. // ...  
  3. <input type=checkbox name="add_me[]" value="'.$row['idx'].'">
  4. / ...

 
 
* Ensuite le script de add_caddie.php envoyer par POST pour afficher le résultat (normallement) des articles qui ont bien été ajouté  

Code :
  1. // [...] Mise en page de la page  
  2. // Vérif du formalaire  
  3. if (!filled_out($HTTP_POST_VARS))
  4. {
  5.   echo "Vous n'avez coché aucune case. Cochez les cases des articles qui vous intéresse puis réessayer.";
  6.   do_html_footer(); 
  7.   exit;
  8. }
  9. else
  10. {
  11.   if (count($add_me) >0)
  12.   {
  13. // boucler tant qu'on a pas fini d'ajouter tous les articles au caddie  
  14.      $fin_add=sizeof($add_me);
  15.      for($i=0 ; $i<$fin_add ; $i++)
  16.      {  $idx=$add_me[$i];
  17.        if(add_article($idx))
  18.        echo "<br>article ".$idx." ajouté<br>";
  19.      }
  20.   }
  21.   else
  22.   { echo "Vous n'avez rien coché. Votre caddie reste donc inchangé.";
  23.   }
  24. }

 
Rem : on fait une boucle pour ajouter tous les caddie dont les cases chekcbox nommé add_me ont été ajouté. Dans $idx on met l'id de l'article. Ca çà a l'air de marcher. Ensuite on appelle donc la fonction add_article();  
 
* fonction add_article, d'où très certainement vient le problème :  

Code :
  1. function add_article($idx)
  2. {
  3.   // si un objet a été ajouté au caddie pour la première fois  
  4.   if(!session_is_registered("cart" ))
  5.   { echo "session non enregistrée<br>";
  6.     $cart = array();
  7.     session_register("cart" );
  8.     $items = 0;
  9.     session_register("items" );
  10.     $total_taille = "0.00";   
  11.     session_register("total_taille" );
  12.    }
  13.  
  14.   if($cart[$idx])
  15.    $cart[$idx]++;  // si on commande à nouveau le même article on incrémente sa quantité  
  16.   else
  17.    $cart[$idx] = 1;  // sinon c'est la 1ère fois qu'on ajoute cet article au caddie  
  18.   $total_taille = calculate_price($cart,$items);
  19.   $items = calculate_items($cart);
  20. // tests perso mais çà affiche tjs pareil quand on passe dans cette fonction plusieurs fois  
  21.   echo "add_article : taille=$total_taille ; items=$items ; cart=$cart<br>";
  22.   echo "add_article : idx=$idx ; qty=$cart[$idx]<br>";
  23.   return true;
  24. }

 
Rem : quand on clique sur 4 cases à cocher par exemple on passe donc 4 fois dans cette fonction mais les echo afficher ont toujours les mêmes :  
 
* aperçu d'affichage lorsque le caddie vient d'ouvrir une session pour la première fois, donc était vie au départ : 4 articles cochés  

Code :
  1. session non enregistrée
  2. add_article : taille=8.69 ; items=1 ; cart=Array
  3. add_article : idx=3 ; qty=1
  4. article 3 ajouté
  5. add_article : taille=35.8 ; items=1 ; cart=Array
  6. add_article : idx=5 ; qty=1
  7. article 5 ajouté
  8. add_article : taille=36.3 ; items=1 ; cart=Array
  9. add_article : idx=6 ; qty=1
  10. article 6 ajouté
  11. add_article : taille=23.1 ; items=1 ; cart=Array
  12. add_article : idx=7 ; qty=1
  13. article 7 ajouté

 
 
Allez tant qu'on y est je livre tous mon code des fonctions calculate_price et calculate_items si ca viendrais de là :  

Code :
  1. // en fait cette fonction calcul la taille des articles du caddie  
  2. function calculate_price($cart)
  3. {
  4. // sum total price for all items in shopping cart  
  5. $price = 0.0;
  6. if(is_array($cart))
  7. {
  8.   $conn = db_connect();
  9.   foreach($cart as $idx => $qty)
  10.   { 
  11.    $query = "select taille from gene where idx='$idx'";
  12.    $result = mysql_query($query);
  13.    if ($result)
  14.    {
  15.     $item_price = mysql_result($result, 0, "taille" );
  16.     $price +=$item_price*$qty;
  17.    }
  18.   }
  19. }
  20. return $price;
  21. }
  22. function calculate_items($cart)
  23. {
  24. // sum total items in shopping cart  
  25. // $items = 0;  
  26. if(is_array($cart))
  27. {
  28.   foreach($cart as $idx => $qty)
  29.   { 
  30.    $items += $qty;
  31.   }
  32. }
  33. return $items;
  34. }

 
 
J'arrête là mon code, si vous arrivez à tout lire.  
 
Rem. finale : En fait au début le code de la fonction add_article n'était pas utilisé ainsi. J'ai un autre scrypt similaire à 'add_article' mais qui n'est pas une fonction. Lorsque que quelqu'un visite le détail d'un article, là aussi il y a le bouton "AJOUTER".
 
Mais là on passe directement par une méthode POST et donc on envoie /voir_caddie.php?idx=12345 à la page voir_caddie donc. Et elle elle récupère çà directement depuis l'url. Mais là j'ai juste voulu mettre le paramètre dans le prototype d'une fonction exactement la même sauf que çà marche pas  :??:  


Message édité par ced_voyage le 09-06-2003 à 13:57:51
Reply

Marsh Posté le 09-06-2003 à 12:15:35   

Reply

Sujets relatifs:

Leave a Replay

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