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

Langage PHP Discussion :

[PHP-JS] double combobox en PHP/Javascript, données de MySQL


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Par défaut [PHP-JS] double combobox en PHP/Javascript, données de MySQL
    Bonjour à tous

    Je cherche depuis pas mal de temps à résoudre un problème de programmation php / javascript.

    Il s'agit de la combobox double à l'interieur d'un formulaire.

    En ce moment j'utilise des templates HTML - le but est de réaliser ca sans template.
    Malheureusement, je ne m'y connais pas en Javascript.

    Quelqu'un s'y connaît-il suffisamment pour m'aider SVP?


    Ce que j'ai aujourd'hui:

    Ce Script dans <head>:
    <script language="Javascript">

    var cats = new Array();

    <!--Begincats-->
    cats["{region_de}"] = "{region_id}";
    <!--Endcats-->

    function set_subcat(fform,llb1,llb2,ccats) {
    lb1 = document.all[llb1];
    lb2 = document.all[llb2];

    index = lb2.selectedIndex;
    if ( index<0 ) index = null;
    if (lb2.options[index] != null) {
    val = lb2.options[index].value;
    } else {
    val = null;
    }

    key=lb1.options[lb1.selectedIndex].value.toString().split('#')[0];

    for (i=document.forms[fform].elements[llb2].options.length; i >=0 ; i--) {
    document.forms[fform].elements[llb2].options[i]=null;
    }
    var i = 1 ;
    document.forms[fform].elements[llb2].options[i] = new Option("","",false,false);
    for (iter in ccats) {
    tmp = ccats[iter.toString()].split("#")[1];
    tmp2 = ccats[iter.toString()].split("#")[0];
    if (tmp==key) {
    if (tmp2==val) {
    document.forms[fform].elements[llb2].options[i] = new Option(iter.toString().split("#")[0],ccats[iter.toString()],true,true);
    document.forms[fform].elements[llb2].options[i].selected = true;
    }
    else{
    document.forms[fform].elements[llb2].options[i] = new Option(iter.toString().split("#")[0],ccats[iter.toString()],false,false);}
    i++;
    }
    }
    }

    function set_subcat2 () {
    set_subcat("Search","s_entry_country","s_entry_region",cats);
    }

    /*document.Search.s_entry_country.options[0]=null;*/
    document.Search.s_entry_country.onchange = set_subcat2;

    set_subcat("Search","s_entry_country","s_entry_region",cats);
    </script>
    et le script suivant forme le début du formulaire de recherche avec les deux <selects> formant la double combobox:
    <form method="GET" action="<?= $sActionFileName ?>" name="Search">
    <input type="hidden" name="FormName" value="Search"><input type="hidden" name="FormAction" value="search">
    <table class="FormTABLE">
    <tr>
    <td class="FormHeaderTD" colspan="13"><a name="Search"><font class="FormHeaderFONT"><?=$sFormTitle?></font></a></td>
    </tr>
    <tr>
    <td class="FieldCaptionTD"><font class="FieldCaptionFONT">Land</font></td>
    <td class="DataTD"><select size="1" name="s_entry_country">
    <?
    echo "<option value=\"\">" . $ss_entry_countryDisplayValue . "</option>";
    $lookup_s_entry_country = db_fill_array("select country_id, country_de from ts_countries order by 2");

    if(is_array($lookup_s_entry_country))
    {
    reset($lookup_s_entry_country);
    while(list($key, $value) = each($lookup_s_entry_country))
    {
    if($key == $flds_entry_country)
    $option="<option SELECTED value=\"$key\">$value";
    else
    $option="<option value=\"$key\">$value";
    echo $option;
    }
    }

    ?></select></td>
    </tr>
    <tr>
    <td class="FieldCaptionTD"><font class="FieldCaptionFONT">Region</font></td>
    <td class="DataTD"><select name="s_entry_region">
    <?
    echo "<option value=\"\">" . $ss_entry_regionDisplayValue . "</option>";
    $lookup_s_entry_region = db_fill_array("select region_id, region_de from ts_regions order by 2");

    if(is_array($lookup_s_entry_region))
    {
    reset($lookup_s_entry_region);
    while(list($key, $value) = each($lookup_s_entry_region))
    {
    if($key == $flds_entry_region)
    $option="<option SELECTED value=\"$key\">$value";
    else
    $option="<option value=\"$key\">$value";
    echo $option;
    }
    }

    ?></select></td>
    Ca ne fonctionne bien sûr pas encore tout à fait.

    Ce qui me manque, c'est l'actualisation de la seconde listbox.

    Dans la version avec templates HTML, le script faisait aussi la chose suivante, qui je pense peuple la deuxième listbox:

    $db->query("select region_id,country_id,region_de from ts_regions order by region_de");

    $tpl->set_var("region_id","");
    $tpl->set_var("region_de","Alle");
    $tpl->parse("cats",true);

    while ($db->next_record()) {
    $tpl->set_var("region_id",$db->f("region_id")."#".$db->f("country_id"));
    $tpl->set_var("region_de",$db->f("region_de")."#".$db->f("region_id"));
    $tpl->parse("cats",true);
    }
    La question est donc: comment dois-je modifier le début du formulaire pour que la deuxième listbox s'auto-actualise avec les bonnes données?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Par défaut
    Resolu

    il me fallait just remplacer la ligne JS suivante
    cats["{region_de}"] = "{region_id}";

    par du php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?
    $cats_hack = db_fill_array("select concat(region_de,'#',region_id), concat(region_id,'#',country_id) from ts_regions order by region_de");
    echo 'cats["Alle"] = "";';
        if(is_array($cats_hack))
        {
          reset($cats_hack);
          while(list($key, $value) = each($cats_hack))
          {
    echo 'cats["'.$key.'"] = "'.$value.'";';
          }
        }
    ?>

  3. #3
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Salut et bienvenue dans les forums de Developpez.com !

    Pour info, le bouton résolu est en bas de cette page, juste en dessous de ce message, à+

  4. #4
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    ok, je m'en occupe

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 14/06/2009, 22h12
  2. [PHP-JS] Double Cryptage avec PHP
    Par erreurx dans le forum Langage
    Réponses: 2
    Dernier message: 21/04/2008, 18h22
  3. Réponses: 5
    Dernier message: 14/06/2006, 16h35
  4. [PHP-JS] passage de variable php a javascript
    Par limpins dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/07/2005, 11h54
  5. [PHP-JS] comment lancer une fonction javascript a partir de php
    Par amika dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/06/2005, 19h23

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