CodeCharge Studio
search Register Login  

Web Reporting

Visually create Web Reports in PHP, ASP, .NET, Java, Perl and ColdFusion.
CodeCharge.com

YesSoftware Forums -> CodeCharge -> Programming

 double combobox in php without templates

Print topic Send  topic

Author Message
Manarak

Posts: 10
Posted: 09/23/2006, 3:38 AM

Hi - I try to make a double combobox in php/javascript based on this example
http://www.gotocode.com/art.asp?art_id=45

I have a working version of this that uses PHP+Templates, but I do not want to use Templates, and my Javascipt knowledge is bad.

What I have today:

This Script in <Head> section:
 <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=null;   
}   
var i = 1 ;   
document.forms[fform].elements[llb2].options = 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 = new Option(iter.toString().split("#")[0],ccats[iter.toString()],true,true);   
document.forms[fform].elements[llb2].options.selected = true;   
}   
else{   
document.forms[fform].elements[llb2].options = 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:
    <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:
$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?
View profile  Send private message
Manarak

Posts: 10
Posted: 09/23/2006, 11:42 AM

Solved!

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

by some php

  
<?  
$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.'";';  
      }  
    }  
?>  
View profile  Send private message

Add new topic Subscribe to topic   


These are Community Forums for users to exchange information.
If you would like to obtain technical product help please visit http://support.yessoftware.com.

Web Database

Join thousands of Web developers who build Web applications with minimal coding.
CodeCharge.com

Home   |    Search   |    Members   |    Register   |    Login


Powered by UltraApps Forum created with CodeCharge Studio
Copyright © 2003-2004 by UltraApps.com  and YesSoftware, Inc.