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 :

tableaux dynamiques - comparaison de array ?


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Par défaut tableaux dynamiques - comparaison de array ?
    Bonjour,
    Je poste car je sens que je vais passer des heures et des heures avant de trouver une solution. Alors si l'un d'entre vous avait une solution ...
    J'ai un tableau dynamique qui doit permettre de faire une cotation.
    Pour chaque ligne de prestation, on doit rentrer le montant que devra payer le client et le montant à payer au fournisseur de la prestation.

    lorsque on arrive sur ce tableau. On connait forcément le nom du premier fournisseur. Il s'agit obligatoirement du fournisseur 1.
    L'idée est de mettre un numéro dans la colonne Supplier num. Par défaut, si je crée une nouvelle ligne, le numéro de fournisseur est 1.
    Maintenant, si la prestation est fournie par un autre, on met un autre numéro. Et là automatiquement cela crée une autre ligne le tableau fournisseur situé en bas du tableau de cotation.

    Ce tableau doit regrouper tous les fournisseurs mis en jeu (de manière unique) et indiquer le total de leur prestation.

    Pour l'heure, j'utilise un array "array_num_fournisseur" pour stocker les numéros de fournisseur. Quand je change la valeur du numéro de fournisseur, je rajoute sa valeur dans l'array. Si le numéro du fournisseur n'appartient pas à l'array, alors je créer une nouvelle ligne.

    Cette solution ne fonctionne pas parce que cet array n'est jamais actualisé. On ne peut que rajouter des numéro, mais il n'y a jamais de suppression.

    Bref, je vois pas comment faire.

  2. #2
    Membre très actif Avatar de Sacha999
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Par défaut
    Tu peux rajouter tout en bas, le tableau des fournisseur, un bouton delete a coté de ceux ke tu veux delete

  3. #3
    Membre éclairé Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Par défaut
    c'est une solution, Sacha999, mais c'est un clique de plus à faire et donc c'est une contrainte de plus pour l'utilisateur.

    En fait je pense avoir une piste, mais j'ai un bug :
    autre page de test

    créer 3 lignes par exemple dans options puis modifier le numéro de fournisseur :
    erreur de document.getElementById, erreur qui comme d'habitude m'énerve.
    Pourquoi ?

  4. #4
    Membre très actif Avatar de Sacha999
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Par défaut
    Ok comme tu veux

    Pour ton probleme, il semble que c'est parce que tu as mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name="num_fournisseur0"
    au lieu de

  5. #5
    Membre éclairé Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Par défaut
    oui ! exact. J'ai plusieurs fichiers et effectivement je n'avais pas mis le id pour la ligne obligatoire.

    Merci Sacha999 ! je commençais à criser.

  6. #6
    Membre éclairé Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Par défaut je bloque ....
    Je souhaite identifier des numéro non utilisé dans un tableau afin de pouvoir supprimer les lignes ayant se numéro et je bloque totalement...

    dernière page de test.

    Pour comprendre :
    j'arrive à mettre dans un array (array_histo_numfournisseur) tous les numéro qui sont créer. Mais je n'arrive pas à supprimer ceux qui entretemps ne sont plus utiliser.

    Exemple : créer 3 lignes. Par défaut le numéro de fournisseur est 1.
    Je change un numéro par 3. Au changement j'appelle une fonction.
    Cette fonction regarde si la valeur est ou non dans mon array histo. Si ce n'est pas le cas, elle rajoute 3 dans l'array histo et créer une ligne dans le tableau fournisseur.
    Maintenant si je remet la valeur 1 à la place du 3, mon array histo a toujours les valeurs 1 et 3.
    Je vois pas comment faire pour in fine supprimer la ligne 3 de mon tableau fournisseur ....

    un affiche code source vous donnera tout le code, mais ci-dessous ma 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    function ajoutLigneAuTableauFournisseur(num_fournisseur)
    {
    //this.num_fournisseur = num_fournisseur;
    //num_fournisseur = parseInt(this.num_fournisseur);
    var array_numfournisseur = new Array();
     
    // initialisation des array à 0 pour tous les numéros de fournisseur utilisés
    for (var f=0; f<(1+nbLignesInclus+nbLignesOptions);f++)
    {
    var numerofournisseur = document.getElementById("num_fournisseur"+f).value;
    var numerofournisseur_numeric = parseInt(numerofournisseur);
    array_numfournisseur[numerofournisseur]=0;
    }
     
     
     
    for (var f=0; f<(1+nbLignesInclus+nbLignesOptions);f++)
    {
    var numerofournisseur = document.getElementById("num_fournisseur"+f).value;
    var numerofournisseur_numeric = parseInt(numerofournisseur);
    array_numfournisseur[numerofournisseur]++;
    //var a = array_numfournisseur[numerofournisseur_numeric];
    alert('array_numfournisseur['+numerofournisseur_numeric+']='+array_numfournisseur[numerofournisseur_numeric]);
     
    }
     
     
     
     
    	if (!in_array (num_fournisseur,array_histo_numfournisseur))
    	{
    	array_histo_numfournisseur.push(num_fournisseur);
     
    		var tbl = document.getElementById('tabfournisseur');
    		var num_founisseur = num_fournisseur;
    		// ajout d'une ligne
    		var row = tbl.tBodies[0].insertRow(-1);
    		var newCell0 = row.insertCell(0);
    		var textNode0 = document.createTextNode(num_founisseur);
    	newCell0.appendChild(textNode0);
    	}
    }

  7. #7
    Membre très actif Avatar de Sacha999
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Par défaut
    Il faut utilsier "removeChild" pour supprimer un element enfant.

    Exemple: en parametre le numero du fournisseur
    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
    function supprimerFournisseur(num_fournisseur)
    	{
    		var laTable = document.getElementById('tabfournisseur');
    		var leBody = laTable.getElementsByTagName('tbody');
    		var lesLignes = leBody[0].getElementsByTagName('tr');
    		for(i = 0; i< lesLignes.length; i++)
    		{
    			var lesCelulles = lesLignes[i].getElementsByTagName('td');
    			if (lesCelulles[0].innerHTML == num_fournisseur)
    			{
    				alert(lesCelulles[0].innerHTML + ' ' + num_fournisseur);
    				leBody[0].removeChild(lesLignes[i]);
    				i--;
    			}
    		}
    	}

  8. #8
    Membre éclairé Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Par défaut
    Sacha999,
    Tout d'abord, encore merci de ton aide. C'est très appréciable.

    heu, ta fonction doit être super, mais je l'utilise où et quand ?

    Cela dit j'ai avancé, j'arrive maintenant à savoir quelle ligne je dois supprimer :

    voir ma nouvelle page

    Je crée un array_histo_numfournisseur (variable globale) où je stocke tous les numéro qui on été saisie. (numéro qui d'après mes test sont pas considéré comme des valeur numérique, mais bon).

    Lors de mon appel à la fonction ajoutLigneAuTableauFournisseur(num_fournisseur),
    je crée un autre array (array_numfourniisseur) où je stocke les numéro réellement utilisé.

    ensuite je compare les 2 arrays.

    Voilà où j'en suis. Ta fonction pourrais tomber à pic ! Je dois tester.

  9. #9
    Membre éclairé Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Par défaut
    ta fonction tombe vraiment à pic :


    voir le résultat :


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tableaux dynamiques
    Par sebduth dans le forum Fortran
    Réponses: 5
    Dernier message: 05/07/2005, 15h36
  2. tableaux dynamiques
    Par Mynautor dans le forum C++
    Réponses: 23
    Dernier message: 12/02/2005, 02h45
  3. [D7] Tableaux dynamiques dans un record
    Par bobby-b dans le forum Langage
    Réponses: 2
    Dernier message: 30/06/2004, 23h23
  4. Article sur les tableaux dynamiques
    Par Eric Sigoillot dans le forum Langage
    Réponses: 2
    Dernier message: 16/04/2004, 22h00
  5. [Kylix] Tableaux dynamiques sour Kylix2
    Par Krän dans le forum EDI
    Réponses: 6
    Dernier message: 07/10/2003, 14h31

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