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 (1560)
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

  • Best Practices for Plain Text Notes
  • gepatchte PHP Version 7.4 für Windows
  • Canvas Palette: Eine fertige Komponentenbibliothek für Drupal Canvas
  • Hilfe zu Updates oder Composer
  • Vergleich Drupal und Contao
  • [geloest] Blocks in Bootstrap nebeneinander darstellen und nicht untereinander
  • DrupalCamp Frankfurt 27-28 November 2026
  • Bitte mein Bentzerkonto löschen
  • Beim Aufruf einiger Inhalte erhalte ich folgende Fehlermeldung
  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
Weiter

Neue Kommentare

  • Muss ja nicht genau php 8.3 sein
    vor 2 Tagen 5 Stunden
  • Guten morgen und Danke
    vor 2 Tagen 12 Stunden
  • Evtl. versuchen auf PHP 8 zu wechseln
    vor 2 Tagen 18 Stunden
  • Danke Schmittrich. Die Frage
    vor 4 Tagen 10 Stunden
  • Keine Antwort auf die Frage nach dem Woher
    vor 4 Tagen 12 Stunden
  • Danke ich werde mir die
    vor 6 Wochen 2 Tagen
  • Vielen Dank für Ihren
    vor 6 Wochen 4 Tagen
  • Composer ist sehr ratsam
    vor 6 Wochen 6 Tagen
  • Vielen Dank für den
    vor 7 Wochen 2 Tagen
  • Die alten CMS Vergleiche von contentmanager.de
    vor 7 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250324
Registrierte User: 20571

Neue User:

  • alxshell
  • FesObsemo
  • AnthonyhoF

» Alle User anzeigen

User nach Punkten sortiert:
wla9466
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 22 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