Táblázat szűrése

makgab képe

Üdv!

Adott egy táblázat, ami egy SQL query eredményét mutatja, kb.:

<?php
function mymodul_list() {
   $res = db_query("SELECT ...");
   // ...
 
  // headers
  $header = array(
    array('data' => t('Country'), 'field' => 'country', 'sort' => 'asc'),
    // ...
    );
 
  // rows
  $rows = array();
 
  // ...
  $query = db_select('mymodul', 'c')->distinct()->extend('PagerDefault')->extend('TableSort');
 
  // ...
 
  $result = $query
      ->limit(50)
      ->orderByHeader($header)
      ->execute();
 
  $build['mymodul_table'] = array(
    '#theme' => 'table',
    '#header' => $header,
    '#rows' => $rows,
    );
  $build['mymodul_pager'] = array(
    '#theme' => 'pager',
    );
 
  return $build;
 
}
?>

Meghíváskor tehát lefut egy alap SQL query. Ezen csak annyit szeretnék szépíteni, hogy a táblázat felett kellene 1-2 mező és pl. egy "Szűrés" gomb, ami az SQL-t szűri. Azaz a gombnyomásra újra "lefut" ez a form, de az SQL módosul a mezőkben megadott feltételekkel.
Ezt hogyan lehet szépen megoldani?
Tegyek a táblázat fölé mezőket és egy submit gombot? Pl.:

function mymodul_list($form, &$form_state) {
$build['filter1'] = array(
'#type' => 'textfield',
// ...
);
$build['submit'] = array(
'#type' => 'submit',
// ...
);
 
...

A postolt form adatokat nem tudom ($form_state['values']['filter1']) felhasználni. Bár ez valamiért nem működött. Nem létezett a $form_state['values'] sem.

Mi lenne a szép megoldás?

Drupal verzió: 
makgab képe

Azt hiszem ezt kerestem:
http://drupal.org/node/1284526#comment-5011558

A drupal_get_form() fv-t kellene meghívni a tablázatos megjelenítésnél.
Ki is próbálom...
Az említett minta D6-os:

function form_ldl_query_db() {
    $output = '';
    $edit = array();
    $output .= drupal_get_form('form_ldl_form',$edit);
    $sql = "SELECT * FROM {ldlwlijn}";
    $result = db_query($sql);
    $rows = array();
    $header = array(t('Code'), t('Waterkeur'), t('Lengte'), t('Breedte'));
    while ($data = db_fetch_object($result)) {
        $row = array();
        $row[] = $data->code;
        $row[] = $data->waterkeur;
        $row[] = $data->lengte;
        $row[] = $data->breedte;
        $row[] = l('Edit', 'landgoed/landgoed-de-laan/bevraag-db/'.$data->code.'/edit');
        $rows[] = $row;
    }
    $output .= theme('table', $header, $rows);
    return $output;
}
 
function form_ldl_form(&$form_state,$edit=array()){
    if(!$edit['code']) {
        $form['custom'] = array(
          '#type' => 'fieldset',
          '#title' => t('Add new custom'),
          '#collapsible' => TRUE,
          '#collapsed' => TRUE,
        );
    }
    //...
0
0
makgab képe

nálam sajnos nem jelenik meg a form (D7). :(

0
0
makgab képe

működik, csak a _submit() fv-be kell egy

 
$form_state['rebuild'] = TRUE;

és a formon elérhetők a $form_state['values']['...'] értékek.

0
0