Variables créées dans une boucle

Résolu
jacky quartz Messages postés 19 Date d'inscription dimanche 12 novembre 2000 Statut Membre Dernière intervention 27 juin 2007 - 14 mars 2007 à 22:46
jacky quartz Messages postés 19 Date d'inscription dimanche 12 novembre 2000 Statut Membre Dernière intervention 27 juin 2007 - 21 mars 2007 à 19:35
Bonsoir à tous.
J'ai un souci avec des variables.
Sans rentrer dans les détails (pour commencer), je suis en train de faire un panier d'achat.

_level10:
J'ai des 3 variables _global qui sont "modifiées" par chacun de mes swf (_global.nom_prod, _global.taille et _global.gender)
Ces 3 vars prennent les valeurs suivant le swf (bouton > acheter cet article) et j'incrémente une autre globale, qui est mon nombre total d'article, appellée _global.nbre_commande.

_level11 :
J'ai mon panier, qui vient quand on clique pour le faire venir (à partir du _root)
Dedans, j'ai créé et dupliqué un mc, nommé com, en fonction de  _global.nbre_commande
for (var i=1; i < _global.nbre_commande+1; i++) {
        theText.com.duplicateMovieClip("com"+i,i);
       theText["com"+i]._y = theText["com"+(i-1)]._y + 25;
    //trace (panier_cont.theText["com_"+i]._y);
        theText["com"+i].modele.text = _global.nom_prod;
        theText["com"+i].gender.text = _global.gender;
        theText["com"+i].taille.text = _global.taille;
}

Je clique sur mes boutons acheter (swf différents appellés) ça s'incrémente bien, j'ai donc plusieurs movie com dans mon tableau,
com1, com2, etc... (le com tout court je l'ai envoyé en _visible false, car je ne l'ai pas crée en AS, mais graphiquement, je pense pas qu'il y ait de souci)
Donc, ça commence par com1.

Dans mon mc com (générique, servant de modéle aux autres) :
J'ai des champs dyn : modele, taille, gender, qte, prix

En fait, j'aimerai pouvoir créer des var "à  la volée", de la même façon que je le fais pour les mc com,
theText.com.duplicateMovieClip("com"+i,i);

mais avec mes vars global...
Peut-on crée des variables, avec une même base, mais en ajoutant un index (le numéro de la commande qui s'incrémente, _global.nbre_commande) ??

Aussi bien que com1, com2, ["com"+i] etc...
Je voudrais faire, var com1, var com2, etc...[var com +i] qui contiendrait chacune, mes 3 vars globales, _global.nom_prod, _global.taille et _global.gender

Merci beaucoup pour le temps que vous prendrez à essayer de m'aider

11 réponses

cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
15 mars 2007 à 07:42
Bonjour,

tu sais difficilement créer des variables à la volée, par contre, si tu utilises un tableau (Array), ton probleme sera résolu.

_global.CommandesVars= new Array()

ensuite, lorsque tu ajoutes un produit au panier, tu crées un nouvel objet
obj = {produit:_global.nom_prod, taille:_global.taille, genre: _global.gender}

et tu places cet objet dans ton tableau
_global.CommandesVars[_global.nbre_commande] =obj

ensuite, pour accder à tes informations, prenons comme exemple la commande 1
 pour connaître le nom du produit tu fais
_global.CommandesVars[1].produit

@+
3
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
15 mars 2007 à 13:10
Re !

dans flash, tu crées une seule chaine de caractère a envoyer à php
- 1 -
rassembler toutes les commandes en une chaine de caractères unique

srtingPourPhp= ""

for (i=0;i<_global.CommandesVars.length;i++){
var tmp=_global.CommandesVars[i].produit+"-!-"
tmp+= _global.CommandesVars[i].taille+"-!-"
tmp+ =_global.CommandesVars[i].sexe+"-!!!-"
srtingPourPhp+=tmp
}

ensuite tu envois ta variable à php

-2-
Dans php tu exploses ta variable selon les séparateurs qui ont été placé en actionscript

exploses la variable selon "-!!!-" et tu auras un tableaux dont chaque enregistrement contiendra une commande

exploses la commande selon "-!-" et tu récupères sous php les valeurs de tes variables produit, taille et sexe...

@+
3
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
20 mars 2007 à 10:06
Salut,

essaye comme çà :

var montantCommande=0
for (i=0; i < _global.nbre_commande; i++) {
    montantCommande+=_global.CommandesVars[i+1].tarif   
}
panier_cont.total_com = montantCommande

@+
3
jacky quartz Messages postés 19 Date d'inscription dimanche 12 novembre 2000 Statut Membre Dernière intervention 27 juin 2007
15 mars 2007 à 09:59
Ok Girou.
Et merci pour ta réponse.
J'avais bien la sensation que ça tournait autour d'un Array, mais moi et la syntaxe...
Y'aurai aussi les Shared Object apparemment, mais la taille de stockage est fonction de l'internaute, du coup...

Je vais checker ça immédiatement et je reviens quoi qu'il en soit en espérant cliquer sur Réponse acceptée ! 
(ou alors je suis trop mauvais...)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jacky quartz Messages postés 19 Date d'inscription dimanche 12 novembre 2000 Statut Membre Dernière intervention 27 juin 2007
15 mars 2007 à 10:31
Zut, juste une chose..
J'imagine que mon tableau _global.CommandesVars=new Array() devrait être crée sur le swf du panier au level 11 (j'ai laissé la frame 1 vide avec un stop. Le panier n'apparait pas, mais je peux y préparer mes commandes)

Le souci c'est que mes boutons vienne de mes swf sur le level 10...

J'ai le droit de placer un objet dans mon tableau
_global.CommandesVars[_global.nbre_commande]=obj

Alors qu'il n'est ni au même level ni dans le même swf ?? (j'avais buté aussi là-dessus dans mes tests)

0
jacky quartz Messages postés 19 Date d'inscription dimanche 12 novembre 2000 Statut Membre Dernière intervention 27 juin 2007
15 mars 2007 à 11:28
Super !!!!!
Ca fonctionne bien.. Chacune de mes var globales est bien enregistrée dans :

obj = {produit:_global.nom_prod, taille:_global.taille, sexe: _global.gender};

Le souci que j'avais, c'étais qu'à l'appel du panier, je reconstruisais à chaque fois le Array...

Du coup j'avais :
pour i = 1,  une triplette de bons résultats
pour i = 2,  la premiére triplette "undefined" et la seconde bonne
pour i = 3,  la premiére triplette "undefined"  la seconde "undefined" et la troisiéme bonne,
etc...

Cool..

Maintenant le dernier souci, ça va être de pouvoir injecter dans mes différents movies com (com1, com2, etc...) l'objet qui correspond.

Ce qui va représenter (pour les courageux qui ont suivi ce gros mic-mac..) :
 
mc com1
_global.CommandesVars[1].produit);
_global.CommandesVars[1].taille);
_global.CommandesVars[1].sexe);

mc com2

_global.CommandesVars[2].produit);

_global.CommandesVars[2].taille);

_global.CommandesVars[2].sexe);

etc....

Du coup, mes champs de texte dyn seront bien renseignés avec des infos différentes
Il ne me restera plus qu'à les envoyer à Php > BDD

Merci beaucoup Girou, t'es un chef !
0
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
15 mars 2007 à 11:40
Content d'avoir pu t'aider !!!

P.S. je suis qu'un sous-chef 

@+
0
jacky quartz Messages postés 19 Date d'inscription dimanche 12 novembre 2000 Statut Membre Dernière intervention 27 juin 2007
15 mars 2007 à 11:50
bon ben tiens...
Une toute derniére question et j'arrête de jouer mon lourdingue...

Pour l'envoi en Post, je vais avoir mes triplettes de var dans chacun de mes mc com (com1, com2...)

Tu me conseilles quoi au niveau du SendAndLoad ?
Je peux boucler à l'intérieur ?

Mon idée serait d'envoyer le _global.nbre_commande en dehors de cette boucle, et que Php boucle à son tour pour extraire à chaque passage de i les 3 infos nécessaires.

Le souci c'est que mes données sont dans un Array.
C'est pas comme si j'envoyais : var_to_php = this["com"+i].nom_prod.text;
Là c'est pour un champ de texte (en plus php recevrait x version de la variable var_to_php, et les ecraserait à chaque fois...

Ca ressemblerait à quoi à peu prés ?

Merci encore pour ta patience...
0
jacky quartz Messages postés 19 Date d'inscription dimanche 12 novembre 2000 Statut Membre Dernière intervention 27 juin 2007
15 mars 2007 à 13:15
Moi j'appelle pas ça être un sous-chef....

J'appelle ça être un vieux chibane de l'entraide !!

Et je remercie beaucoup pour ton aide

@+
0
jacky quartz Messages postés 19 Date d'inscription dimanche 12 novembre 2000 Statut Membre Dernière intervention 27 juin 2007
19 mars 2007 à 20:59
Hello...

Je reviens car j'ai un autre souci.
J'ai pas voulu créer un nouveau sujet, car c'est en droite ligne de mon dév.

Je cherche à écrire ça dans une boucle, mais je m'y perd un peu..
if (_global.nbre_commande 1) { panier_cont.total_com _global.CommandesVars[1].tarif; }if (_global.nbre_commande 2) { panier_cont.total_com _global.CommandesVars[1].tarif + _global.CommandesVars[2].tarif; }if (_global.nbre_commande 3) { panier_cont.total_com _global.CommandesVars[1].tarif + _global.CommandesVars[2].tarif + _global.CommandesVars[3].tarif; }
 etc...

Je pense que la soluce c'est une boucle dans une boucle, dans ce genre :

for (i=0; i < _global.nbre_commande+1; i++) {
    s = _global.CommandesVars[i].tarif;
    t = i + 1;
    u = s + t;
    for (j=1; j < _global.nbre_commande+1;
    if (_global.nbre_commande == i) { 
    panier_cont.total_com = s + s[t];
    }
}

Mais ce que je viens d'écrire est faux de toute façon par rapport à ce que j'aimerai mettre en place..
Merci pour le coup de main providentiel.
J'ai vraiment du mal avec la syntaxe..
0
jacky quartz Messages postés 19 Date d'inscription dimanche 12 novembre 2000 Statut Membre Dernière intervention 27 juin 2007
21 mars 2007 à 19:35
Je te remercie beaucoup, ça fonctionne impecc !!
0
Rejoignez-nous