Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

Daten speichern

Eingetragen von gaertner_markus (45)
am 29.10.2008 - 11:53 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x

hallo,

versuche mich gerade etwas in Drupal einzuarbeiten in dem ich ein Modul erstelle.

Etwas ganz einfaches: im Admin Menu sollen Daten hinzugefuegt werden -also ein Datum und dazu ein Wert. Also nicht ein bestimmter Wert -es soll eine Liste enstehen.
Die Ausgabe im Frontende ist kein Problem.

Nur das speichern der Daten in eine MySQL-DB ist das Problem.
Das Formular ist erstellt.
Mit der Funktion XXX_validate kann ich die Daten ueberpruefen.
Aber mit welchem Hook bekomme ich die Daten in die DB?
Ueber diese Thema kann ich die Suchergenisse an einer Hand abzaehlen.

mfg

‹ 2 Formulare im Admin-Menue Webform - Fehler bei Weiterleitung ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Re: Daten speichern

Eingetragen von traxer (1009)
am 29.10.2008 - 13:02 Uhr
gaertner_markus schrieb

Mit der Funktion XXX_validate kann ich die Daten ueberpruefen.
Aber mit welchem Hook bekomme ich die Daten in die DB?

Normalerweise mit XXX_submit($form, &$form_state).

Allerdings kannst du explizit einen submit-Handler angeben

<?php
$form
['#submit'] = array('XXX_submit');
?>

oder submit-Handler nachträglich hinzufügen
<?php
function example_form_alter(&$form, $form_state, $form_id) {
 
$form['#submit'][] = 'example_submit';
}
?>

Die automatische Zuweisung eines submit-Handlers durch Drupal geschieht in drupal_prepare_form().

--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wo sollen die Daten genau ..

Eingetragen von UwBach (310)
am 29.10.2008 - 13:03 Uhr

.. gespeichert werden?

Die einfachste Art ist das in einer Variabel zu speichern. Dafür steht dir die Funktion variable_set('deine_name', $wert) zur Verfügung. Auslesen dann mit variable_get('dein_name', 'default_wert'). Das ist nur dann sinnvoll wenn es sich um wenige Werte handelt.

Für alle Formulare gilt das Schema Formular erstellen (Hook_form), Formular-Daten validieren (Hook_form_validate) und Daten verarbeiten (Hook_form_submit). In Submit kann man mit den Daten dann machen was man will.

Soll das in einer eigenen DB-Tabelle gespeichert werden musst du dir ein *.install-File schreiben in dem die DB-Tabelle definiert wird - z. B.:

<?php
// Id: dein_name.install, UwBach, 2008/10/29 $

/**
* Implementation of hook_install().
*/
function dein_name_install()
{
// Anlegen der Datenbank
drupal_install_schema('dein_name');
// Variable
variable_set('dein_name_zeitraum', array(
'von' =>
array('timestamp' => 0),
'bis' =>
array('timestamp' => 0)
));
variable_set('dein_name_anzeigetext', '');
} // END install

/**
* Implementation of hook_uninstall().
*/
function dein_name_uninstall()
{
// löschen der Datenbank
drupal_uninstall_schema('dein_name');

variable_del('dein_name_zeitraum');
variable_del('dein_name_anzeigetext');
} // END uninstall

/**
* Implematierung des Hook_schema()
*/
function dein_name_schema()
{
$schema['dein_name'] = array
(
'description' => 'Speichert alle Daten um deine Anwendung',

'fields' => array(
'id_dein_name' => array(
'type' => 'serial',
'unsigned' => TRUE,
'not null' => TRUE,
'description' => 'ID fuer Tabelle {dein_name}'
),
'anrede' => array(
'type' => 'varchar',
'length' => 6,
'not null' => TRUE,
'description' => 'Anrede'
),
'name' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'description' => 'Nachname'
),
'vorname' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'description' => 'Vorname'
),
'eingestellt_am' => array(
'type' => 'datetime',
'not null' => TRUE,
'description' => 'Tag der Speicherung'
),
'kto' => array(
'type' => 'varchar',
'length' => 20,
'not null' => FALSE,
'description' => 'Kontonummer'
),
'blz' => array(
'type' => 'varchar',
'length' => 20,
'not null' => FALSE,
'description' => 'Bankleitzahl'
),
'bank' => array(
'type' => 'varchar',
'length' => 100,
'not null' => FALSE,
'description' => 'Bankname'
),
'kto_inhaber' => array(
'type' => 'varchar',
'length' => 100,
'not null' => FALSE,
'description' => 'Kontoinhaber'
),
),

'primary key' => array(
'id_dein_name'
)
);

return $schema;
} // END dein_name_schema

An der Art und Weise wie das +.install-File erzeugt wird hat sich von Drupaö5 zu Drupal6 einiges geändert. Das ist aber ganz gut in der API beschrieben.

Ich hoffe ich konnte dir einen Hinweis geben.

Gruß

UwBach

  • Anmelden oder Registrieren um Kommentare zu schreiben

RE: Wo sollen die Daten genau ..

Eingetragen von gaertner_markus (45)
am 29.10.2008 - 13:17 Uhr

hallo,

erstmal Danke das jemand geantwortet hat!

ich wollte mir erstmal die Erstellung einer *.install sparen und habe es in der DB mit phpMyAdmin eingetragen (ebenso wie die ersten 2 Datensatze um mit der Ausgabe ueben zu koennen).

In anderen Plugins sind diese *.install ja einfach zu finden -und als Beispiele leicht zu verwenden.

mfg

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dann kannst du ..

Eingetragen von UwBach (310)
am 29.10.2008 - 13:45 Uhr

.. direkt im Hook_form_submit auf die Datenbank zugreifen - z. B.

/**
* Registrierungsformular für Stipendien
*/
function deinModul_form_submit($form, $form_values)
{
if($form_values['values']['irgendwas'] == 2)
{
// speichern der Daten als Update - Insert ist genauso
db_query('UPDATE {deineTabelle} SET irgendwas = 2 WHERE id_deineTabelle = %d', $tabelle_id);

if(db_error() != '')
drupal_set_message('Ihre Entscheidung wurde gespeichert.');
else
drupal_set_message('Es gab Probleme beim speichern der Daten. ');
}
}
}

Schau dazu nochmal in die API unter db_query() oder auf Arbeiten mit der Datenbank (ist zwar für Drupal 5 - geht aber imer noch).

  • Anmelden oder Registrieren um Kommentare zu schreiben

RE: Dann kannst du ..

Eingetragen von gaertner_markus (45)
am 29.10.2008 - 14:17 Uhr

danke allerSeits!

nur das mit "db_error()" scheint nicht so zu wollen wie im Beispiel, stoert aber gerade nicht gross.

mfg

  • Anmelden oder Registrieren um Kommentare zu schreiben

Stimmt ..

Eingetragen von UwBach (310)
am 29.10.2008 - 14:25 Uhr

.. muss wohl heißen

if(db_error() == '')
drupal_set_message('Ihre Entscheidung wurde gespeichert.');
else
drupal_set_message('Es gab Probleme beim speichern der Daten. ');

Hätte ich evtl. vorher testen sollen :-)

Gruß

UwBach

  • Anmelden oder Registrieren um Kommentare zu schreiben

haette selber mal genauer

Eingetragen von gaertner_markus (45)
am 29.10.2008 - 14:36 Uhr

haette selber mal genauer hinschauen muessen,

dachte aber eher an einen fehlerhaften Funktionsaufruf

UwBach schrieb

.. muss wohl heißen
Hätte ich evtl. vorher testen sollen :-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 4 Tagen 11 Stunden
  • Hey danke
    vor 5 Tagen 6 Stunden
  • Update: jetzt gibt's ein
    vor 6 Tagen 18 Minuten
  • Hallo, im Prinzip habe ich
    vor 1 Woche 3 Tagen
  • Da scheint die Terminologie
    vor 1 Woche 3 Tagen
  • Kannst doch auch alles direkt
    vor 2 Wochen 19 Stunden
  • In der entsprechenden View
    vor 2 Wochen 19 Stunden
  • Dazu müsstest Du vermutlich
    vor 2 Wochen 19 Stunden
  • gelöst
    vor 4 Wochen 4 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 5 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 18 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association