Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

déclarer des variables tableaux

11 réponses
Avatar
Bor
Bonjour

le code suivant :

var s=new Array(5,5);
s["a",1]="a1";
s["a",2]="a2";
s["a",3]="a3";
s["b",1]="b1";
s["b",2]="b2";
alert(s["a",2]);

n'affiche pas a2 mais b2

qu'est-ce qui ne va pas ??

merci

10 réponses

1 2
Avatar
YD
le code suivant :

var s=new Array(5,5);


Il n'existe pas d'Array à plusieurs dimensions en
JavaScript.

s["a",1]="a1";
s["a",2]="a2";
s["a",3]="a3";
s["b",1]="b1";
s["b",2]="b2";
alert(s["a",2]);

n'affiche pas a2 mais b2

qu'est-ce qui ne va pas ??


Cet affichage est absolument normal compte tenu
du rôle de la virgule. En fait tout ton code se
résume à :

s[1]="a1";
s[2]="a2";
s[3]="a3";
s[1]="b1";
s[2]="b2";
alert (s[2]);

Pour t'aider à avancer, avec les Arrays il vaut mieux
n'utiliser que des indices numériques positifs ou nuls
(la numérotation des éléments commence à 0 et non à 1).
Pour créer un tableau multidimensionnel on crée un Array
d'Arrays, par exemple :

var s= new Array();
s[0]=["a0", "a1", "a2"];
s[1]=["b0", "b1", "b2"];
alert(s[0][1]);

--
Y.D.

Avatar
Bor
Dans news:43f8caa9$0$18319$,
var s= new Array();
s[0]=["a0", "a1", "a2"];
s[1]=["b0", "b1", "b2"];
alert(s[0][1]);


J'efface tout et je recommence. Je rame en javascript, je suis tout le tps
cote serveur en PHP/MySQL.

Je recupere en php des valeurs de deux tables SQL :

table localisation
------------------------
ident lib
GLR galerie rouge
GLV galerie verte
ETB etage bleu
ETR etage rouge

table boite
------------------------
ident lib localisation
BT1 boite 1 GLV
BT2 boite 2 ETB
BT3 boite 3 ETR
BT4 boite 4 GLV
CS1 caisse 1 GLV
CS2 caisse 2 GLR

Je voudrais faire un formulaire avec deux <select> dedans.
le premier select pour choisir une localisation parmi la liste des
localisations disponibles. Le second pour choisir une boite parmi les boites
disponibles pour la localisation choisie.
La ou je bloque c'est qu'il faudrait que le second select soit rafraichi
suivant ce qui a ete choisi dans le premier (onChange je pense sur le
premier select).
J'ai envisage de tout mettre dans un tableau. Toutes les references sont en
alphanumerique c'est pourquoi je cherchais a faire des tableaux en
specifiant directement les references alpha ce qui aurait pour effet
d'eviter de tout retranscrire en numerique.

A la validation du formulaire, il me faut connaitre la reference de la boite
choisie ainsi que la reference de la localisation (cette derniere decoule de
la boite choisie donc ce n'est pas un reel souci pour la localisation).

Avez-vous une solution simple par rapport a ce que je veux ? Je ne sais meme
pas si j'ai ete comprehensible ? Ne pas hesiter car la je me trouve coince,
n'ayant que de faibles connaissances en javascript.

Merci pour toute votre aide. Merci beaucoup.

Avatar
Olivier Miakinen

Je recupere en php des valeurs de deux tables SQL :

table localisation
------------------------
ident lib
GLR galerie rouge
GLV galerie verte
ETB etage bleu
ETR etage rouge

table boite
------------------------
ident lib localisation
BT1 boite 1 GLV
BT2 boite 2 ETB
BT3 boite 3 ETR
BT4 boite 4 GLV
CS1 caisse 1 GLV
CS2 caisse 2 GLR


<aparté>
Juste une remarque un peu hors sujet : je te conseille de régler ton
logiciel de nouvelles pour qu'il utilise une police à espacement fixe
(Courier New par exemple), aussi bien pour l'affichage que pour la
composition des articles. Ainsi, tu auras beaucoup moins de difficultés
pour présenter des tables, et nous pour les lire (bon, ici ce n'est pas
« très » cassé, mais cela pourrait être pire).

table localisation
--------------------
ident lib
GLR galerie rouge
GLV galerie verte
ETB etage bleu
ETR etage rouge

table boite
----------------------------
ident lib localisation
BT1 boite 1 GLV
BT2 boite 2 ETB
BT3 boite 3 ETR
BT4 boite 4 GLV
CS1 caisse 1 GLV
CS2 caisse 2 GLR
</>

Je voudrais faire un formulaire avec deux <select> dedans.
le premier select pour choisir une localisation parmi la liste des
localisations disponibles. Le second pour choisir une boite parmi les boites
disponibles pour la localisation choisie.
La ou je bloque c'est qu'il faudrait que le second select soit rafraichi
suivant ce qui a ete choisi dans le premier (onChange je pense sur le
premier select).
J'ai envisage de tout mettre dans un tableau. Toutes les references sont en
alphanumerique c'est pourquoi je cherchais a faire des tableaux en
specifiant directement les references alpha ce qui aurait pour effet
d'eviter de tout retranscrire en numerique.

A la validation du formulaire, il me faut connaitre la reference de la boite
choisie ainsi que la reference de la localisation (cette derniere decoule de
la boite choisie donc ce n'est pas un reel souci pour la localisation).

Avez-vous une solution simple par rapport a ce que je veux ?


Je vois au moins deux approches possibles (en dehors de celle du tableau
de tableaux, remplaçant ton idée initiale de tableau à double entrée).

------

La première consisterait à associer un tableau à chaque <option> de ton
premier <select>. Un truc du genre :

<select name="localisation">
<option value="GLR" id="loc-GLR">galerie rouge</option>
<option value="GLV" id="loc-GLV">galerie verte</option>
<option value="ETB" id="loc-ETB">etage bleu</option>
<option value="ETR" id="loc-TER">etage rouge</option>
</select>

Et dans le JavaScript :

var locGLV = document.getElementById("loc-GLV");
locGLV.boites = new Array();
locGLV.boites["BT1"] = "boite 1";
locGLV.boites["BT4"] = "boite 4";
locGLV.boites["CS1"] = "caisse 1";

(idem pour loc-GLR, loc-ETB et loc-TER)

------

La deuxième consisterait à créer au départ tous les <select> possibles
(un pour les localisations, N pour les boîtes), mais en cachant tous
ceux des boîtes en CSS (display: none). Le choix d'une option dans le
select de localisation déclencherait juste l'affichage du select des
boîtes approprié (en recachant les autres).

------

Espérant avoir aidé,
--
Olivier Miakinen

Avatar
YD
Je voudrais faire un formulaire avec deux <select> dedans.
le premier select pour choisir une localisation parmi la liste des
localisations disponibles. Le second pour choisir une boite
parmi les boites


disponibles pour la localisation choisie.
La ou je bloque c'est qu'il faudrait que le second select soit
rafraichi


suivant ce qui a ete choisi dans le premier (onChange je pense
sur le


premier select).
J'ai envisage de tout mettre dans un tableau. Toutes les
references sont en


alphanumerique c'est pourquoi je cherchais a faire des tableaux en
specifiant directement les references alpha ce qui aurait pour
effet


d'eviter de tout retranscrire en numerique.

A la validation du formulaire, il me faut connaitre la reference
de la boite


choisie ainsi que la reference de la localisation (cette
derniere decoule de


la boite choisie donc ce n'est pas un reel souci pour la
localisation).



Avez-vous une solution simple par rapport a ce que je veux ?


Je vois au moins deux approches possibles (en dehors de celle du
tableau

de tableaux, remplaçant ton idée initiale de tableau à double
entrée).


------

La première consisterait à associer un tableau à chaque <option>
de ton

premier <select>. Un truc du genre : [...]


Étant donné que l'on ne se sert d'aucune propriété ou méthode
spécifique aux Arrays (indices, length et les méthodes propres),
je me contenterai d'un Object générique...

Par exemple :

<script type="text/javascript">
var boxes={
GLR: { CS2: "caisse 2"},
GLV: { BT1: "boîte 1", BT4: "boîte 4", CS1: "caisse 1"},
ETB: { BT2: "boite 2"},
ETR: { BT3: "boite 3"}
} //Cette variable doit être générée par le PHP...

function fillBoxes(o){
var opt, k, e, b=o.form.boites;
for(k=b.options.length;k>=0;k--)
b.options[k]=null;
for(e in boxes[o.value]){
opt=document.createElement("OPTION");
opt.value=e;
opt.text=boxes[o.value][e];
b.options[b.options.length]=opt;
}
}
</script>

Avec dans le HTML :

<form>
<select name="localisation" onchange="fillBoxes(this)">
<option value="">"Choisissez..."</option>
<option value="GLR">galerie rouge</option>
<option value="GLV">galerie verte</option>
<option value="ETB">etage bleu</option>
<option value="ETR">etage rouge</option>
</select>
<select name="boites">
</select>
</form>

J'ai choisi l'écriture littérale pour les objets provenant des
tables MySQL, car le code PHP pour les produire me semble plus
léger à produire et, partant, plus facile à maintenir. Un petit
effort de compréhension est nécessaire pour les lire...


La deuxième consisterait à créer au départ tous les <select>
possibles

(un pour les localisations, N pour les boîtes), mais en cachant tous
ceux des boîtes en CSS (display: none). Le choix d'une option dans le
select de localisation déclencherait juste l'affichage du select des
boîtes approprié (en recachant les autres).


C'est certainement la meilleure solution pour quelqu'un ne
maîtrisant pas un minimum le JavaScript.

--
Y.D.


Avatar
Olivier Miakinen

[ Citation illisible, avec Thunderbird ]


Si tu n'as rien fait d'autre que répondre à mon article, je ne saurais
trop te conseiller de virer complètement le format flowed, qui est à
l'origine de plein de bugs. Voir par exemple
<http://groups.google.fr/groups?q=disable_format_flowed_support%20send_plaintext_flowed&lr=lang_fr>.

Mais si tu as tenté de faire un copier/coller à partir d'une autre
fenêtre, alors la solution est plus simple : Edit > Paste as quotation
(Édition > Copier comme une citation).

Étant donné que l'on ne se sert d'aucune propriété ou méthode
spécifique aux Arrays (indices, length et les méthodes propres),
je me contenterai d'un Object générique...

Par exemple :

<script type="text/javascript">
var boxes={
GLR: { CS2: "caisse 2"},
GLV: { BT1: "boîte 1", BT4: "boîte 4", CS1: "caisse 1"},
ETB: { BT2: "boite 2"},
ETR: { BT3: "boite 3"}
} //Cette variable doit être générée par le PHP...


Ah oui, je ne pense jamais à cette syntaxe. C'est sans doute le mieux,
en effet.


--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)

Avatar
YD
[ Citation illisible, avec Thunderbird ]


Si tu n'as rien fait d'autre que répondre à mon article, je ne saurais
trop te conseiller de virer complètement le format flowed, qui est à
l'origine de plein de bugs. Voir par exemple
<http://groups.google.fr/groups?q=disable_format_flowed_support%20send_plaintext_flowed&lr=lang_fr>.

Mais si tu as tenté de faire un copier/coller à partir d'une autre
fenêtre, alors la solution est plus simple : Edit > Paste as quotation
(Édition > Copier comme une citation).


Désolé ! J'ai posté une première fois et le message n'est jamais
arrivé. J'ai donc reposté en copiant intégralement le texte de mon
premier article (que je ne pouvais donc coller comme une citation)
et je n'ai pas vérifié les espaces en fin de ligne...

--
Y.D.


Avatar
ASM

Je recupere en php des valeurs de deux tables SQL :

table localisation
------------------------
ident lib
GLR galerie rouge
GLV galerie verte
ETB etage bleu
ETR etage rouge

table boite
------------------------
ident lib localisation
BT1 boite 1 GLV
BT2 boite 2 ETB
BT3 boite 3 ETR
BT4 boite 4 GLV
CS1 caisse 1 GLV
CS2 caisse 2 GLR

Je voudrais faire un formulaire avec deux <select> dedans.
le premier select pour choisir une localisation parmi la liste des
localisations disponibles. Le second pour choisir une boite parmi les boites
disponibles pour la localisation choisie.

Avez-vous une solution simple par rapport a ce que je veux ?


Simple ? je ne sais
mais peut-être ceci t'irait ?
http://perso.wanadoo.fr/stephane.moriaux/truc/essai_obj_select


--
Stephane Moriaux et son [moins] vieux Mac

Avatar
Bor
Dans news:43fa897e$0$20150$,
Simple ? je ne sais
mais peut-être ceci t'irait ?
http://perso.wanadoo.fr/stephane.moriaux/truc/essai_obj_select


Excellent, c'est exactement ce que je recherchais ! ! !

T'es un as y a pas à tortiller.

Dire que j'ai passé plusieurs heures à réadapter un truc façon usine à gaz
bien plus long et là la solution telle que je l'espérais.
Je que j'ai adapté fonctionne donc je vais le laisser tel quel mais je note
ton code pour des prochaines fois et te remercie infiniment.

Merci également aux autres pour leurs réponses.

Bravo et merci !

Avatar
ASM
Dans news:43fa897e$0$20150$,

Simple ? je ne sais
mais peut-être ceci t'irait ?
http://perso.wanadoo.fr/stephane.moriaux/truc/essai_obj_select



Excellent, c'est exactement ce que je recherchais ! ! !


revu en simplifiant
plus facile à remplir par le php ?


--
Stephane Moriaux et son [moins] vieux Mac


Avatar
Bor
Dans news:43fb2d78$0$21287$,
revu en simplifiant
plus facile à remplir par le php ?


pas cherché la différence avec le précédent qui était déjà très simple mais
je note la version simplifiée.
ton code je le mets dans un côté de mon disque dur bien au chaud. il est
trop bien, et je n'hésiterai pas à le sortir le cas échéant.

dimanche et lundi je suis passé par un truc usine à gaz que j'ai réadapté :
code javascript de bcp + de lignes, le résultat est identique. beurk.

merci encore ! ! !

1 2