限制打印出来的字母

时间:2013-05-30 14:27:37

标签: php drupal pagination alphabetical

我试图根据是否有要打印的信息限制打印出哪些字母。 I.E.如果“Y”没有条目,那么列表中不应该有“Y”。下面是我正在进行过滤的代码。它向服务器提交一个调用,该调用只响应以提交的字母开头的条目。

  // 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');
    };

打印出来:

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

我需要打印出来

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

如果没有“D”和“E”的条目

2 个答案:

答案 0 :(得分:0)

您必须查询数据库。由于我不知道您的数据库结构或您正在使用的框架,我将编写简单的SQL查询来执行此操作。

SELECT DISTINCT(main_letter) 
FROM `the_table`
WHERE 1 -- add your conditions here, if any
ORDER BY main_letter ASC

您还可以从子字符串中获取主要字母。它看起来像这样:

SELECT DISTINCT(LEFT(name, 1))
-- rest of query
祝你好运!

由您来调整此查询到您正在使用的ORM。

答案 1 :(得分:0)

也许您可以调整数据库查询以仅返回所需的字母,或者始终使用array_filter并忽略没有值的条目。

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

或许围绕这一行

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