Les Quantités du caddie un peu mieux contrôlées

4 messages dans ce sujet

Posté(e) · Signaler ce message

Aller, encore un truc ... y'en a qui bossent ! B)

Dans l'affichage du détail du caddie, vous avez un champ "Quantité" que vous pouvez modifier à volonté, quitte à y saisir n'importe quoi car il n'est absolument pas contrôlé ! ... ça avait plus que tendance à m'énerver ! :(

• Rien n'empêche d'y saisir 550873 et là, bonjour la gestion des stocks !

• Rien n'empêche d'y saisir y2b4 et là, essayez de faire "METTRE à JOUR" pour voir ce qu'il se passe ! :)

Enfin bref, ce champ doit être contrôlé, déjà au minimum pour que ça soit un champ numérique. Le fichier à modifier est (.../achat/modeles/caddie.php), au niveau du champ <input ... name="quantite[]" ... > La ligne originale de PEEL-SHOPPING 2.9.3 est la suivante :

<input type="text" size="3" name="quantite[]" value="<?php echo $quantite?>" />

1°) Contrôle champ numérique:

Bien mieux qu'un n-ième message d'avertissement à postériori "Le champ tartempion doit être...", il faut contrôler le champ directement à la saisie en contrôlant les touches-clavier frappées (contrôle des valeurs décimales des touches). Pour ça, utiliser les events (onKeypress & onKeydown) event.keycode pour IE et event.which pour Netscape... (ils font exactement la même chose, mais ça aurait été trop simple d'avoir une même syntaxe pour les deux navigateurs ! :D )

Il faut dons rajouter dans le champ input :

onKeypress="if(event.keyCode < 48 || event.keyCode > 57) event.returnValue = false; if(event.which < 48 || event.which > 57) return false;"

... bon, déjà là, c'est pas mal : dès qu'on frappe autre chose qu'un chiffre, le caractère n'est pas tapé ! :D

2°) Empêcher la frappe de la touche SUPPRIME:

Mais un petit piège : rien n'empêche le fonctionnement de la touche "suppression" du clavier ... il y a danger, car le champ peut être vide et, là aussi, essayez de faire METTRE à JOUR pour voir ce qu'il se passe dans ce cas ! ... de manière radicale, on va donc empêcher la frappe de la touche SUPPR (code décimal 46)

Rajouter dans le champ input :

onKeydown="if(event.keyCode == 46) event.returnValue = false; if(event.which == 46) return false;"

... pour modifier le champ Quantité, il faut donc procéder uniquement par "sélection/frappe" et non plus par "suppression/frappe" et le champ ne peut ainsi plus être vide ! ... bien, on avance...

3°) Limiter le nbre de caractères du champ:

Ici classiquement, utiliser le paramètre maxlength="x" des champs input. De base, il n'a pas de limite dans (caddie.php) => la fixer à x=2 ou 3, ce qui permet déjà de commander ou 99 ou 999 articles d'un même type !! :o

Pour limite à 2, rajouter dans le champ input :

maxlength="2"

Ce qui nous donne le champ input global :

<input type="text" size="3" maxlength="2" onKeypress="if(event.keyCode < 48 || event.keyCode > 57) event.returnValue = false; if(event.which < 48 || event.which > 57) return false;" onKeydown="if(event.keyCode == 46) event.returnValue = false; if(event.which == 46) return false;" name="quantite[]" value="<?php echo $quantite?>" />

====================

Personnellement, je vais fixer maxlength=1 ... je ne veux pas que les clients puissent "facilement" commander plus de 9 fois un même article (moyenne 20Kg et 300€). Ma ligne input est donc la suivante:

<input type="text" size="1" maxlength="1" onKeypress="if(event.keyCode < 49 || event.keyCode > 57) event.returnValue = false; if(event.which < 49 || event.which > 57) return false;" onKeydown="if(event.keyCode == 46) event.returnValue = false; if(event.which == 46) return false;" name="quantite[]" value="<?php echo $quantite?>" />

j'élimine donc en plus la touche/valeur 0 (code décimal 48) pour que la quantité ne soit jamais nulle.

====================

• Voilà encore un truc utile, je pense ... on peut sûrement faire mieux, mais c'est déjà mieux que RIEN ! ... :D ... mais ça serait qd même bien qu'un minimum de contrôle sur ce champ Quantité (au moins numérique) soit fait dans PEEL-SHOPPING de base, non ?

Aller, bon developpement à tous,

@+

PS : Ces contrôles agissent directement sur le champ Quantité de la page (caddie.php), mais elles n'empêchent pas le client "volontaire" de commander PLUS d'objets que la limite imposée ! ... En effet, il peut toujours, sans que le résultat n'en soit affecté dans le caddie, cliquer autant de fois qu'il le veut sur "Ajouter au Caddie" sur un produit dans le catalogue; le résultat dans le caddie sera correct ... mais je ne pense pas ainsi qu'il lui vienne l'envie de cliquer 550873 fois ! :D

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Aller, encore un truc ... y'en a qui bossent ! :D

Dans l'affichage du détail du caddie, vous avez un champ "Quantité" que vous pouvez modifier à volonté, quitte à y saisir n'importe quoi car il n'est absolument pas contrôlé ! ... ça avait plus que tendance à m'énerver ! :(

• Rien n'empêche d'y saisir 550873 et là, bonjour la gestion des stocks !

• Rien n'empêche d'y saisir y2b4 et là, essayez de faire "METTRE à JOUR" pour voir ce qu'il se passe ! :)

Enfin bref, ce champ doit être contrôlé, déjà au minimum pour que ça soit un champ numérique. Le fichier à modifier est (.../achat/modeles/caddie.php), au niveau du champ <input ... name="quantite[]" ... > La ligne originale de PEEL-SHOPPING 2.9.3 est la suivante :

1°) Contrôle champ numérique:

Bien mieux qu'un n-ième message d'avertissement à postériori "Le champ tartempion doit être...", il faut contrôler le champ directement à la saisie en contrôlant les touches-clavier frappées (contrôle des valeurs décimales des touches). Pour ça, utiliser les events (onKeypress & onKeydown) event.keycode pour IE et event.which pour Netscape... (ils font exactement la même chose, mais ça aurait été trop simple d'avoir une même syntaxe pour les deux navigateurs ! :D )

Il faut dons rajouter dans le champ input :

... bon, déjà là, c'est pas mal : dès qu'on frappe autre chose qu'un chiffre, le caractère n'est pas tapé ! :D

2°) Empêcher la frappe de la touche SUPPRIME:

Mais un petit piège : rien n'empêche le fonctionnement de la touche "suppression" du clavier ... il y a danger, car le champ peut être vide et, là aussi, essayez de faire METTRE à JOUR pour voir ce qu'il se passe dans ce cas ! ... de manière radicale, on va donc empêcher la frappe de la touche SUPPR (code décimal 46)

Rajouter dans le champ input :

... pour modifier le champ Quantité, il faut donc procéder uniquement par "sélection/frappe" et non plus par "suppression/frappe" et le champ ne peut ainsi plus être vide ! ... bien, on avance...

3°) Limiter le nbre de caractères du champ:

Ici classiquement, utiliser le paramètre maxlength="x" des champs input. De base, il n'a pas de limite dans (caddie.php) => la fixer à x=2 ou 3, ce qui permet déjà de commander ou 99 ou 999 articles d'un même type !! :o

Pour limite à 2, rajouter dans le champ input :

Ce qui nous donne le champ input global :

====================

Personnellement, je vais fixer maxlength=1 ... je ne veux pas que les clients puissent "facilement" commander plus de 9 fois un même article (moyenne 20Kg et 300€). Ma ligne input est donc la suivante:

j'élimine donc en plus la touche/valeur 0 (code décimal 48) pour que la quantité ne soit jamais nulle.

====================

• Voilà encore un truc utile, je pense ... on peut sûrement faire mieux, mais c'est déjà mieux que RIEN ! ... :D ... mais ça serait qd même bien qu'un minimum de contrôle sur ce champ Quantité (au moins numérique) soit fait dans PEEL-SHOPPING de base, non ?

Aller, bon developpement à tous,

@+

PS : Ces contrôles agissent directement sur le champ Quantité de la page (caddie.php), mais elles n'empêchent pas le client "volontaire" de commander PLUS d'objets que la limite imposée ! ... En effet, il peut toujours, sans que le résultat n'en soit affecté dans le caddie, cliquer autant de fois qu'il le veut sur "Ajouter au Caddie" sur un produit dans le catalogue; le résultat dans le caddie sera correct ... mais je ne pense pas ainsi qu'il lui vienne l'envie de cliquer 550873 fois ! :D

super ce bout de code , mais ou faut il le mettre et dans quelle page ? B)

j'ai la version premium 2.8

philippe

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

super ce bout de code , mais ou faut il le mettre et dans quelle page ? :(

j'ai la version premium 2.8

philippe

c'était inscrit : (.../achat/modeles/caddie.php)

mais je ne sais pas si c'est le meme shema de fonctionnement pour la premium;;;

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

super ce bout de code , mais ou faut il le mettre et dans quelle page ? :D

j'ai la version premium 2.8

philippe

Arf ! :( ... je sais bien que j'ai été bavard, mais tout est dans le post ! ... et au début en plus !

• Pour la version PREMIUM, je ne peux pas être certain (... vu que j'l'ai pô :) ), mais la structure doit pas être si éloignée de celle, très bien foutue, de la version SHOPPING, nan ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping