function Mymodule_user($op,&$edit, &$account, $category = NULL) {
switch ($op) {
case 'register':
$result = db_query("SELECT id,name FROM {sites} ORDER BY name");
while($row=db_fetch_array($result)) {
$sites[$row['id']] = $row['name'];
}
$form['site_select'] = array(
'#type' => 'select',
'#title' => t('Select your site'),
'#options' => $sites,
)
return $form;
case 'insert':
//How to take the $form values from above and use in my query to
//write to my own table while writing to the standard 'users' table?
db_query("INSERT INTO {another_table} (site_name) VALUES ('%s')",
$form['site_select']);
);
標準の Drupal アカウントを作成するときにユーザーが送信ボタンを押したときに、$form['site_select'] のカスタム フィールドの値をケースの 'insert' に渡して、これを 'another_table' に書き込むにはどうすればよいですか。ユーザー名やパスワードなどの通常のユーザー データは、デフォルトの「users」テーブルに引き続き書き込む必要があります。
Q: Drupal にデータをシリアライズさせて、通常どおり「データ」フィールドの「ユーザー」テーブルに保存させないのはなぜですか?
A: AJAX 化して、別の Drupal フォームでオートコンプリートを使用したり、MySQL で特定のカスタム フィールドをクエリしたりしたいからです。MySQL はシリアライズ/アンシリアライズできません。たとえば、「SELECT DISTINCT サイト名 FROM another_table」