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

Extra User-Felder speichern

Eingetragen von dawehner (2639)
am 14.05.2008 - 00:16 Uhr in
  • Modul-Entwicklung

Ich habe ein Module geschrieben was viele Felder zum User-Objekt dazufügt. Eins davon soll immer geladen werden, deshalb speichere ich es in $user->data, dort muss es auch bleiben.
Mit folgedem Code erreiche ich, dass die Werte des Feldes extra_option in $user->data gespeichert werden.

<?php
function hook_user($op...) {
switch (
$op) {
case
'submit':
     
$edit['data'] = $edit['extra_option'];
}
?>

Soweit funktioniert das ganze gut, jedoch funktioniert das ganze nur bei der Registrierung. Beim Bearbeiten des Users und anschließendem Speichern kommt jedoch folgendes:
    * warning: mysql_real_escape_string() expects parameter 1 to be string, array given in /home/httpd/html/drupal/includes/database.mysql.inc on line 400.
    * user warning: Duplicate entry '345' for key 2 query: UPDATE users SET timezone = '0', name = '345', mail = '345@example.com', status = '1', theme = '', signature = '', data = '', access = '', data = '' WHERE uid = 0 in /home/httpd/html/drupal/includes/database.mysql.inc on line 172.

Und das veränderte Formfeld wird nicht gespeichert. Es wäre furchtbar net, wenn jemand den Fehler wüsste // Sonst funktioniert alles prima im Module

‹ Funktion url() - Verständnisproblem oder Bug .. menu_tree überschreiben von Module aus ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Wie sieht der Rest von

Eingetragen von rcj (66)
am 14.05.2008 - 03:41 Uhr

Wie sieht der Rest von hook_user aus? $edit['extra_option'] ist ein array?

Änderst du irgendwo $user? Die Fehlermeldung kommt ja beim Speichern eines existierenden Users, der Query versucht allerdings die Daten eines Users mit der uid 0 zu aktualisieren, was nicht klappen kann, da die uid > 0 sein muss. Deshalb vermutlich auch das user warning bezüglich Duplicate entry '345' for key 2, da der User mit diesem Namen ja schon existiert, allerdings mit einer anderen uid.

  • Anmelden oder Registrieren um Kommentare zu schreiben

<?phpfunction

Eingetragen von dawehner (2639)
am 14.05.2008 - 12:26 Uhr

<?php
function userextra_user($op, &$edit, &$account, $category = NULL) {
  switch (
$op) {
    case
'register':
     
$form = userextra_form();
      return
$form;
    case
'form':
     
$form = userextra_form($account);
      return
$form;
    case
'submit':
     
$edit['data'] = $edit['extra_option'];
    case
'validate':
     
//Schaut ob der Name länger als 12 Zeichen lang ist

     
if (strlen($edit['name']) > 12) {
       
form_set_error('name', t("the name is too long"));
      }
     
// Sucht nach Leerzeichen
     
if (eregi(" ", $edit['name']) != false) {
       
form_set_error('name', t('the name cannot have spaces'));
      }
    case
'view':
      return
userextra_view($account);
  }
}
?>

Ein dsm von edit ergibt
Array
(
    [timezone] => 0
    [name] => 345
    [mail] => 345@example.com
    [pass] =>
    [status] => 1
    [extra_option] => Array
        (
            [0] => Array
                (
                    [0] => Array
                        (
                            [1] => 1
                        )

                    [1] => Array
                        (
                            [1] => 1
                        )

                    [2] => Array
                        (
                            [1] => 1
                        )

                )

            [1] => Array
                (
                    [0] => Array
                        (
                            [0] => 1
                            [1] => 0
                        )

                    [1] => Array
                        (
                            [1] => 1
                        )

                    [2] => Array
                        (
                            [0] => 1
                            [1] => 0
                        )

                )

            [2] => Array
                (
                    [0] => Array
                        (
                            [1] => 1
                        )

                    [1] => Array
                        (
                            [0] => 1
                            [1] => 0
                        )

                    [2] => Array
                        (
                            [1] => 1
                        )

                )

        )

    [theme] =>
    [signature] =>
)

Mich wundert das ganze, da bei der Registrierung die Daten perfekt gespeichert werden, habe ich vlt einen Hook vergessen?
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.deXING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Mehr geraten als gewusst

Eingetragen von netzkoop (1820)
am 14.05.2008 - 12:28 Uhr
Zitat:

UPDATE users SET timezone = '0', name = '345', mail = '345@example.com', status = '1', theme = '', signature = '',
data = '', access = '', data = '' WHERE uid = 0

Das update für data ist doppelt - ist das Absicht?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • 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?
Weiter

Neue Kommentare

  • Inzwischen sind wir bei
    vor 1 Tag 11 Stunden
  • Migrieren von D7 auf D8/ D10/ D11
    vor 2 Tagen 3 Stunden
  • melde mich mal wieder, da ich
    vor 7 Wochen 6 Tagen
  • Hey danke
    vor 8 Wochen 2 Stunden
  • Update: jetzt gibt's ein
    vor 8 Wochen 20 Stunden
  • Hallo, im Prinzip habe ich
    vor 8 Wochen 5 Tagen
  • Da scheint die Terminologie
    vor 8 Wochen 5 Tagen
  • Kannst doch auch alles direkt
    vor 9 Wochen 2 Tagen
  • In der entsprechenden View
    vor 9 Wochen 2 Tagen
  • Dazu müsstest Du vermutlich
    vor 9 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250235
Registrierte User: 20462

Neue User:

  • marouane.blel
  • capilclinic
  • Quabzibboter

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