카테고리 및 하위 카테고리 논리적 선택(php, joomla, javscript, jax)
안녕하세요 joomla용 jbusiness directory component를 설치했고 tmpl/default.php 파일에 mod_jbusiness directory(비즈니스 목록 검색 모듈입니다)라는 모듈이 있습니다. 코드 선택: (아래 참조)
<?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 }?>
이 코드로부터 다음과 같은 범주와 하위 범주를 얻습니다.
- 주 카테고리 1
하위 카테고리 1 하위 카테고리 2 하위 카테고리 3
주 카테고리 2
- 하위 카테고리 1 하위 카테고리 2 하위 카테고리 3
스크린샷 여기: 카테고리 및 하위 카테고리 스크린샷
도우미.php 저는 데이터베이스에서 카테고리와 하위 카테고리를 가져오는 기능을 가지고 있습니다.
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 directory.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;
}
}
}
}
}
카테고리 및 하위 카테고리 테이블 구조 스크린샷 여기
제 질문은 다음과 같습니다.하나가 아닌 두 개의 선택 쿼리를 만들려면 어떻게 해야 합니까?첫 번째 쿼리에서 주요 범주를 얻고 두 번째 쿼리에서 하위 범주를 얻습니다(예: 첫 번째 쿼리에서 주요 범주 책을 선택하고 두 번째 쿼리에서 하위 범주 책이 있는 책만 표시해야 함).
범주를 가져오려면 아래 쿼리를 사용할 수 있습니다.
function all_cat($id='',$child_of_child='parent')
{
$CI =& get_instance();
if($id="")
{
$query = $CI->db->get_where("__jbusinessdirectory_categories",array('parent_id'=>1));
}
else
{
$query = $CI->db->get_where("__jbusinessdirectory_categories",array('parent_id'=>$id));
}
//echo $CI->db->last_query()."<br>";
$op = '';
if($query->num_rows() > 0)
{
$res = $query->result();
//pr($res);
if($child_of_child == 'child')
{
$op .= '<ul class="sub_cat mrg-top-5" style="display:none;" id="'.$id.'">';
}
else
{
$op .= '<ul class="sub_cat " id="'.$id.'">';
}
foreach($res as $r)
{
$op .= '<li><a href="'.site_url('category/search/9/1V1/'.$r->id).'" class="temp">'.ucwords($r->name).'</a>
</li>';
$op .= all_cat($r->id,$child_of_child='child');
}
return $op .= '</ul>';
}
else
{
return $op;
}
}
코드가 이미 원하는 대로 실행되는 것 같습니다.당신은 2개의 쿼리를 원하는데 2개가 있습니다.하지만 이 두 쿼리의 결과가 하나의 결과로 합쳐져서 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;
}
파라미터를 검색하는 줌라 코드는 잘 모르지만 메인 카테고리를 선택할 때 게시하면 ID를 찾을 수 있습니다.
<?php
if($params->get('showCategories')){
$categoryId = (int) $params->get('mainCategory');
$category = modJBusinessDirectoryHelper::getCategoriesById($categoryId);
$subCategories = modJBusinessDirectoryHelper::getChildCategoryList($categoryId);
}
}
언급URL : https://stackoverflow.com/questions/34351675/logically-select-categories-and-subcategories-php-joomla-javascript-ajax
'codememo' 카테고리의 다른 글
| 네이티브 워드프레스 검색 결과에 저자(사용자)를 포함시키는 방법은? (0) | 2023.09.25 |
|---|---|
| 기술적으로 데이터베이스 연결이란 무엇입니까? (0) | 2023.09.25 |
| 오버플로: 숨김 또는 오버플로: 스크롤 디브의 실제 .높이()를 얻으려면 어떻게 해야 합니까? (0) | 2023.09.25 |
| MySQL 비활성화 및 활성화 키 (0) | 2023.09.25 |
| AngularJS 단순 "Hello, world" 작동 안 함 (0) | 2023.09.25 |