[php/mysql] Ajout d'un prix variable dans le panier

Ajout d'un prix variable dans le panier [php/mysql] - PHP - Programmation

Marsh Posté le 28-11-2007 à 11:39:18    

Bonjour à tous
 
Je suis entrain de développer une boutique fictive en PHP / MySQL.
J'ai réussi à le faire pour des produits à prix fixe, or le prix de mes produits est au m2 et varie donc en fonction de la dimension voulue par le client.
 
J'ai réussi à créer un script calculant le prix selon les dimensions entrées par l'internaute et à l'afficher. Cependant je n'arrive pas à faire prendre en compte ce prix lors de l'ajout dans le panier.
 
Quelqu'un voit comment je pourrais faire ?

Reply

Marsh Posté le 28-11-2007 à 11:39:18   

Reply

Marsh Posté le 28-11-2007 à 11:44:48    

En fait je pense qu'il faudrait que j'ajoute une table dans la base de donnée recevant les commandes et donc les prix calculés en fonction de la dimension entrée parsque là le script va me rechercher le prix fice au mètre carré.
 
Quelqu'un saurait comment entrer le résultat d'un sript php dans une base de donnée ?


Message édité par cli142 le 28-11-2007 à 11:55:45
Reply

Marsh Posté le 28-11-2007 à 14:10:27    

Ben, pourquoi tu ne gère pas ça tout simplement avec un PU et une quantité commandée :??:


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 28-11-2007 à 14:27:39    

c'est à dire ?
 
Je gère déjà la quantité, une fois le produit acheté le client peut, en visualisant son panier, modifier la quantité de produits mais ça ne résoud pas le problème prix variant en fonction de la surface.

Reply

Marsh Posté le 28-11-2007 à 14:36:38    

Explique.
 
C'est quoi cette notion de surface ?
 
Si je veux 25 m², c'est quoi ta règle ?
 
Logiquement, c'est je commande 25 unités de 1 m² (et donc on retrouve la simple formule de qte x pu)
 
Mais si c'est un truc du genre "de 1 à 10m², le prix au m² est de X, de 11 à 50 il est de Y et de 51 à plus il est de Z", alors il te faut une table de "tarifs en colonne", qui permet de retrouver le prix unitaire en fonction de la quantité désirée.

Reply

Marsh Posté le 28-11-2007 à 14:45:33    

en fait le problème est que les surfaces ne sont pas définies par moi, mais par l'internaute.
 
Par exemple il souhaite acheter le produit A qui coûte 15€/m2 sur une surface de 2 mètres de longueur sur 1,20 mètre de largeur.
 
J'ai créé le script qui calcule le prix en fonction de la surface, mais j'arrive pas à faire prendre en compte le résultat de ce script lors de l'ajout d'un produit dans le panier.

Reply

Marsh Posté le 28-11-2007 à 15:06:58    

Mais dans le panier, tu ne stockes que le code produit et la quantité (ici, en m²) !
Et quand tu affiches le contenu du panier, alors tu calcul le prix en faisant quantité commandée (en m²) par le PU !
 
Je ne vois pas le problème !  
Quand un internaute commande 2 marteaux, c'est pas toi qui défini la quantité choisie par l'internaute, c'est bien lui ! Là, c'est exactement la même chose !


Message édité par kao98 le 28-11-2007 à 15:07:44

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 28-11-2007 à 15:19:56    

Ben quoi ?
 
Il veux 2 mètres sur 1,2 mètres ?
 
Bah ça fait 2 x 1,2 = 2,4 m²...
 
Donc il commande 2,4 unités du produit A...

Reply

Marsh Posté le 28-11-2007 à 15:23:30    

Je sais pas pourquoi j'y avais pas pensé !
Merci Kao98
 
Je viens de le faire et ça fonctionne.
 
Et j'ai un autre petit problème.  
L'internaute entre la largeur et la longueur souhaitée dans 2 champs. Je ne sais pas pourquoi un bug se produit quand on met une virgule mais pas quand on met un point. Quand on met une virgule le résultat donne toujours 0, se qui est légèrement gênant ^^
Comment puis-je faire pour interdire l'utilisation de la virgule ? Ou quelqu'un saurait comment au contraire l'autoriser sans que le bug ne se produise ?
Les champs sont de simples <input type="text" name="longueur">

Reply

Marsh Posté le 28-11-2007 à 15:25:09    

>>MagicBuzz    
Oui j'y avais pas pensé. Je m'étais compliqué la vie à vouloir faire intervenir la base de donnée, je sais pas pourquoi. J'ai suivi les conseils de Kao et ça fonctionne ;)

Reply

Marsh Posté le 28-11-2007 à 15:25:09   

Reply

Marsh Posté le 28-11-2007 à 15:42:23    

Et j'ai un autre petit problème.  
L'internaute entre la largeur et la longueur souhaitée dans 2 champs. Je ne sais pas pourquoi un bug se produit quand on met une virgule mais pas quand on met un point. Quand on met une virgule le résultat donne toujours 0, se qui est légèrement gênant ^^  
Comment puis-je faire pour interdire l'utilisation de la virgule ? Ou quelqu'un saurait comment au contraire l'autoriser sans que le bug ne se produise ?  
Les champs sont de simples <input type="text" name="longueur">

Reply

Marsh Posté le 28-11-2007 à 15:49:40    

Normal.
 
PHP doit être configuré en anglais, et "1,2" c'est pas un nombre pour lui, donc ça fait 0.
 
Avec un JS tu peux bloquer la saisie de la virgule
 
Sinon, pour pas faire chier l'utilisateur avec des considération techniques, tu le laisse taper la virgule, et dans ton code PHP, avant d'effectuer tes calculs, tu remplace la virgule par un point.

Reply

Marsh Posté le 28-11-2007 à 15:50:37    

PS : n'oublie pas aussi de stocker les dimensions quelque part dans ton panier. Parceque 2,4 m² de ton produit, c'est pas forcément 2x1,2 m², donc au moment d'expédier le colis tu vas avoir l'air malin si tu ne sais pas exactement ce qu'il voulait ;)

Reply

Marsh Posté le 28-11-2007 à 16:11:31    

>>

Citation :

Sinon, pour pas faire chier l'utilisateur avec des considération techniques, tu le laisse taper la virgule, et dans ton code PHP, avant d'effectuer tes calculs, tu remplace la virgule par un point.


tu aurais une idée de se que ça donnerait comme code ?
 
>>

Citation :

PS : n'oublie pas aussi de stocker les dimensions quelque part dans ton panier. Parceque 2,4 m² de ton produit, c'est pas forcément 2x1,2 m², donc au moment d'expédier le colis tu vas avoir l'air malin si tu ne sais pas exactement ce qu'il voulait ;)


Bien vu;)

Reply

Marsh Posté le 28-11-2007 à 16:15:01    

Reply

Marsh Posté le 28-11-2007 à 16:21:58    

nickel ;)

Reply

Sujets relatifs:

Leave a Replay

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