IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Les array en javascript


Sujet :

JavaScript

  1. #1
    Membre confirm�
    Inscrit en
    Novembre 2003
    Messages
    173
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 173
    Par d�faut Les array en javascript
    Bonjour � tous.
    J'ai un tableau html qui contient en ligne les articles achet�s et en colonne (Id_Prouit, nom_Produits,quantit�, prix total). Je voudrais mettre le contenu de ce tableau dans un "Array" pour les ins�rer dans ma base mysql ; ci-apr�s la fonction.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function validerPanier()
    {
    	var arrayLignes = document.getElementById("Panier").rows;
    	var nbrLigne = arrayLignes.length;
    	var MonTableau = new Array(nbrLigne,nbrColonne);
            for(var i=2; i<nbrLigne; i++)
    	{
        		var arrayColonnes = arrayLignes[i].cells;
        		var nbrColonne = arrayColonnes.length;
        		for(var j=0; j<nbrColonne; j++)
        		{
    			MonTableau[i,j]=arrayColonnes[j].textContent;
    			alert("ligne " + i +" colone " + j + " = " + monTableau[i,j]);
        		}
    	}
    	alert("nombre de ligne = "+nbrLigne);
    	alert("nombre de colonne = "+nbrColonne);
    }
    Pour v�rifier cette fontion j'ai proc�der par des "alert" �a marche ligne par ligne. Le code suivant pour v�rifier le contenu en entier
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    for(var i=2; i=nbrLigne; i++)
    {
    	for(var j=0; j<nbrColonne; j++)
    	{
    		alert("ligne " + i +" colone " + j + " = " + MonTableau[i,j]);
    	}
    }
    Mais � la fin je n'arrive pas � lister le contenu de toute la table. Seule la derni�re ligne est affich�e. Pouvez vous m'aider ? Merci.

  2. #2
    Mod�rateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par d�faut
    Bonjur,
    cela commence mal avec
    var MonTableau = new Array(nbrLigne,nbrColonne);
    cette fa�on de d�clarer un Array cr�e un tableau de 2 �l�ments valant nbrLigne et nbrColonne, cette valeur valant undefined au moment de son utilisation d'ailleurs, et non pas un tableau de tableau.
    Comment d�clarer et initialiser un tableau ?
    il vaudrait mieux que tu partes sur
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    var MonTableau = [];
    for (var i = 2; i < nbrLigne; i++) {
        MonTableau[i] = []; // monTableau[i] est aussi un tableau
        // la suite
    }
    voil� pour un d�but.

  3. #3
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    bonjour.

    je te propose de lire cette discussion.
    http://www.developpez.net/forums/d12...e-entree-plus/

    Un tableau de tableaux n'est pas une matrice. il te faut donc soit garantir le contenus de chaque �l�ments du tableau de tableau. tu dois donc garantir que chaque �l�ment est un tableau.
    tu dois aussi garantir que chaque tableau a la bonne longueur.
    et enfin tu doit garantir que chaque �l�ment d'un des tableaux est bien ce que tu attend.

    mais dans ton cas je ne comprends pas pourquoi tu utilise des tableaux en effet tu dis toi-m�me que les tableaux contenu dans le tableau principal � un s�mentique Id_Prouit, nom_Produits,quantit�, prix total
    perso j'utiliserais des objets.
    ainsi tu as un tableau d'objet.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var Id_Prouit=0, nom_Produits=1,quantite=2, prix total=3;
    var arrayLignes = document.getElementById("Panier").rows; 			
    var nbrLigne = arrayLignes.length;									
    var MonTableau = new Array();
    for(var i=2; i<nbrLigne; i++)												
    {
      MonTableau.push({
        "Id_Prouit"   : arrayLignes[i].cells[Id_Prouit],
        "nom_Produits": arrayLignes[i].cells[nom_Produits],
        "quantite"    : arrayLignes[i].cells[quantite],
        "total"       : arrayLignes[i].cells[total]
      });
    }
    le B.A.BA de la syntaxe des tableaux en jsle constructeur Array peut prendre autant de param�tres que l'on veut les valeurs de ces param�tres seront TOUS, les valeurs initiales du contenu du tableau.

    Un tableau javascript n'a et ne peut avoir QU'UNE et UNE SEULE dimension.Signifie cr�er un tableau � UNE dimension contenant les valeurs 3 et 4.
    Il ne signifie pas cr�er un tableau � DEUX dimensions de 3 lignes et 4 colonnes.

    les matrices n'existant pas en js il est impossible d'�crire
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    MonTableau[i,j]=arrayColonnes[j].textContent;
    A+JYT

  4. #4
    Membre confirm�
    Inscrit en
    Novembre 2003
    Messages
    173
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 173
    Par d�faut
    Bonsoir � tous. Et merci pour sekaijin d'avoir r�pondu.

    Citation Envoy� par sekaijin Voir le message
    J'ai lu et relu la discussion. Mais n'�tant pas fort en js et j'apprend je n'ai pas compris ton code sur tous l'ajout 'MonTableau.push'
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var Id_Prouit=0, nom_Produits=1,quantite=2, prix total=3;
    var arrayLignes = document.getElementById("Panier").rows; 			
    var nbrLigne = arrayLignes.length;									
    var MonTableau = new Array();
    for(var i=2; i<nbrLigne; i++)												
    {
      MonTableau.push({
        "Id_Prouit"   : arrayLignes[i].cells[Id_Prouit],
        "nom_Produits": arrayLignes[i].cells[nom_Produits],
        "quantite"    : arrayLignes[i].cells[quantite],
        "total"       : arrayLignes[i].cells[total]
      });
    }
    tu veux bien m'expliquer ? Merci

  5. #5
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    push est une m�thode qui ajoute un �l�ment � un tableau.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    tab = new Array(1, 2, 3, 4); // tab est un tableau qui contient les valeurs 1, 2, 3, 4
    tab.push(9); // tab est un tableau qui contient les valeurs 1, 2, 3, 4, 9
    la suite est la construction d'un objet
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    obj = {
        "Id_Prouit"   : 12345,
        "nom_Produits": "Mon Produit",
        "quantite"    : 10,
        "total"       : 15
      };
    cet objet a les membres Id_Produit, nom_Produits, quantite, total.
    chaque membre est accessible de deux fa�on.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    console.log(obj.total); // 15
    console.log(obj["total"]); // 15
    le code
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
      MonTableau.push({
        "Id_Prouit"   : arrayLignes[i].cells[Id_Prouit],
        "nom_Produits": arrayLignes[i].cells[nom_Produits],
        "quantite"    : arrayLignes[i].cells[quantite],
        "total"       : arrayLignes[i].cells[total]
      });
    Ajoute � mon tableau un objet contenant les infos d'un produit.
    A+JYT

  6. #6
    Membre confirm�
    Inscrit en
    Novembre 2003
    Messages
    173
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 173
    Par d�faut
    Merci beaucoup c'est claire.

    Comment doit-je faire pour r�cup�rer le contenu ?

  7. #7
    Membre r�gulier
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 10
    Par d�faut
    Si dans la i�me cellule de ton tableau, tu as ton objet, alors le code qui suit affiche la valeur de l'attribut "total" dans une alert!

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    alert(MonTableau[i].total )

  8. #8
    Membre confirm�
    Inscrit en
    Novembre 2003
    Messages
    173
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 173
    Par d�faut
    bonjour et merci petit_lapin

    J'ai essay� mais �a marche pas. Ci-apr�s le code :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    var Id_Prouit=0, nom_Produits=1,quantite=2, prix_total=3;
    	var arrayLignes = document.getElementById("Panier").rows; 			
    	var nbrLigne = arrayLignes.length;									
    	var MonTableau = new Array();
    	alert("nombre de ligne = "+nbrLigne); //ça affiche le nombre de ligne
    	for(var i=2; i<nbrLigne; i++)												
    	{
      		MonTableau.push({
        		"Id_Prouit"   : arrayLignes[i].cells[Id_Prouit],
        		"nom_Produits": arrayLignes[i].cells[nom_Produits],
        		"quantite"    : arrayLignes[i].cells[quantite],
        		"total"       : arrayLignes[i].cells[total]
      			});
    	}
    	alert ("i= " + i); //ça affiche 4 c'est à dire le nombre de ligne et après rien de s'affiche
    	alert(MonTableau[3].total);
    	for(var i=2; i<nbrLigne; i++)												
    	{
    		alert(MonTableau[i].Id_Produit);
    		alert(MonTableau[i].nom_Produits );
    		alert(MonTableau[i].quantite);
    		alert(MonTableau[i].total );
     
    	}
    auriez vous une r�ponse ? Merci.

  9. #9
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    tu peux tr�s simplement mettre un point d'arr�t � la premi�re ligne et ainsi avancer pas � pas. cela te permets de voir quelle sont les valeurs que tu obtiens et ce que tu mets dans tes objets.

    Pour remplir MonTableau on parcour arrayLignes de 2 � nbrLigne (4). on a donc 2 �l�ments de moins dans MonTableau. il est donc logique que MonTableau[3] soit undefined. (4 - 2 = 2) < 3


    voici l'exemple que jai fais
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    document.body.innerHTML='<table border="1" id="Panier">'+
    '<thead><tr><th>Month</th><th>Savings</th></tr></thead>'+
    '<tfoot><tr><td>Sum</td><td>$180</td></tr></tfoot>'+
    '<tbody><tr><td>January</td><td>$100</td></tr>'+
    '<tr><td>February</td><td>$80</td></tr></tbody></table>';
    var Id_Produit=0, nom_Produits=1,quantite=2, prix_total=3;
    var arrayLignes = document.getElementById("Panier").rows; 			
    var nbrLigne = arrayLignes.length -1;	// on ne prends pas le tfoot donc -1							
    var MonTableau = new Array();
    console.log("nombre de ligne = "+nbrLigne); //ça affiche le nombre de ligne
    for(var i=1; i<nbrLigne; i++) // on ne prends pas le thead donc i = 1
    //on a donc 2 lignes de moins le thead et le tfoot.
    {
      MonTableau.push({
        //on ne veux que le texte pas la cellule. cells[indice].textContent
        "Id_Produit"  : arrayLignes[i].cells[Id_Produit].textContent, 
        "nom_Produits": arrayLignes[i].cells[nom_Produits].textContent
      });
    }
    console.log("i = " + i);
    for(var j=0; j<MonTableau.length; j++)												
    {
      console.log("j = " + j);
      console.log(MonTableau[j].Id_Produit);
      console.log(MonTableau[j].nom_Produits );
    }
    et voila ce que �a affiche
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    nombre de ligne = 3
    i = 3
    j = 0
    January
    $100
    j = 1
    February
    $80
    J'ai excplicitement utiliser une variable j pour bien dissocier les indices i de
    arrayLignes qui contient 4 �l�ments des indices j de MonTableau qui contient 2 �l�ments

    pour tester avec chrome ou safari ouvre l'url about:blank
    fais un clic droit et "inspecete l'�l�ment"
    clique sur la console et colle le code.

    A+JYT

  10. #10
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    attention GROS DOIGTS dans mes posts pr�c�dents.
    il est �crit Id_Prouit � la place de Id_Produit.

    A+JYT

  11. #11
    Membre r�gulier
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 10
    Par d�faut
    Salut, voici un exemple.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    var x = []
    x.push({
        "un": 1,
        "deux": 2,
        "trois": 3,
    });
    alert(x[0].un)
    affiche 1 dans une alert

  12. #12
    Mod�rateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par d�faut
    @s.rais :
    on peut lire dans ton code
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    var Id_Prouit=0, nom_Produits=1,quantite=2, prix_total=3;
    et un peu plus loin
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    MonTableau.push({
        "Id_Prouit": arrayLignes[i].cells[Id_Prouit],
        "nom_Produits": arrayLignes[i].cells[nom_Produits],
        "quantite": arrayLignes[i].cells[quantite],
        "total": arrayLignes[i].cells[total]  // ICI total n'est pas défini, peut être prix_total plutôt...
    });

  13. #13
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    Oui NoSmoking j'ai allert� sur mes gros doigts
    bien vu pour le total

    mais dans alert(MonTableau[3].total);le PB c'est que le tableau n'a que 2 �l�ments. (rempli en lisant les ligne de i=2 � i < 4) donc MonTableau[3] est undefined

    A+JYT

Discussions similaires

  1. problem array en javascript
    Par sissa_87 dans le forum G�n�ral JavaScript
    R�ponses: 10
    Dernier message: 04/05/2006, 12h13
  2. Java 5.0, les templates et les arrays
    Par anykeyh dans le forum Collection et Stream
    R�ponses: 4
    Dernier message: 20/12/2005, 22h14
  3. Utilisation des Array en javascript serveur
    Par clisson dans le forum XMLRAD
    R�ponses: 4
    Dernier message: 13/06/2005, 15h46
  4. probl�me avec les array en pl/pgsql
    Par nico31120 dans le forum PostgreSQL
    R�ponses: 1
    Dernier message: 04/03/2005, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo