Jump to content

maxiim

New Members
  • Posts

    1
  • Joined

  • Last visited

    Never

Profile Information

  • Gender
    Not Telling

maxiim's Achievements

Newbie

Newbie (1/5)

0

Reputation

  1. I have a database table with categories and subcategories. I want to use a cascading comboboxes for choosing subcategories but it is not working. i.e. if I choose the category "a" in first comobox, second combobox would appear with subcategory "a-a"... Table example: 'categories' ('id', 'parent', 'wholeName') (1, 0, a) (2, 0, b) (3, 0, c) (4, 1, a-a) (5, 2, b-b) (6, 3, c-c) (7, 4, a-a-a) PHP function: function getSelectFromTree( $forTheSearchForm = FALSE, $noFilter=FALSE, $attrs="" ) { global $gorumroll; $_S = & new AppSettings(); hasAdminRights($isAdm); $itemNumCond = $_S->cascadingCategorySelectEnabled() && $gorumroll->list!="customlist" && $forTheSearchForm ? "AND itemNum>0" : ""; if( !$attrs ) $attrs = "id, name, parent, sortId, wholeName, allowAd, allowSubmitAdAdmin, itemNum, recursive, subCatNum"; if( $_S->permaLinksEnabled() ) $attrs.=", permaLink"; $query = "SELECT * FROM @category WHERE parent=0 $itemNumCond ORDER BY wholeName ASC"; G::load( $cats, $query ); if( $_S->cascadingCategorySelectEnabled() && $gorumroll->list!="customlist" && $gorumroll->rollid!=="alternative") return $cats; $cat = new AppCategory(); $tree = & $cat->getCategoryTree( $cats, $attrs ); if( $noFilter ) $cond = FALSE; else { $cond = $isAdm ? '$node["cat"]->allowAd==1' : '$node["cat"]->allowAd==1 && $node["cat"]->allowSubmitAdAdmin==0'; if( $forTheSearchForm ) $cond.= ' && $node["cat"]->itemNum>0'; $cond = "(($cond) || \$node['cat']->recursive)"; } $categories = array(); $cat->getArrayFromCategoryTree($tree, $categories, $cond, 0); return $categories; } Javascript code: $JQ.extend($JQ.test, { addNextSelectRow: function(url, subCategoryLabel, tableId) { $JQ.addNextSelectRowCore = function() { tableId = '#' + tableId; var cid = this.options[this.selectedIndex].value; var allowAd = $JQ(this.options[this.selectedIndex]).attr('rel'); if( typeof allowAd=='undefined' ) allowAd=0; var container = $JQ(this).closest('tr'); var rows = $JQ(tableId + ' tbody').eq(0).find('tr'); for( var i=rows.index(container)+1; i<rows.length; i++ ) rows.eq(i).remove(); if( cid!=0 ) { $JQ(tableId + ' input:submit').hide(); $JQ(tableId + ' .submitfooter').append($JQ(loadingAnimation)); $JQ.getJSON(url+cid, '', function(data){ $JQ('.loadingAnimation').remove(); if( data.fields!='' ) { container.clone(true).insertAfter(container).find('select').html(data.fields).end() .find('.label').html(subCategoryLabel); } if( data.allowAd=='1' ) { $JQ(tableId + ' input:submit').eq(0).show(); } else { $JQ(tableId + ' input:submit').eq(0).hide(); $JQ(tableId + ' input:submit').eq(1).show(); } }); } else { if( allowAd==0 ) { $JQ(tableId + ' input:submit').eq(0).hide(); $JQ(tableId + ' input:submit').eq(1).show(); } else { $JQ(tableId + ' input:submit').eq(0).show(); $JQ(tableId + ' input:submit').eq(1).hide(); } } } }, cascadingSelectOnLoad: function(tableId) { tableId = '#' + tableId; $JQ('[id^=cid]').livequery('change', $JQ.addNextSelectRowCore); $JQ(tableId + ' input:submit').eq(0).click(function(e){ var selects = $JQ(e.target).closest('form').find('select:[name=cid]'); var select = selects[selects.length-1]; var cid = select.options[select.selectedIndex].value; if( cid==0 ) { select = selects[selects.length-2]; cid = select.options[select.selectedIndex].value; } if( !cid ) return true; var href = location.href; location.href = href.replace(/\/?\d*$/, '/'+cid); return false; }); }, simpleCategoryReload: function() { $JQ('#cid').change(function (){ var cid = this.options[this.selectedIndex].value; var href = location.href; location.href = href.replace(/\/?\d*$/, '/'+cid); }); } }); Please help. Thank you!
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.