Registration abändern
am 22.08.2007 - 19:40 Uhr in
Hallo zusammen...
Ich versuche krampfhaft, die Drupal registration zu erweitern. Ich habe folgendes Problem:
Wenn der User sich registriert und die einträge in die Datenbank geschrieben werden, soll in einer anderen Tabelle weitere einträge gemacht werden, die der User aber nicht eingibt sondern automatisch eingetragen werden.
Es soll eine Art spiel werden: Da User startet mit 1000 $ und kann die irgendwie ausgeben... Ich dachte ich könnte eine weitere Tabelle in die DrupalDB einfügen mit zwei spalten: uid und Geldmenge. Habe mal in dem User.Module ein bisschen rumgeschaut habe aber nicht herausgefunden wo diese einträge gemacht werden...
Weiss jemand wie das gehen könnte?
Liebe Grüsse
Lakai
- Anmelden oder Registrieren um Kommentare zu schreiben
Du solltest Dir ein eigenes
am 22.08.2007 - 20:01 Uhr
Du solltest Dir ein eigenes modul dafür schreiben.
--
sanduhrs · Stefan Auditor · Drupalcenter
http://erdfisch.de · http://audiens.de · http://drupal.org/user/28074
--
sanduhrs · Stefan Auditor · Drupalcenter
http://drupal.org/user/28074 · http://association.drupal.org/user/646
Ok an das hab ich auch schon
am 22.08.2007 - 20:37 Uhr
Ok an das hab ich auch schon gedacht... Habe auch schon das Tutorial wie man ein Modul baut angesehen, dort wird jedoch ein Block erstellt. Wie erstellt man aber eine Funktion die bei der registration noch zum zug kommt? oder wie sagt man der registration sie soll das modul noch laden?
Thx im Voraus
hook_user
am 22.08.2007 - 20:46 Uhr
Da benötigst du den 'hook_user' in deinem Modul. Dieser Hook ermöglicht es anderen Modulen in den Registierungs- oder Loginprozess einzugreifen und eigene Aktionen auszuführen. Bei der Operation '$op = insert' kannst du dann zusätzliche Dinge in deine Tabelle schreiben.
http://api.drupal.org/api/function/hook_user/5
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services
juhu thx das ist was ich
am 22.08.2007 - 20:51 Uhr
juhu thx das ist was ich gesucht habe! in welche Tabelle schreibt diese Funktion dann die infos? Direkt in die Users Tabelle oder kann man das noch irgendwie steuern?
Liebe Grüsse
Tabelle
am 22.08.2007 - 21:17 Uhr
Die Funktion hook_user in deinem Modul schreibt gar nichts. Dafür muss dein Modul selber sorgen. Der Hook selber sorgt eben dafür, dass dein Modul mit dieser Funktion von Drupal bei einer bestimmten User Aktion aufgerufen wird.
vg
--
md - DrupalCenter
mdwp* :: Drupal Services
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services
Funktion
am 22.08.2007 - 22:12 Uhr
Achso ok. Habe mal die Funktion geschrieben:
function bgreg_user($op='insert') {
global $user
$query = 'INSERT INTO ´kapital´ (´uid´, ´geld´) VALUES ( $user->uid , ´1000´ )';
db_query($query);
}
stimmt das so? hab es noch nicht ausprobiert... reicht das bereits damit die funktion bei der Registration benutzt wird?
Thx für eure Antworten!
Neues Problem
am 30.08.2007 - 14:53 Uhr
Ok, habe mal ein bisschen rumgetüfftelt und weiss jetzt es funktioniert nich wie oben beschrieben :), da die $user Variable gar noch nicht exitiert bei der Registration...
Nun die frage... wie kann man das lösen, dass wärend der Registrierung in einer anderen Tabelle die Uid gleich auch noch eintragen kann? Oder wie kann die Uid ermitteln, von dem Account der gerade erstellt wird? Das kann ja nicht sein dass man irgendwie die User Tabelle abfragen muss und dann die UID+1 rechnen... stimmts?
Liebe Grüsse
Lakai
guck dir mal die Parameter
am 30.08.2007 - 15:08 Uhr
guck dir mal die Parameter des User-Hooks an: http://api.drupal.org/api/function/hook_user/5, der Dritte enthält den User-Account.
gruß pebosi
gruß pebosi
--
https://pebosi.net
meinst du diesen
am 30.08.2007 - 16:01 Uhr
meinst du diesen code?
function hook_user($op, &$edit, &$account, $category = NULL) {
if ($op == 'form' && $category == 'account') {
$form['comment_settings'] = array(
'#type' => 'fieldset',
'#title' => t('Comment settings'),
'#collapsible' => TRUE,
'#weight' => 4);
$form['comment_settings']['signature'] = array(
'#type' => 'textarea',
'#title' => t('Signature'),
'#default_value' => $edit['signature'],
'#description' => t('Your signature will be publicly displayed at the end of your comments.'));
return $form;
}
}
so kann man doch nur eine weitere Formgruppe in die registration einbauen... das ist schon zu viel... ich brauche nur einen simplen UID-Eintrag in einer Tabelle, um damit die Standartwerte für den User zu aktivieren...
greetz Lakai
ja, das ist der Code des
am 31.08.2007 - 07:59 Uhr
ja, das ist der Code des Hooks diesen musst du entsprechend deinem Modul anpassen, die $op für dein Vorhaben ist wie du oben schon richtig erkannt hattest "insert"
gruß pebosi
gruß pebosi
--
https://pebosi.net
User ID ermittel
am 31.08.2007 - 23:02 Uhr
//edit: eintrag aufgrund gelöster frage abgeändert
Hallo
Habe mittlerweile die Funktion erstellt, die Funktion erstellt den DB eintrag (HURRAY) aber mit der falschen ID... ich bin davon ausgegangen dass $account->uid die ID des momentan erstellten Users ist, stimmt das?
Kann man irgendwie herausfinden, welcher der nächste Primary key der Tabelle ist? da wenn man ein User löscht ist dieser aus der Tabelle draussen, jedoch entsteht eine Lücke...
Thanks Lakai
Klappt nicht -.-
am 21.09.2007 - 20:34 Uhr
Moin,
habe noch ein bisschen rumprobiert, aber es klappt nicht diese Form auszugeben...
<?php
function bg_regist(){
$form['BGRegist'] = array(
'#type' => 'fieldset',
'#title' => 'Angaben für das Spiel',
'#collapsible' => FALSE,
'#collapsed' => FALSE
);
$form['BGResist']['Ingamename'] = array(
'#type' => 'textfield',
'#title' => 'InGame Name',
'#description' => 'Dieser Name sehen die anderen Spieler. Dieser Name kann nicht als Loginname verwendet werden!',
);
$form['BGResist']['landname'] = array(
'#type' => 'textfield',
'#title' => 'Name des ersten Ortes',
'#description' => 'Dieser Name steht für deinen ersten Ort welchen du regierst.',
);
return $form;
}
function bg_user($op='insert') {
return drupal_get_form('bg_regist');
}
?>
Funktioniert dies nicht auf diese weise?
Greetz Lakai