私は今何時間もそれをやろうとしています、そして私はそれをすることができません。
私が欲しいのは:
(データベースからの)さまざまなオプションを備えたラジオまたは選択ドロップダウン。この部分は大丈夫です、それはただのクエリとオプションの構築です。
次に、3つのテキストフィールドがあります。上記のフォームの各オプションには、これら3つのテキストフィールドのデータがあります。
ユーザーがオプションの1つをクリック/選択したときに、データベースから3つのテキストフィールドをオートコンプリートしたいと思います。これは編集機能であり、ユーザーは1つのオプションを選択し、3つのフォームに現在のデータが入力されるため、ユーザーはそれらを変更し、[送信]をクリックしてデータベースに更新を書き込みます。
私はdrupal6とahah_helperモジュールを使用しています。
私は現在テキストフィールドを完成させているこのコードを持っていますが、最初の選択を変更すると、選択値自体でさえも更新されず、設定または保存されていないように、デフォルトに戻るだけですahah_helperからの「ストレージ」。私はahah_helper_exampleに基づいてこれを行いました。これは完全に間違っている可能性があります(おそらく間違っています)。drupalとフォームから始めたばかりです。
function filiais_editar_form($form_state) {
//
// 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;
}