Combo dependientes
Hola como estan?
Miren tengo este script :
el cual funciona excelente, junto con su otra parte :
Ahora el tema es yo quiero que sea dependiente de una sola base de datos que tenga todos los datos y que cuando elijo una categoria aparezca la subcategoria..
algo asi :
en la categoria aparece varias veces casa y jardin y en la subcategoria una sola
Editado
Miren tengo este script :
<?php //////////// CATEGORIAS /////////// mysql_select_db($database_config, $config); $query_cat = "SELECT hs_categorias.id, hs_categorias.categorias, subcategorias.sub, subcategorias.id FROM hs_categorias, subcategorias WHERE subcategorias.idcat = hs_categorias.id"; $cat = mysql_query($query_cat, $config) or die(mysql_error()); $row_cat = mysql_fetch_assoc($cat); $totalRows_cat = mysql_num_rows($cat); ?>
el cual funciona excelente, junto con su otra parte :
<select id="categoria" name="categoria" onChange="categoria_reload(this)"> <option selected>categoria</option> </select> <select id="subcategoria" name="subcategoria" onChange="categoria_reload(this)"> <option selected>subcategoria</option> </select></p>que tambien funciona excelente!!
Ahora el tema es yo quiero que sea dependiente de una sola base de datos que tenga todos los datos y que cuando elijo una categoria aparezca la subcategoria..
algo asi :
<script language="JavaScript"> categoria_contents=new Array(); categoria_tempArray=new Array(); categoria_counter=0; categoria_isDataOrdered=1; function categoria_addContent(str){ categoria_contents[categoria_counter]=str; categoria_counter++; } function categoria_split(){ categoria_arrayValues = new Array(); for(i=0;i<categoria_contents.length;i++){ categoria_arrayValues[i]=categoria_contents[i].split(separator); categoria_tempArray[0]=categoria_arrayValues; } } function categoria_makeSelValueGroup(){ categoria_selValueGroup=new Array(); var args=categoria_makeSelValueGroup.arguments; for(i=0;i<args.length;i++){ categoria_selValueGroup[i]=args[i]; categoria_tempArray[i]=new Array(); } } function categoria_makeComboGroup(){ categoria_comboGroup=new Array(); var args=categoria_makeComboGroup.arguments; for(i=0;i<args.length;i++) categoria_comboGroup[i]=findObj(args[i]); } function categoria_setDefault(){ for (i=categoria_selValueGroup.length-1;i>=0;i--){ if(categoria_selValueGroup[i]!=""){ for(j=0;j<categoria_contents.length;j++){ if(categoria_arrayValues[j][(i*2)+1]==categoria_selValueGroup[i]){ for(k=i;k>=0;k--){ if(categoria_selValueGroup[k]=="") categoria_selValueGroup[k]=categoria_arrayValues[j][(k*2)+1]; } } } } } } function categoria_loadMenu(daIndex){ var selectionMade=false; daArray=categoria_tempArray[daIndex]; categoria_comboGroup[daIndex].options.length=1; var categoria_cur_daArrayValue=""; if(categoria_isDataOrdered==1){ for(i=0;i<daArray.length;i++){ if(categoria_cur_daArrayValue!=daArray[i][(daIndex*2)+1]){ categoria_comboGroup[daIndex].options[categoria_comboGroup[daIndex].options.length]=new Option(daArray[i][daIndex*2],daArray[i][(daIndex*2)+1]); categoria_cur_daArrayValue=daArray[i][(daIndex*2)+1]; } } }else{ for(i=0;i<daArray.length;i++){ existe=false; for(j=0;j<categoria_comboGroup[daIndex].options.length;j++){ if(daArray[i][(daIndex*2)+1]==categoria_comboGroup[daIndex].options[j].value) existe=true; } if(existe==false){ lastValue=categoria_comboGroup[daIndex].options.length; categoria_comboGroup[daIndex].options[categoria_comboGroup[daIndex].options.length]=new Option(daArray[i][daIndex*2],daArray[i][(daIndex*2)+1]); if(categoria_selValueGroup[daIndex]==categoria_comboGroup[daIndex].options[lastValue].value){ categoria_comboGroup[daIndex].options[lastValue].selected=true; selectionMade=true; } } } } if(selectionMade==false) categoria_comboGroup[daIndex].options[0].selected=true; } function categoria_reload(from){ if(!from){ categoria_split(); categoria_setDefault(); categoria_loadMenu(0); categoria_reload(categoria_comboGroup[0]); }else{ for(j=0; j<categoria_comboGroup.length; j++){ if(categoria_comboGroup[j]==from) index=j+1; } if(index<categoria_comboGroup.length){ categoria_tempArray[index].length=0; for(i=0;i<categoria_comboGroup[index-1].options.length;i++){ if(categoria_comboGroup[index-1].options[i].selected==true){ for(j=0;j<categoria_tempArray[index-1].length;j++){ if(categoria_comboGroup[index-1].options[i].value==categoria_tempArray[index-1][j][(index*2)-1]) categoria_tempArray[index][categoria_tempArray[index].length]=categoria_tempArray[index-1][j]; } } } categoria_loadMenu(index); categoria_reload(categoria_comboGroup[index]); } } } function findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=findObj(n,d.layers[i].document); if(!x && d.getElementById) x=d.getElementById(n); return x; } categoria_makeSelValueGroup("",""); categoria_makeComboGroup("categoria","subcategoria"); var separator="+#+"; <?php do{?> categoria_addContent("<?php echo $row_cat['categorias']; ?>+#+<?php echo $row_cat['id']; ?>+#+<?php echo $row_cat['sub']; ?>+#+<?php echo $row_cat['id']; ?>"); <?php } while ($row_cat= mysql_fetch_assoc($cat)); ?> categoria_reload(); </script>Hasta acá todo bien, pero cuando lo pruebo me sale repetido barias veces la misma categoria y una sola subcategoria.
en la categoria aparece varias veces casa y jardin y en la subcategoria una sola
Editado
0
Puntos
Puntos
1342
Visitas
Visitas
1
Resp
Resp
Respuesta #1
Lo arregle !!!
Lo dejo para alguno que le sirva!!
en esta parte del codigo :
quedaria así :
quedo marchando !!
Lo dejo para alguno que le sirva!!
en esta parte del codigo :
<?php //////////// CATEGORIAS /////////// mysql_select_db($database_config, $config); $query_cat = "SELECT hs_categorias.id, hs_categorias.categorias, hs_categorias.id, esto lo cambie por esto hs_categorias.valor subcategorias.sub, subcategorias.id FROM hs_categorias, subcategorias WHERE subcategorias.idcat = hs_categorias.id"; $cat = mysql_query($query_cat, $config) or die(mysql_error()); $row_cat = mysql_fetch_assoc($cat); $totalRows_cat = mysql_num_rows($cat); ?>
quedaria así :
<?php mysql_select_db($database_config, $config); $query_cat = "SELECT hs_categorias.valor, hs_categorias.categorias, subcategorias.sub, subcategorias.id FROM hs_categorias, subcategorias WHERE subcategorias.idcat = hs_categorias.id"; $cat = mysql_query($query_cat, $config) or die(mysql_error()); $row_cat = mysql_fetch_assoc($cat); $totalRows_cat = mysql_num_rows($cat); ?>
quedo marchando !!
1
Puntos
Puntos