www.webdeveloper.com
Results 1 to 2 of 2

Thread: [RESOLVED] Double combo in PHP/Javascript search form, data from MySQL

  1. #1
    Join Date
    Sep 2006
    Posts
    2

    resolved [RESOLVED] Double combo in PHP/Javascript search form, data from MySQL

    Hi

    I try to make a double combobox in php/javascript.
    I already have a working version of this that uses PHP+Templates, but I do not want to use Templates.

    What I have today:

    This Script in <Head> section:
    Code:
     <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>
    Then the following is the begin of the searchform, with the two selects of the double combobox:
    Code:
        <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>
    Now this still doesn't work.

    In the templated version, there is this function, which I suppose to be populating the second listbox:
    Code:
    $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);
    }
    I suppose this last bit is reponsible for populating the second listbox through "cats", and all I need to do is integrate this part somewhere in the form?

    Could someone help me to do that please?

  2. #2
    Join Date
    Sep 2006
    Posts
    2
    Solved

    I just needed to replace the JS line
    cats["{region_de}"] = "{region_id}";

    by some php:
    Code:
    <?
    $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.'";';
          }
        }
    ?>

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles