Mise a jour de listes deroulantes lorsque on a choisit un type [Résolu]

Messages postés
5
Date d'inscription
mardi 16 janvier 2007
Statut
Membre
Dernière intervention
19 janvier 2007
- - Dernière réponse : eclipse012
Messages postés
5
Date d'inscription
mardi 16 janvier 2007
Statut
Membre
Dernière intervention
19 janvier 2007
- 19 janv. 2007 à 12:52
bonjour a toutes a a tous !!


j'ai besoin d'aide concerant la mise a jour de listes deroulantes avec javascript


voila,


je gere un systeme de gestion de types de documents


et dans mon systeme j'ai une page "affichage par type.php " dans laquelle on selectionne un type, on selectionne les colonnes que l'on veut afficher et on valide pour voir les documents du type selectionné:


voici mes listes deroulantes de choix de colonne




en fait j'ai une page qui me permet d'editer les proprietes d'un type de document et dans cette page j'ai remis la meme liste deorulante pour avoir le nom des colonnes affichees par default; donc j'aimerai bien que dans la page affichage par type , des que j'ai selectionné le type , les listes deroulantes se mettent a jour avec les valeurs par default specifiees


 


je cree la liste comme ca




<?php for($i=1;$i<=6;$i++) {


$cur_col = $i-1;


?>


<li>


<select name="c2<?php echo $i ?>" id="c2<?php echo $i ?>" style="font-size:9px ">


<option style="font-style:italic; color:#999999 " value="none">Vide</option>


<option value="code_doc" <?php if ($code_affichage[$cur_col]=="code_doc") echo "selected";?> >Codification</option>


<option value="libelle_doc" <?php if ($code_affichage[$cur_col]=="libelle_doc") echo "selected";?> >Titre</option>


<option value="nom_auteur" <?php if ($code_affichage[$cur_col]=="nom_auteur") echo "selected";?> >Auteur</option>


<option value="nom_verificateur" <?php if ($code_affichage[$cur_col]=="nom_verificateur") echo "selected";?> >Vérificateur</option>


<option value="nom_approbateur" <?php if ($code_affichage[$cur_col]=="nom_approbateur") echo "selected";?> >Approbateur</option>


<option value="datecrea_doc" <?php if ($code_affichage[$cur_col]=="datecrea_doc") echo "selected";?> >Date de Diffusion</option>


</select>


</li>


<?php } ?>


</ol>


 





et je passe le contenu en post


 




$code_affichage= $_POST['c21'].'#'.$_POST['c22'].'#'.$_POST['c23'].'#'.$_POST['c24'].'#'.$_POST['c25'].'#'.$_POST['c26'];





a ma table dans la base de données et je recupere les donnees en faisant un explode sur le # pour recuperer un tableau


merci pour votre aide  et de me guider a resoudre ce "probleme"
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
111
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
1 août 2008
3
Merci
Je n'ai visiblement pas bien compris ce vous souhaitez faire...


Même après relecture je ne comprend toujours pas, peut être qu'un lien
vers une page de démo pourrait m'aider, ou alors un screeshot des pages
entières ?


Je peut tout de même essayer l'hypothèse suivante :

-Vous souhaitez qu'à la sélection d'une option d'un select les autres
selects soient sélectionnés sur une autre valeur ? (difficile à
formuler et à comprendre...)


<script type="text/javascript">

function autoSelect()

{

    var obj = document.getElementById('other');

    var src = document.getElementById('source');

    obj.selectedIndex = src.selectedIndex;

    //ici l'option selectionne dans la source est applique au select de destination : other

}

</script>


<select id="source" onchange="autoSelect()">

    <option name="1" value="1">1</option>

    <option name="2" value="2">2</option>

    <option name="3" value="3">3</option>

</select>


<select id="other">

    <option name="1" value="1">1</option>

    <option name="2" value="2">2</option>

    <option name="3" value="3">3</option>

</select>


Comme je n'ai pas compris ce que vous souhaitez faire j'ai bien peur
que ce bout de code ne vous serve à rien mais on ne sait jamais...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 223 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ralecul
Messages postés
111
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
1 août 2008
0
Merci
Bonjour,

J'ai développé quelques fonctions pour ajouter ou retirer des options à un select en javascript :

//permet d'ajouter une option à un select (si une option existe déjà à cette position ->remplacement de l'existante)
//si il n'y a aucune option ajout de l'option en première position
function addOption(object,text,value,selected,position)
{
    var defaultSelected = false;
    var optionName = new Option(text, value, defaultSelected, selected)
    if (object.options.length)
        object.options[position] = optionName;
    else
        object.option = optionName;
}

//permet de supprimer une option au début ou à la fin
//mode = "head" : suppresion au début
//mode = "foot" : suppression à la fin
function removeOption(object, mode)
{
    if (mode == "head")
    {
        if (object.options.length)
            object.options[0] = null;
        else
            object.options = null;
    }
    else //mode == foot
    {
        var longueur = object.options.length;
        if (longueur)
            object.options[longueur-1] = null;
        else
            object.options = null;
    }
}

Il suffit de faire une requete ajax sur le onchange du select et le resultat de la requete doit permetre d'ajouter ou de retirer des options a un autre select.
Un exemple complet est disponible sur le site de robloche : http://robloche.free.fr/javascript/tuto_xhr/tuto_xhr.html

Henri
Commenter la réponse de ralecul
Messages postés
5
Date d'inscription
mardi 16 janvier 2007
Statut
Membre
Dernière intervention
19 janvier 2007
0
Merci
tout d'abord un grand merci d'avoir pris le temlps de repondre M.henri

en fait je ne m'y connais pas en ajax, et en fait c'est vrai que c'est bien mieux de pouvoir ajouter ou supprimer des colonnes select mais dans le cas de mon application , je prefere les garder , donc en fait j'ia toujours mes 6 listes deroulantes mais si par exemple dans le parametrage des types j'ai choisi la combinaison suivante

titre#vide#vide#date#vide#redacteur

j'aimerai bien que dans la page d'affichage des documents lorsque je choisis mon type, eh bien la premiere lise deroulante prenne pour valeur par defaut titre; la troisieme date et la sixieme redacteur par exemple , les autres restant a civde par dafault

merci pour voitre aide, je pense que j'ajout/suppression de listes rend les choses complqiees a mon niveau

avez vous des sites ou codes expliquant mon cas ? merci :)
Commenter la réponse de eclipse012
Messages postés
5
Date d'inscription
mardi 16 janvier 2007
Statut
Membre
Dernière intervention
19 janvier 2007
0
Merci
bonjour

voici le code que j'ai ecrit

en fait, le but de mon script , c'est que lorsque j'arrive dans mon formulaire , et que je choisis un type de document parmi une liste arborescente, mes combo box qui existent deja et qui sont initialisees a "vide" se mettent a jour automatiquement selon la valeur de la colonne code_affichage dans ma base de données, et ensuite , lorsque elles se sont mises a jour, je clique sur valider pour avoir tous les documents du type choisi et en affichannt que les colonne specifiees

<script type="text/javascript"> 


var types_tab = new Array; // Liste des Types de Documents
<?php
 $types_tab = generate_types_tab();  //genere le tableau de tous les types de documents
 $res = db_send_query("","SELECT NUM_TYPE, code_affichage FROM type_document");
 while($row = db_fetch_assoc($res)){
  $code_affichage = explode ("#", $row["code_affichage"]);
  echo "types_tab[".$row['NUM_TYPE']."] = new Array(";  //la j'essaie de construire une sorte de liste car dans ma base de données j'ai stocké
  $list = "";                      //les colonnes âr default sous la forme code_doc#libelle#none#none# etc ....par exemple
  for($i=0;$i<sizeof($code_affichage);$i++){
   $list .= "'".$code_affichage."',";
  }
  echo substr($list,0,sizeof($list)-1).");\n";
 }
 
 var_dump( $list);
?>


function update_liste_affichage(type) {
 alert('bonjour');
 
 for(i=0;i<6;i++){
  var cur_combobox = document.form00['c2'+i];
  for(k=0; k<cur_combobox.options.length;k++)
   if(type_tabs[type][k]==cur_combobox.options[k].value)
    cur_combobox.options[k].selected = true;
   else
    cur_combobox.options[k].selected = false;
 }
}
</script>
Commenter la réponse de eclipse012
Messages postés
5
Date d'inscription
mardi 16 janvier 2007
Statut
Membre
Dernière intervention
19 janvier 2007
0
Merci
bonjour

voici le code que j'ai ecrit

en fait, le but de mon script , c'est que lorsque j'arrive dans mon formulaire , et que je choisis un type de document parmi une liste arborescente, mes combo box qui existent deja et qui sont initialisees a "vide" se mettent a jour automatiquement selon la valeur de la colonne code_affichage dans ma base de données, et ensuite , lorsque elles se sont mises a jour, je clique sur valider pour avoir tous les documents du type choisi et en affichannt que les colonne specifiees

<script type="text/javascript"> 


var types_tab = new Array; // Liste des Types de Documents
<?php
 $types_tab = generate_types_tab();  //genere le tableau de tous les types de documents
 $res = db_send_query("","SELECT NUM_TYPE, code_affichage FROM type_document");
 while($row = db_fetch_assoc($res)){
  $code_affichage = explode ("#", $row["code_affichage"]);
  echo "types_tab[".$row['NUM_TYPE']."] = new Array(";  //la j'essaie de construire une sorte de liste car dans ma base de données j'ai stocké
  $list = "";                      //les colonnes âr default sous la forme code_doc#libelle#none#none# etc ....par exemple
  for($i=0;$i<sizeof($code_affichage);$i++){
   $list .= "'".$code_affichage."',";
  }
  echo substr($list,0,sizeof($list)-1).");\n";
 }
 
 var_dump( $list);
?>


function update_liste_affichage(type) {
 alert('bonjour');
 
 for(i=0;i<6;i++){
  var cur_combobox = document.form00['c2'+i];
  for(k=0; k<cur_combobox.options.length;k++)
   if(type_tabs[type][k]==cur_combobox.options[k].value)
    cur_combobox.options[k].selected = true;
   else
    cur_combobox.options[k].selected = false;
 }
}
</script>
Commenter la réponse de eclipse012
Messages postés
5
Date d'inscription
mardi 16 janvier 2007
Statut
Membre
Dernière intervention
19 janvier 2007
0
Merci
merci pour votre aide; j'ai trouvé mes erreurs et mon probleme s'est finaleemnt résolu!!!

cordialement

eclipse
Commenter la réponse de eclipse012