Csináltam egy formot ahah-val
function lista(&$form_state = NULL) { $lista_adat = array(); $temp = explode("/", $_GET['q']); for($i = 2; $i < count($temp); $i++){ $tmp = explode('+', $temp[$i]); $lista_adat[$tmp[0]] = $tmp[1]; } if(user_access('access content')){ $ret = drupal_get_form('hivasok_kivalasztasa'); } return $ret; } function kivalasztas(&$form_state = NULL) { $form = array(); $form['#attributes']['enctype'] = 'multipart/form-data'; $form['adatok'] = array( '#type' =>'fieldset', '#title' => 'Válassz intervallumot', '#collapsible' => true, '#collapsed' => false, ); $form['adatok']['ev'] = array( '#title' => 'Év', '#type' => 'select', '#options' => $_SESSION['hivasok']['intezmenyek'], '#default_value' => isset($lista_adat['ev']) ? $lista_adat['ev'] : 1, '#ahah' => array( 'path' => 'lista/js1', 'wrapper' => 'edit-ho-wrapper', 'progress' => array( 'type' => 'none', ), ), ); $form['adatok']['ho'] = array( '#title' => 'Hónap', '#type' => 'select', '#options' => $_SESSION['hivasok']['dolgozok'], '#default_value' => isset($lista_adat['ho']) ? $lista_adat['ho'] : 1, ); $form['adatok']['#redirect'] = FALSE; $form['adatok']['submit'] = array( '#type' =>'submit', '#value' => t('Lekérdez'), ); function kivalasztasa_validate($form, &$form_state){ } function kivalasztasa_submit($form, &$form_state){ $utvonal = '/ho+' . $form_state['values']['ho']; if($utvonal == ''){$utvonal = '/mind+';} drupal_goto('lista' . $utvonal); }
az év listájának választása során szűri a hónap listát, majd kiválasztom a hónapot a leszűrt listából és rendre megjelenik a formon.
De mikor submit-tel elküldöm visszaáll a szűretlen állapotra a formon hónap lista.
function hivasok_lista_ho_js() { // Új elem felépítése. $new_element = array( 'honap' => array( '#type' => 'select', '#title' => t('Hónap'), ), ); if($_POST['ev']){ $betoltott_honapok = array(); $betoltott_honapok[1] = "Mind"; $q = "SELECT DISTINCT {honap}.ho FROM {betoltve}"; $q .= " LEFT JOIN {honap} ON {betoltve}.ho = {honap}.hid"; if($_POST['ev'] > 1) { $q .= " WHERE {betoltve}.ev = '%s'"; } $q .= " ORDER BY {honap}.hokod ASC"; $res = db_query($q, $_SESSION['hivasok']['betoltott_evek'][$_POST['ev']]); while ($row = db_fetch_array($res)) { $betoltott_honapok[]= $row['ho']; } $_SESSION['hivasok']['betoltott_honapok'] = $betoltott_honapok; $new_element['honap']['#options'] = $_SESSION['hivasok']['betoltott_honapok']; } // Űrlap felépítése. $form_state = array('submitted' => FALSE); $form_build_id = $_POST['form_build_id']; // Az új elem írja felül a régit if (!$form = form_get_cache($form_build_id, $form_state)) { exit(); } $form['adatok']['honap'] = $new_element; form_set_cache($form_build_id, $form, $form_state); $form += array( '#post' => $_POST, '#programmed' => FALSE, ); // Űrlap újraépítése. $form = form_builder('hivasok_kivalasztasa', $form, $form_state); // Új űrlapelem kibontása. $new_form = $form['adatok']['honap']; unset($new_form['#prefix'], $new_form['#suffix']); // Dupla csomagolás megakadályozása. $new_form['#attributes']['class'] = empty($new_form[$delta]['#attributes']['class']) ? 'ahah-new-content' : $new_form[$delta]['#attributes']['class'] .' ahah-new-content'; // Az esetleges üzenetek kerüljenek az új elem fölé. $output = theme('status_messages') . drupal_render($new_form); drupal_json(array('status' => TRUE, 'data' => $output)); }
Drupal verzió:
Fórum:
Meg van a hiba ...
Meg van a hiba ...
és a többi helyen is cseréltem és így már oké