Problème avec un caddie (ajouter un article déjà dedans) [Résolu] - PHP - Programmation
Marsh Posté le 08-05-2005 à 21:53:27
A mon avi c'est ta base de donnée qui est mal conçue... outre a un php aussi clair que de l'eau du gange (tm).
Juste... rassure moi ... c'est pas a des fins commerciaux ton truc j'espere?
Marsh Posté le 08-05-2005 à 22:43:48
Non, c'est pour un projet pour les cours... (et je n'ai jamais fait de php en cours donc j'ai chopé des idées par si et par là...).
Mais pourquoi tu me demandes si c'est à but commercial? Si jamais ce serait le cas, çà ferait quoi?
PS: je ne vendrais pas un truc où j'ai cherché des idées à droite et à gauche...
Marsh Posté le 08-05-2005 à 22:46:16
Ca ferais qu'il faudrait que tu me passes l'adresse , parceque si tout le code est ecrit comme ça ca sera pas trop trop dur d'entrer en douce et de s'acheter pas mal de trucs pas cher du tout .
Cependant mon idée reste qu'a mon avi c'est ta base de donnée qui est mal foutue .. et donc que c'est pas le top de recuperer tout ca comme ça..
Marsh Posté le 08-05-2005 à 23:17:26
Citation : parceque si tout le code est ecrit comme ça ca sera pas trop trop dur d'entrer en douce et de s'acheter pas mal de trucs pas cher du tout . |
Pourquoi? Il y a quoi de travers? -> Je débute!!!
Marsh Posté le 08-05-2005 à 23:30:52
Bon pour un debutant il est pas mal franchement, il y a quelques trucs maladroits (genre on prefere separer l'html du php (=> templates,parseur xml,...), on fait quelques magouilles sur les sessions pour mieux les securiser, on met plus de commentaires,..) et quelques trucs qui risquent d'exploser (genre le mysql_fetch_array qui risque de planter s'il n'y a aucun resultat..)
Mais a part ça il est bien mieux que la pluspart des sites de debutants qu'on voit. Parcontre #3, remodelise ta base de donnée, je suis sur que tu peux regler ton probleme en mettant mieux les tables
Marsh Posté le 08-05-2005 à 23:44:33
Attention, j'ai dit que j'ai chopé des idées, où plutôt des bout de codes par ci et par là...
Donc je ne mérite pas de félicitation.
Le code AjouterUnProduit n'est pas du tout de moi.
Mais bon je comprends ce qu'il y a dans le code (encore heureux, si je demande de l'aide).
Mais je ne vois pas ce que je dois changer dans ma base de données...
Marsh Posté le 08-05-2005 à 23:53:00
Voici ma table produits:
CREATE TABLE `produits` (
`ID` tinyint(4) NOT NULL auto_increment,
`prix` decimal(10,2) NOT NULL default '0.00',
`nom` varchar(255) NOT NULL default '',
`description` text NOT NULL,
`caracteristique` text NOT NULL,
`cat` int(4) NOT NULL default '0',
PRIMARY KEY (`ID`)
)
Marsh Posté le 09-05-2005 à 00:02:05
Ok non en fait ca a l'air d'aller alors ça doit plutot etre dans le php... corrige moi si je me trompe (ton code me flingue un peu les yeux), quand qqn achete un produit, tu créé une variable de session avec l'id du produit, ou si elle existe , tu l'incremente?
Marsh Posté le 09-05-2005 à 02:31:48
essaye de var_dump($paramID) quand tu ajoute un truc au caddie, jpense que c'est $paramID qui a la mauvaise valeur
Marsh Posté le 09-05-2005 à 18:39:01
Cà parait correct.
Si je mets un var_dump($paramID) à AjouterUnArticle.php et si l'ID de l'article est 22 celà me renvoit:
string(2) "22"
Marsh Posté le 09-05-2005 à 19:02:26
Je viens de faire un var_dump($_SESSION['tab']);
Et je vois que l'erreur est présente:
Quand je rajoute un article (id=22) position 1 du caddie (nom=lampe) celà me retourne çà:
array(1) { [0]=> array(2) { [0]=> string(2) "22" [1]=> int(1) } }
Je rajoute un 2ème article (id=24) et cette article prend la position 1 car nom=bougie (et vu que çà se classe par ordre alphabétique... donc çà me renvoit çà:
array(2) { [0]=> array(2) { [0]=> string(2) "22" [1]=> int(1) } [1]=> array(2) { [0]=> string(2) "24" [1]=> int(1) } }
quand je rajoute à nouveau l'article avec id=22:
array(2) { [0]=> array(2) { [0]=> string(2) "22" [1]=> int(2) } [1]=> array(2) { [0]=> string(2) "24" [1]=> int(1) } }
Voilà il a incrémenté le array(2) au lieu du array(1)...
Quand je mets 2 fois l'article id=22:
Je mets une première fois dans le caddie:
array(1) { [0]=> array(2) { [0]=> string(2) "22" [1]=> int(1) } }
Puis une 2ème fois:
array(1) { [0]=> array(2) { [0]=> string(2) "22" [1]=> int(2) } }
Quelqu'un peut m'aider à corriger ce problème?
Marsh Posté le 09-05-2005 à 19:47:40
esox_ch a écrit : A mon avi c'est ta base de donnée qui est mal conçue... outre a un php aussi clair que de l'eau du gange (tm). |
Le (tm) c'est pour moi.
Marsh Posté le 09-05-2005 à 20:29:42
C'est bien pour ça que je l'ai spécifié
Marsh Posté le 09-05-2005 à 20:36:41
PS: pour le code, j'y peux rien, c'est le forum étant donné que la taille est limité en largeur...
Mais sinon, personne n'a une solurtion pour moi?
Marsh Posté le 10-05-2005 à 00:30:29
denis_de_strasbourg a écrit : PS: pour le code, j'y peux rien, c'est le forum étant donné que la taille est limité en largeur... |
C'est pour ça qu'en general quand on code on s'arrenge pour avoir au maximum 80 caracteres sur la meme ligne ...
Marsh Posté le 14-05-2005 à 15:58:14
Bon ben là je viens d'avancer!!!
Il ne me mélange plus les quantitées, çà marche nikel, sauf que pour l'instant il ne m'affiche plus la quantitée...
Pour que çelà marche j'ai réjouter dans le code du panier ces 2 lignes:
$_SESSION['tab'][$paramID][0] == $paramID;
$_SESSION['tab'][$paramID][1] == $paramQ;
$paramID correspondant à l'ID du produit et $paramQ à la quantitée sélectionné.
Marsh Posté le 14-05-2005 à 16:16:33
Finalement çà marche pas...
Mince, on peut pas supprimer un de ces messages... je viens de m'appercevoir que les 2 lignes que j'ai rajouté tout à l'heure c'était des test d'égalités (je me suis même pas rendu compte que j'avais mis 2 = )
Marsh Posté le 08-05-2005 à 21:21:32
Bonjour à tous! Je me bats avec le caddie d'un site de commerce.
Voici à quoi le caddie ressemble une fois remplit:
Le problème que j'ai est que lorsque je choisis de rajouter un article qui est déjà dans ma liste de caddie, c'est pas la bonne quantité qui s'incrémente. C'est la quantité d'un autre objet qui s'incrémente.
J'ai remarqué que çà marche de la façon suivante:
/* C'est un classement par ordre alphabétique */
* je mets l'article 'B' dans le caddie.
Si je choisis de remettre l'article 'B', l'article s'incrémente sans problème.
* je mets l'article 'A' dans le caddie. Et vu que les articles se classent dans l'ordre alphabétique, l'article 'A' prend la première place (la place de 'B'), et l'article 'B' prend la seconde place dans le caddie.
Jusque là ok. Mais si je choisis à nouveau de mettre l'article 'B' dans le caddie, ce n'est pas ce dernier qui s'incrémente, mais l'article 'A'. Il incrémente l'article qui est en haut de la liste des produits comme l'article 'B' l'était tout à l'heure...
Je me suis donc dit, que je vais classer les articles par ordre de l'heure où ils ont été rajoutés, du plus anciens au plus récent. Du coup, le caddie incrémentera les bons articles. Mais je n'arrive pas à classer par date correctement.
$sql = "SELECT nom, prix FROM produits where id IN ($chaine) order By date('H:i:s')";
Bon le mieux c'est pas de corriger de cette manière, mais je ne trouve pas la vrai erreur.
Bon voici les codes sources... si qq1 a une idée...
Message édité par denis_de_strasbourg le 17-05-2005 à 11:41:47