CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Récapitulatif commande jQuery

Fire_Storm
Fire_Storm
Niveau 10
22 novembre 2013 à 20:46:43

Salut.

Pour un petit projet de vente j'aurai besoin de faire un récapitulatif automatique.

Je m'explique imaginons qu'on aie les produits A B et C, à 1 2 et 3 €

Si le client choisi 2 produits A j'aimerai que directement en dessous il y ai un récapitulatif des produits qu'il va commander genre:

2 x produit A: 3 €

Là où je coince c'est quel serait le moyen le plus simple pour faire passer ces infos là (sachant que je ne veux pas recharger la page) dans un tableau récapitulatif.

J'ai pensé à un tableau JSON qui contiendrait les infos que je veux, puis à transférer et traiter ce tableau pour faire un récapitulatif mais ça me parait lourd et pas très joli (et un peu de mal à le faire aussi ^^).

L'autre solution serait de passer par de l'ajax qui va donc appeler une page et retourné pour aller chercher les infos, ça évitera de devoir les stocker sur la partie frontend ce qui me gêne un peu (même si au final les 2 infos dont j'ai besoin sont l'id de l'article et la quantité, le reste sera vérifié du coté serveur).

Bref si quelqu'un a une idée ça serait bien sympa de sa part d'éclairer ma lanterne. ^^

vava740
vava740
Niveau 10
23 novembre 2013 à 10:13:06

Les produits sont sur la même page (cas d'un bundle ou produit groupé), ou sur des pages différentes ?

Si ils sont sur des pages différentes, tu veux que le récapitulatif apparaisse systématiquement sur chaque page produit ?

Le fait de "choisir un produit" se matérialise par un envoi de formulaire et un enregistrement côté serveur ?

Fire_Storm
Fire_Storm
Niveau 10
23 novembre 2013 à 14:39:31

Non tout se fait via la même page.

J'ai "résolu" le problème avec des champs cachés pour chaque produit, un bouton commander et lorsqu'on appuie sur ce dernier je crée en bas un récapitulatif de la commande ainsi que les champs cachés et leur valeur (c'est ce tableau qui sera au final envoyé).

C'est peut être pas la solution la plus "propre" mais bon c'était pour moi une des plus simples.

Fire_Storm
Fire_Storm
Niveau 10
28 novembre 2013 à 15:43:23

Nouveau problème; si j'ai réussi à faire ce que je voulais pour chaque article j'ai plus de mal à le faire pour les options liées à cet article (un article peut avoir une option (genre vous commandez une frite, vous voulez de la sauce en plus vous cochez la case par exemple).

Un article peut avoir plusieurs options qui lui sont liées (et pour éviter les doublons une option peut se retrouver dans plusieurs articles)

Le problème que j'ai déjà c'est de récupérer avec javascript toutes les options d'un article (j'ai mis comme name options[] étant donné qu'il peut y en avoir plusieurs, faudra donc surement une boucle).

Pour le traitement en PHP j'ai pensé à faire un tableau mais est ce qu'un tableau à plusieurs dimensions peut passer ? Genre foutre les valeurs dans des champs de type hidden et avec comme name; article[]["article_id"] et le second champ: article[]["option_id"] ?

vava740
vava740
Niveau 10
28 novembre 2013 à 17:30:42

Tu peux récupérer tes options en JS avec document.getElementsByName('options[]').

Et oui tu peux passer un tableau à plusieurs dimentions, PHP est capable de reconstituer les crochets dans le nom d'un champ POST en tableaux et tableaux associatifs imbriqués.

Le problème est que quand tu mets des crochets vides, ça crééera systématiquement un nouvel élément dans le tableau :

article[][article_id] = 1
article[][option_id] = 1

Donnera :

array(
    array(
        'article_id' => 1,
    ),
    array(
        'option_id' => 1,
    ),
)

Pour attribuer plusieurs offsets à un même élément de tableau, tu n'as pas d'autre choix que de préciser le numéro de l'index, ainsi :

article[0][article_id] = 1
article[0][option_id] = 1
article[1][article_id] = 2
article[1][option_id] = 2

Fire_Storm
Fire_Storm
Niveau 10
30 novembre 2013 à 14:30:08

Ouaip c'est bien ce que je pensais.

Sinon bête question mais comment fait t-on pour récupérer une liste de checkbox d'un même formulaire (mon problème c'est que j'ai forcément pleins de formulaire, puisque chaque article dispose de son bouton "commander" et que toutes les solutions me disent de prendre les éléments du document (or moi je veux les éléments du formulaire sur lequel la personne a cliqué, pas tout le document).

vava740
vava740
Niveau 10
30 novembre 2013 à 14:41:10

form.nom_des_checkbox

En admettant que form est une variable de type HTMLFormElement.

Ou en absolu :

document.forms.nom_du_formulaire.nom_des_checkbox

Ça te donne une NodeList (comme getElementsByName) mais spécifique à ton formulaire.

Fire_Storm
Fire_Storm
Niveau 10
04 décembre 2013 à 12:34:35

Hem j'ai finalement trouvé la cause de mon soucis qui n'avait rien avoir avec le formulai en fait, le this.form fonctionnait parfaitement mais le soucis n'était pas là... xD

Grosso modo en utilisant le même nom plusieurs fois, on comprend que tu veux utiliser un tableau, par contre il y a des endroits où il n'y avait qu'une checkbox, or là pour javascript il n'y a évidemment pas lieu de faire un tableau. J'avais donc beau essayer d'accéder au premier élément, on me rétorquait qu'il n'était pas défini pour la simple et bonne raison que le tableau n'existait pas.

La solution un peu barbare que j'ai utilisé c'est de créer volontairement un champ caché du même nom (mais qui ne sera pas pris en compte au final) pour l'obliger à créer un tableau même si il n'y a qu'une seule option.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment