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
1301
Visitas
Visitas
1
Resp
Resp
Por fernandoury hace 9 años
Novice
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
Por fernandoury hace 9 años
Novice