[GELÖST] Speicherung in Datenbank durch Formular
am 23.11.2011 - 20:43 Uhr in
Hallo,
habe ein Mini-Modul programmiert und ein Schema für die Datenbank in der .install-Datei angelegt:
<?php
function uc_auction_time_controlled_publish_schema() {
return array(
'uc_auction_time_controlled_publish' => array(
'description' => 'Information about time controlled publish.',
'fields' => array(
'nid' => array(
'description' => 'The {node}.nid of the product.',
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
),
'publish' => array(
'description' => 'The time when this auction should be published.',
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
),
),
'primary key' => array('nid'),
'indexes' => array(
'publish' => array('publish'),
),
),
);
}
?>Dadurch wird bei der Installation es Moduls in der Datenbank eine eigene Tabelle erstellt. Prima.
Durch
<?php
$auction_publish = array(
'publish' => array(
'#type' => 'date_popup',
'#title' => t('Publishing date and time'),
'#description' => t('Select a date and time when this auction will be published (relative to the server’s local time).'),
'#default_value' => format_date(time(), 'custom', 'Y-m-d H:i:s'),
'#weight' => 10,
),
);
array_push($form['base']['auction'], $auction_publish);
?>erscheint auch mein Feld im Formular, welches bis nach hook_form_validate(); einen Wert bringen kann, den ich gerne in der zuvor angelegten DB-Tabelle abspeichern will.
Leider wird dieser Wert nicht gespeichert. Ich kenne auch sonst keinen Hook, welcher nach hook_form_validate(); kommt und mit welchem ich per SQL-Query meinen Wert in die Datenbank befördern kann. Hat jemand eine Idee?
- Anmelden oder Registrieren um Kommentare zu schreiben

Was ist denn das für ein
am 23.11.2011 - 20:55 Uhr
Was ist denn das für ein Formular? Ich gehe mal davon aus, das es sich um ein Node-Formular handelt. Dann mußt Du den hook_nodeapi implementieren. Dort speicherst Du den Wert in Deiner Tabelle und liest ihn auch wieder aus, wenn der Node aufgebaut werden soll.
Beste Grüße
Werner
Der hook_form_validate wird -
am 23.11.2011 - 21:54 Uhr
Der hook_form_validate wird - wie der Name schon sagt - zum Validieren von Formulareingaben verwendet - hier sollte man also nix speichern. Das eigentliche Speichern erfolgt dann im hook_form_submit()..
Schau dir mal das examples-Modul auf drupal.org an - dort sind die Zusammenhänge sehr gut dokumentiert.
http://drupal.org/project/examples - dort findest du dann auch ein form_example
SteffenR
Speichere jetzt durch
am 27.11.2011 - 22:12 Uhr
Speichere jetzt durch hook_form_submit(). Dazu habe ich
$form['#submit'][] = 'MEIN_MODUL_NAME_submit';
in hook_form_alter(); gefügt.
hook_form_submit verwendet
am 27.11.2011 - 22:32 Uhr
hook_form_submit verwendet man, um das von hook_form erzeugte Node-Formular auszuwerten und wird diesem automatisch zugewiesen - dieser Hook sollte eigentlich nicht verwendet werden, um mittels hook_form_alter bei einem völlig anderen Formular eingefügt zu werden.