Я пытаюсь делать это часами, и я просто не могу это сделать.
То, что я хочу, это:
Радио или выберите раскрывающийся список с различными вариантами(из базы данных).С этой частью все в порядке, это всего лишь запрос и построение параметров.
Затем есть 3 текстовых поля, каждая опция из приведенной выше формы имеет данные для этих 3 текстовых полей.
Когда пользовательнажимает / выбирает один из вариантов, я хочу автоматически заполнить 3 текстовых поля из базы данных.Это функция редактирования, пользователь выберет один вариант, и 3 формы будут заполнены текущими данными, поэтому пользователь может их изменить и нажать кнопку отправить, чтобы записать обновление в базу данных.
I'mиспользуя drupal 6 и модуль ahah_helper.
У меня есть этот код, который в настоящее время заполняет текстовые поля, но когда я изменяю первый выбор, он просто не обновляется, даже само значение выбора, он простовозвращается к значению по умолчанию, как будто оно не устанавливается и не сохраняется в хранилище из ahah_helper.Я сделал это на основе ahah_helper_example, это может быть (и, вероятно, так) совершенно неправильно, я только начал работать с drupal и формами.
</p>
<p>function filiais_editar_form($form_state) {</p>
<pre><code>//
// AHAH Helper stuff
//
$form = array();
ahah_helper_register($form, $form_state);
if (!isset($form_state['storage']['editar_filial']['filial']))
$default_value = 1;
else
$default_value = $form_state['storage']['editar_filial']['filial'];
$form['editar_filial'] = array(
'#type' => 'fieldset',
'#prefix' => '<div id="editar-filial-wrapper">',
'#suffix' => '</div>',
'#tree' => TRUE,
);
$query_result = db_query("SELECT DISTINCT ON (cidade) cidade, id_filial
FROM filial_pf");
$cidades = array();
while($row = db_fetch_object($query_result))
$cidades[$row->id_filial] = $row->id_filial . ' : ' . $row->cidade;
$form['editar_filial']['filial'] = array(
'#type' => 'select',
'#title' => "Escolha a filial que deseja editar",
'#options' => $cidades,
'#default_value' => $default_value,
'#ahah' => array(
'event' => 'change',
'path' => ahah_helper_path(array('editar_filial')),
'wrapper' => 'editar-filial-wrapper',
),
);
$form['editar_filial']['update'] = array(
'#type' => 'submit',
'#value' => "Atualizar Dados",
'#submit' => array('ahah_helper_generic_submit'),
'#attributes' => array('class' => 'no-js'),
);
//$fid = $form_state['storage']['editar_filial']['filial'];
$fid = $default_value;
$query_result = db_query("SELECT cidade, endereco, estado
FROM filial_pf
WHERE id_filial = '%d'", $fid);
$row = db_fetch_object($query_result);
$cidade = $row->cidade;
$estado = $row->estado;
$endereco = $row->endereco;
$form['editar_filial']['cidade'] = array(
'#type' => 'textfield',
'#title' => "Nova Cidade da Filial",
'#size' => 18,
'#maxlength' => 18,
'#required' => TRUE,
'#default_value' => $cidade,
);
$estados = array(
"AC" => "AC",
"AL" => "AL",
"AP" => "AP",
"AM" => "AM",
"BA" => "BA",
"CE" => "CE",
"DF" => "DF",
"ES" => "ES",
"GO" => "GO",
"MA" => "MA",
"MT" => "MT",
"MS" => "MS",
"MG" => "MG",
"PA" => "PA",
"PB" => "PB",
"PR" => "PR",
"PE" => "PE",
"PI" => "PI",
"RJ" => "RJ",
"RN" => "RN",
"RS" => "RS",
"RO" => "RO",
"RR" => "RR",
"SC" => "SC",
"SP" => "SP",
"SE" => "SE",
"TO" => "TO");
$form['editar_filial']['estado'] = array(
'#type' => 'select',
'#title' => "Estado",
'#options' => $estados,
'#required' => TRUE,
'#default_value' => $estado,
);
$form['editar_filial']['endereco'] = array(
'#type' => 'textarea',
'#title' => "Novo Endereço da Filial",
'#size' => 70,
'#maxlength' => 140,
'#required' => TRUE,
'#default_value' => $endereco,
);
$form['editar_filial']['salvar'] = array(
'#type' => 'submit',
'#value' => "Salvar",
);
return $ form;}