2013-05-30 3 views
0

인쇄 할 정보가 있는지 여부에 따라 인쇄 할 문자를 제한하려고합니다. I.E. "Y"에 대한 항목이 없으면 목록에 "Y"가 없어야합니다. 아래 코드는 필터링을 위해 올바르게 작동하는 코드입니다. 제출 된 문자로 시작하는 항목 만 응답하는 서버에 대한 호출을 제출합니다.문자 인쇄 제한

A | B | C | D | E | F | G |...... 

나는 "D"와 "E"

+0

주위

$result = array_filter($filters['contextual']); print_r($result); 

아니면 뭔가 어디에 인쇄 코드? – RST

+0

이것은 Drupal 모듈의 일부입니다. 인쇄물은 다른 부분에 사용자 정의되어 있습니다. – Alan

답변

0

어쩌면 당신이 원하는 문자 만 반환하도록 데이터베이스 쿼리를 조정할 수도 있고, 항상 array_filter을 사용하고 값을 갖고 있지 않은 항목을 무시할 수도 있습니다. 이 라인

$result = array_filter($filters['contextual'], function($a){ 
    return !empty($a['the_key_you_need_to_check']); 
}); 
print_r($result); 
0

당신에게에 대한 항목이없는 경우

A | B | C | F | G |...... 

을 인쇄 할 필요합니다

// contextual filter list 
    $filters['contextual'] = array(
    '#attributes' => array(
     'class' => array('contextual_filter_list'), 
     ), 
    '#type' => 'container', 
    ); 
    $alphabets = range('A', 'Z',); 
    foreach ($alphabets as $value) { 
    $filters['contextual'][$value] = array(
    '#attributes' => array(
     'class' => array('contextual_letter'), 
     ), 
    '#type' => 'submit', 
    '#value' => $value, 
    '#title' => t($value), 
    '#submit' => $value, 
    '#name' => 'Select', 
    ); 
    } 

// GET company list for A-Z filter bar 
    $value = $_GET["Select"]; 

    $qry = db_select('cloud_computing_capability_data', 'cd'); 
    $qry -> fields('cd', cloud_computing_data_company::db_fields()); 

    // condition to query all or a single letter for companies 
    if ($value != 'View All'){ 
    $qry -> condition('company',$value.'%','LIKE'); 
    }; 

그것은이 출력합니다 데이터베이스를 쿼리해야합니다. 사용중인 데이터베이스 구조 나 프레임 워크를 알지 못하기 때문에이를 수행하기 위해 간단한 SQL 쿼리를 작성합니다.

하위 문자열에서 주 문자를 가져올 수도 있습니다. 그러면 다음과 같이 보일 것입니다 :

SELECT DISTINCT(LEFT(name, 1)) 
-- rest of query 

행운을 빈다!

사용중인 ORM에이 쿼리를 적용하는 것은 여러분에게 달려 있습니다.