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

Userdaten auslesen...

Eingetragen von Tiega (8)
am 14.12.2010 - 14:29 Uhr in
  • Modul-Entwicklung

Hey Leute,

ich hatte mal erwähnt das ich die Drupal Userdatenbank mit einer Externen Datenbank synchronisieren möchte. Hab mich daraufhin etwas mit Hooks beschäftigt.

Bis jetzt bin ich aber nicht weit gekommen.... da ich nicht weiß wie ich an die Daten komme die übergeben werden sollen....
Google spuckt mir nur zb. "$user->name" aus, ich such wahrscheinlich nach dem falschen^^

<?php
// $Id $
/**
*@file
*Synchronisiert die Userdaten der Drupal Datenbank mit der Datenbank
*/
function datenbank_Sync() { 
  include(
"db_connect.php");
 
$timestamp = time();
 
$datum = date("Y-m-d",$timestamp);
 
$sql = "INSERT INTO user (username, password, firstname, lastmane, email, ) VALUES ('$user->name', '$user->passwort')";
} 

/**
* Implementierung von hook_user().
*/
function Sync_user($op, &$edit, &$account, $category = NULL) {
  if(
$op == 'register') {
   
datenbank_Sync();
  }
}
?>

Viele Grüße

‹ DB_SELECT Frage D7 Eigenes Node-Feld ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

hook_user

Eingetragen von stBorchert (6003)
am 14.12.2010 - 14:45 Uhr

Hallo.

Tiega schrieb

<?php
  $sql
= "INSERT INTO user (username, password, firstname, lastmane, email, ) VALUES ('$user->name', '$user->passwort')";
?>

Das kann schonmal nicht funktionieren und ist zudem noch eine Sicherheitslücke.
Verwende besser [api:db_set_active] zum Wechseln der Datenbankverbindung. Weiterhin solltest Du den SQL-String korrigieren: (username, password, firstname, lastmane, email) und die Werte wie in [api:db_query] gezeigt übergeben.

<?php
function Sync_user($op, &$edit, &$account, $category = NULL) {
  if(
$op == 'register') {
   
datenbank_Sync();
  }
}
?>

Wie in der Dokumentation zu [api:hook_user] zu lesen ist, enthält der Parameter $edit sämtliche Formularwerte und $account den zu bearbeitenden Benutzeraccount. Über diese Variablen bekommst Du also die Daten.

hth,

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

ja der code war noch garnicht

Eingetragen von Tiega (8)
am 14.12.2010 - 16:42 Uhr

ja der code war noch garnicht fertig :) trotzdem danke.

Jetzt hab ich in PHP noch nie mit Objekten gearbeitet xD
mach ich das so richtig? laut meinen tests nicht :(

<?php
// $Id $
/**
*@file
*Synchronisiert die Drupal-Datenbank mit der Datenbank.
*/
function sync_db(&$account) {
 
db_set_active('test');
 
$timestamp = time();
 
$datum = date("Y-m-d",$timestamp);
 
$sql = "INSERT INTO test2 (username, password, firstname, lastname, email, created) VALUES ('&$account->name', '&$account->pass', '', '', '&$account->mail', 'datum')";
 
db_query($sql);
} 

/**
* Implementierung von hook_user().
*/
function sync_user($op, &$edit, &$account, $category = NULL) {
  if(
$op == 'register') {
   
sync_db(&$account);
  }
}
?>

Viele Grüße

  • Anmelden oder Registrieren um Kommentare zu schreiben

PHP

Eingetragen von stBorchert (6003)
am 15.12.2010 - 08:39 Uhr

Hallo.

Tiega schrieb

mach ich das so richtig? laut meinen tests nicht :(

Was kommen denn für Fehlermeldungen?

<?php function sync_db(&$account) { ?>
Das & beim Parameter benötigst Du nur, wenn Du die Werte in der übergebenen Variable selbst auch ändern möchtest (dann wird die Variable als Referenz übergeben). Das kann also weg.

Tiega schrieb

<?php db_set_active('test'); ?>

Hast Du die Verbindungsdaten in die settings.php eingetragen?

Tiega schrieb

<?php
  $sql
= "INSERT INTO test2 (username, password, firstname, lastname, email, created) VALUES ('&$account->name', '&$account->pass', '', '', '&$account->mail', 'datum')";
 
db_query($sql);
?>

Das kann so nicht funktionieren.

<?php
$firstname
= '???';
$lastname = '???';
$sql = "INSERT INTO {test2} (username, password, firstname, lastname, email, created) VALUES ('%s', '%s', '%s', '%s', '%s', %d)";
$success = db_query($sql, $account->name, $account->pass, $firstname, $lastname, $account->mail, $timestamp);
?>

Tiega schrieb

<?php sync_db(&$account); ?>

Auch hier ist das & überflüssig.

hth,

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke, Ja ich hab die andere

Eingetragen von Tiega (8)
am 15.12.2010 - 10:00 Uhr

Danke,

Ja ich hab die andere DB in die settings.php eingetragen.
ich hab den Code jetzt wie folgt angepasst.

<?php
// $Id $
/**
*@file
*Synchronisiert die Drupal-Datenbank mit der Datenbank.
*/

/**
* Implementierung von hook_user().
*/ 
function dbsync_user($op, &$edit, &$account, $category = NULL) {
    if(
$op == 'register'){
     
sync_db();
    }
}


function
sync_db() {
 
db_set_active('test');
 
$firstname = '';
 
$lastname = '';
 
$sql = "INSERT INTO {test2} (username, password, firstname, lastname, email, created) VALUES ('%s', '%s', '%s', '%s', '%s', %d)";
 
$success = db_query($sql, $account->name, $account->pass, $firstname, $lastname, $account->mail, $timestamp);
}


?>

Er schreibt jetzt auch bei jeder Registration einen Eintrag in die DB doch die sind leer :(

Liebe Grüße

  • Anmelden oder Registrieren um Kommentare zu schreiben

Parameter

Eingetragen von stBorchert (6003)
am 15.12.2010 - 09:59 Uhr
Tiega schrieb

Er schreibt jetzt auch bei jeder Registration einen Eintrag in die DB doch die sind leer :(

Du solltest ja auch nicht gleich den ganzen Parameter entfernen, sondern nur das & davor.

<?php
/**
* Implementierung von hook_user().
*/ 
function dbsync_user($op, &$edit, &$account, $category = NULL) {
    if(
$op == 'register'){
     
sync_db($account);  // <-- Parameter übergeben!
   
}
}

function
sync_db($account) {
 
db_set_active('default');
 
$firstname = '';
 
$lastname = '';
 
$sql = "INSERT INTO {test2} (username, password, firstname, lastname, email, created) VALUES ('%s', '%s', '%s', '%s', '%s', %d)";
 
$success = db_query($sql, $account->name, $account->pass, $firstname, $lastname, $account->mail, $timestamp);
}
?>

hth,

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Die sind dann aber trotzdem

Eingetragen von Tiega (8)
am 15.12.2010 - 10:02 Uhr

Die sind dann aber trotzdem leer.

  • Anmelden oder Registrieren um Kommentare zu schreiben

debug

Eingetragen von stBorchert (6003)
am 15.12.2010 - 10:08 Uhr

Och Mensch.
Ich schrieb doch weiter oben schon, dass $edit die abgeschickten Formulardaten und $account die Daten des Benutzerobjekts beinhalten. Da das ein neuer Benutzer ist, kann in $account noch nicht allzuviel an Daten enthalten sein, oder?

Wie ich ebenfalls weiter oben schrieb, musst Du Dir aus $edit und $account die von Deiner Funktion benötigten Daten zusammensuchen.
Dabei hilfreich ist das Modul [do:devel Devel].

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dort kannst Du Dir mit

Eingetragen von Sense (1559)
am 15.12.2010 - 10:31 Uhr

Dort kannst Du Dir mit folgendem Code die entsprechenden Daten ausgeben lassen:

<?php
dpm
($account);
dpm($edit);
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • [Gelöst] Menü wie hier samsung.com/de/ wie, mit Drupal?
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • [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?
Weiter

Neue Kommentare

  • Казино с минимальным депозитом
    vor 38 Minuten 33 Sekunden
  • Казино с минимальным депозитом
    vor 39 Minuten 11 Sekunden
  • Казино с минимальным депозитом
    vor 40 Minuten 28 Sekunden
  • Казино с минимальным депозитом
    vor 42 Minuten 5 Sekunden
  • Казино с минимальным депозитом
    vor 42 Minuten 53 Sekunden
  • melde mich mal wieder, da ich
    vor 2 Wochen 4 Tagen
  • Hey danke
    vor 2 Wochen 5 Tagen
  • Update: jetzt gibt's ein
    vor 2 Wochen 5 Tagen
  • Hallo, im Prinzip habe ich
    vor 3 Wochen 3 Tagen
  • Da scheint die Terminologie
    vor 3 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250238
Registrierte User: 20457

Neue User:

  • Znogsnernoimb
  • ByteScrapers
  • Mroppoofpaync

» 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 28 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