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 :

tableau et liste déroulante dynamique


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 61
    Par défaut tableau et liste déroulante dynamique
    Bonjour,

    J'ai une page php qui comprend l'entête d'un tableau. Dans cette page, j'ai un bouton ajouter avec un événement onClick permettant de créer dynamiquement une ligne dans ce tableau. Dans cette ligne, j'ai 4 cellule dont une qui comprend une liste déroulante créée dynamiquement aussi avec la ligne. Pour chaque élément ajouté on lui affecte un id via une variable incrémentée à chaque ajout de ligne. Cette liste déroulante parcours l'ensemble des données d'une base de données et les autres cellules sont alimentées via le choix de cette liste déroulante. Le problème est que uniquement la dernière ligne est prise en compte pour les modifications. Je m'explique, admettons que je créé plusieurs lignes et que par une envie soudaine je dois modifier la première ligne via ma liste déroulante, les cellules ne sont pas modifiées. J'aimerais si possible avoir la solution pour parcourir l'ensemble des lignes de ce tableau et si on modifie la donnée de la liste déroulante (des lignes antérieurs) alors alimenter les cellules de cette ligne.

    Merci par avance,

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    tu as juste un souci de pointer la bonne ligne pour la mise à jour ...
    mais sans voir le code ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 61
    Par défaut
    Script :

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    <script language="javascript">
     
    var nbr = 0;
    var i = 0;
    var j = 0;
    var monOption;
    var monSelect;
    var td_entraineur;
    var td_proprio
    function AddOneRow()
    {
    		var newRow = document.getElementById('matable').insertRow(-1); //Insertion nouvelle ligne
     
    			if(document.getElementById('matable').insertRow(-1))// On incrémente la variable nbr à chaque ajout de ligne
    			{
    			nbr = nbr + 1;
    			}
     
    		 var newCell = newRow.insertCell(0); // Insertion de la première cellule 
    			 if (document.all){  // permet de différencier le navigateur
    				var td = document.createElement("<td id='numero+"+nbr+"'>"); // Si ok on créé l'element et on lui affecte un id
    				}
    				else{ 
    				var td = document.createElement("td"); // Sinon on créé l'élement 
    				td.id="numero"+nbr; // et ensuite on lui affecte un id
    				}
    				td.innerHTML = nbr;
    				td.size='5'; // Taile de l'élement
    				newCell.appendChild(td);
    /* ---------------------------------------------------------------------------------------------------------------------*/		
     
     
    			  var newCell = newRow.insertCell(1); // idem que première cellule
    				if (document.all){  
    				monSelect = document.createElement("<select id='cheval"+nbr+"'>" );
    				monSelect.onChange = selectionIndex();
    				}
    				else{ 
    				monSelect = document.createElement("select");
    				monOption; 
    				monSelect.id='cheval'+nbr;
    				monSelect.setAttribute("onChange", "selectionIndex()");
    				}
    				monSelect.style.width='150';
    				for (i=0; i < cheval['nom'].length;i++) {
    				monOption = document.createElement("option");
    				monOption.text = cheval['nom'][i];
    				monSelect.add(monOption);
    				}
    				newCell.appendChild(monSelect);
     
    /* ---------------------------------------------------------------------------------------------------------------------*/		
    		 	 var newCell = newRow.insertCell(2);  // idem que première cellule
    				if (document.all){  
    				td_entraineur = document.createElement("<td id='entraineur"+nbr+"'>");
    				}
    				else{ 
    				td_entraineur = document.createElement("td");
    				td_entraineur.id="entraineur"+nbr;
    				}
    				td_entraineur.size='20';
    				newCell.appendChild(td_entraineur);	
    /* ---------------------------------------------------------------------------------------------------------------------*/		
    		 	 var newCell = newRow.insertCell(3); // idem que première cellule
    				if (document.all){  
    				td_proprio = document.createElement("<td id='proprietaire"+nbr+"'>");
    				}
    				else{ 
    				td_proprio = document.createElement("td");
    				td_proprio.id="proprietaire"+nbr;
    				}
    				td_proprio.size='20';
    				newCell.appendChild(td_proprio);
    }
     
    function selectionIndex(){
    				var num_entraineur;
    				var num_proprio;
     
     
    				for (i=0; i < monSelect.length;i++) {
    				 if (monSelect.options[i].selected == true) {
    				 num_entraineur = cheval['entraineur'][i];
    				 num_proprio = cheval['proprietaire'][i];
    				 }
    				}
    				for (j=0; j < entraineur['numero'].length;j++){
    				if (num_entraineur == entraineur['numero'][j]){
    				td_entraineur.innerHTML=entraineur['nom'][j] + ' ' + entraineur['prenom'][j];
    				}
    				}
    				for (j=0; j < proprietaire['numero'].length;j++){
    				if (num_proprio == proprietaire['numero'][j]){
    				td_proprio.innerHTML=proprietaire['nom'][j] + ' ' + proprietaire['prenom'][j];
    				}
    				}
    }
     
    </script>
    page PHP :

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    <?php
    include "connexion.php";
     
    $req="SELECT * FROM CHEVAL";
    $resultat=mysql_query($req,$cnn);
    $req_entraineur = "SELECT * FROM ENTRAINEUR";
    $resultat_entraineur = mysql_query($req_entraineur,$cnn);
    $req_proprietaire = "SELECT * FROM PROPRIETAIRE";
    $resultat_proprietaire = mysql_query($req_proprietaire,$cnn);
     
    ?>
     
    <script language="javascript">
    var cheval = new Array();
    cheval['nom'] = new Array();
    cheval['proprietaire'] = new Array();
    cheval['entraineur'] = new Array();
     
    var entraineur = new Array();
    entraineur['numero'] = new Array();
    entraineur['nom'] = new Array();
    entraineur['prenom'] = new Array();
     
    var proprietaire = new Array();
    proprietaire['numero'] = new Array();
    proprietaire['nom'] = new Array();
    proprietaire['prenom'] = new Array();
     
    <?php
    while($ligne = mysql_fetch_assoc($resultat))
    {
    echo 'cheval['."'nom'".'].push("' . $ligne['NOM_CHEVAL'].'");';
    echo 'cheval['."'proprietaire'".'].push("'. $ligne['NUM_PROPRIO'].'");';
    echo 'cheval['."'entraineur'".'].push("'. $ligne['NUM_ENTRAINEUR'].'");';
    }
     
    while($ligne = mysql_fetch_assoc($resultat_entraineur))
    {
    echo 'entraineur['."'numero'".'].push("' . $ligne['NUM_ENTRAINEUR'].'");';
    echo 'entraineur['."'nom'".'].push("' . $ligne['NOM_ENTRAINEUR'].'");';
    echo 'entraineur['."'prenom'".'].push("' . $ligne['PRENOM_ENTRAINEUR'].'");';
    }
     
    while($ligne = mysql_fetch_assoc($resultat_proprietaire))
    {
    echo 'proprietaire['."'numero'".'].push("' . $ligne['NUM_PROPRIO'].'");';
    echo 'proprietaire['."'nom'".'].push("' . $ligne['NOM_PROPRIO'].'");';
    echo 'proprietaire['."'prenom'".'].push("' . $ligne['PRENOM_PROPRIO'].'");';
    }
     
    ?>
    </script>
    J'espère que je suis assez clair dans mon code. C'est un exercice pour mon examen de fin d'année. Donc si tu peux me trouver la solution :p

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    C'est un exercice pour mon examen de fin d'année. Donc si tu peux me trouver la solution :p
    Tu me donneras ton diplome ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 61
    Par défaut
    Tu dois déjà avoir ce qui faut de ton coté niveau diplôme, non ?

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monSelect.onChange = selectionIndex();
    ben tu devrais au moins passer une référence à l'objet cliqué ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    monSelect.onChange = selectionIndex(this);
    //ou
    monSelect.onChange = selectionIndex(this.id);
    de sorte à faire la mise a jour sur le bon element
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function selectionIndex(sel){
    				var num_entraineur;
    				var num_proprio;
                                    var monSelect=sel
    //ou 
                                     var monSelect=document.getElementById(sel)
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. récupérer la valeur d'une liste déroulante dynamique
    Par grinder59 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 23/01/2006, 17h51
  2. Liste déroulante dynamique
    Par Screw16 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/10/2005, 20h37
  3. [HTML] liste déroulante dynamique
    Par lacousinee dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/08/2005, 20h51
  4. Liste déroulante dynamique ?
    Par Regis.C dans le forum Composants
    Réponses: 5
    Dernier message: 29/06/2005, 12h09
  5. [FORMULAIRE] Liste déroulante dynamique
    Par bchristo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/01/2005, 10h07

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