2015-12-18 15 views
12

こんにちは私はjoomla用のjbusinessdirectoryコンポーネントをインストールしています。これはtmpl/default.phpファイルのmod_jbusinessdirectoryという名前のモジュールです(これはビジネスリスティングの検索モジュールです)。カテゴリとサブカテゴリを論理的に選択

  • メインカテゴリ1
  • サブカテゴリ1つのサブカテゴリ2 subcateg:私はこのようなカテゴリとサブカテゴリを取得する(下記参照)

    <?php if($params->get('showCategories')){ ?> 
        <div class="select"> 
         <div class="categoryic"></div> 
         <select name="categorySearch" class="select-styled" id="categories"> 
        <option value="0">category</option> 
        <?php foreach($categories as $category){?> 
        <option value="<?php echo $category->id?>" <?php echo $session->get('categorySearch')==$category->id && $preserve?" selected ":"" ?> ><?php echo $category->name?></option> 
        <?php if(!empty($category->subcategories)){?> 
        <?php foreach($category->subcategories as $subCat){?> 
        <option value="<?php echo $subCat->id?>" <?php echo $session->get('categorySearch')==$subCat->id && $preserve?" selected ":"" ?> >-- <?php echo $subCat->name?></option> 
        <?php }?> 
         <?php }?> 
         <?php }?> 
        </select> 
        </div> 
    <?php }?> 
    

    このコードから:選択したコードを持っていますここORY 3

  • メインカテゴリ2

  • サブカテゴリ1サブカテゴリ2サブカテゴリ3

スクリーンショット:私はデータベース

からカテゴリとサブカテゴリを取得する機能を持っているhelper.phpで categories and sub categories screenshot

static function getMainCategories(){ 
    $db = JFactory::getDBO(); 
    $query = ' SELECT * FROM #__jbusinessdirectory_categories where parent_id=1 and published=1 order by name'; 
    $db->setQuery($query); 
    return $db->loadObjectList(); 
} 

static function getSubCategories(){ 
    $db = JFactory::getDBO(); 
    $query = ' SELECT c.* FROM #__jbusinessdirectory_categories c 
       inner join #__jbusinessdirectory_categories cc on c.parent_id = cc.id where c.parent_id!=1 and cc.parent_id = 1 and c.published=1 
       order by c.name'; 
    $db->setQuery($query,0,1000); 
    $result = $db->loadObjectList(); 

    return $result; 
} 

最後に、modjbusinesディレクトリこのような私がPHPを持っているの.phpファイル:

if($params->get('showCategories')){ 
    $categories = modJBusinessDirectoryHelper::getMainCategories(); 
    if($params->get('showSubCategories')){ 
     $subCategories = modJBusinessDirectoryHelper::getSubCategories(); 
     foreach($categories as $category){ 
      foreach($subCategories as $subCat){ 
       if($category->id == $subCat->parent_id){ 
        if(!isset($category->subcategories)){ 
         $category->subcategories = array(); 
        } 
        $category->subcategories[] = $subCat; 
       } 
      } 
     } 
    } 
} 

カテゴリとサブカテゴリテーブル構造のスクリーンショット here

は、私の質問は:どのように私は2つの選択クエリの代わりのものを作るのですか。最初のクエリではメインカテゴリを取得し、2番目のクエリではサブカテゴリを取得します(例:最初のクエリからメインカテゴリの書籍を選択し、2番目のクエリで子供を選択する場合はサブカテゴリのみを表示する必要があります子供の本)。

+0

あなたの英語は綴り間違いがいくつかありますが、あなたがそれらの意味を理解して訂正しました。また、最初のクエリの結果を変数に、2番目のクエリをexample booksに入れようとしました。 'あなたが必要とする列を選択してくださいどこからMainCategoryColumn = $ MainCategoryVariableとSubcategoryColumn = $ inputVariable' – BRoebie

+0

答えをありがとう、しかし私は初心者です、私はあなたが意味するものを理解できませんでした –

+0

メインカテゴリとサブカテゴリは1列ですが、 have parent_id column –

答えて

0

コードはすでにあなたが望むことをしているようです。あなたは2つのクエリをしたいと2があります。しかし、私はこれらの2つのクエリの結果が1つの結果に結合し、それを2つの結果に吐き続けると思います。

カテゴリIDパラメータを受け入れる新しいカテゴリ関数を追加する必要があります。

<?php 

static function getCategoryById($id){ 
    $id = intval($id); 
    $db = JFactory::getDBO(); 
    $query = ' 
     SELECT * 
     FROM #__jbusinessdirectory_categories 
     WHERE 
      published=1 
     AND id= '.$id; 
    $db->setQuery($query); 
    return $db->loadObject(); 
} 

static function getChildCategoryList($id){ 
    $id = intval($id); 
    $db = JFactory::getDBO(); 
    $query = ' 
     SELECT c.* 
     FROM #__jbusinessdirectory_categories c 
     INNER JOIN #__jbusinessdirectory_categories cc 
     ON c.parent_id = cc.id 
     WHERE c.parent_id!=1 
     AND cc.id = '.$id.' 
     AND c.published=1 
     ORDER BY c.name'; 
    $db->setQuery($query,0,1000); 
    $result = $db->loadObjectList(); 

    return $result; 
} 

私はパラメータを取得するJoomlaコードに慣れていませんが、誰かがメインカテゴリを選択したときにPOSTすればIDを見つけることができます。

<?php 
if($params->get('showCategories')){ 
    $categoryId = (int) $params->get('mainCategory'); 
    $category = modJBusinessDirectoryHelper::getCategoriesById($categoryId); 

    $subCategories = modJBusinessDirectoryHelper::getChildCategoryList($categoryId); 
    } 
} 
関連する問題