Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Allgemeines zu Drupal ›

Feld der Registrierung in die profile_values der Datenbank eintragen

Eingetragen von 1000 (764)
am 26.06.2011 - 16:53 Uhr in
  • Allgemeines zu Drupal
  • Drupal 6.x

Hallo,

ich habe mittels:

<?php

$fid
='46';
db_query("INSERT INTO {profile_values} (fid, uid, value) VALUES (%d, %d, '%s')", $fid1, $user->uid, $user->name);
?>

im insert Pfad der profile.module es erreicht, dass der Username in der Datenbank unter profile_values eingetragen wird.

Jetzt habe ich noch ein anderes Feld welches dem Standardprofil zugewiesen ist und deshalb dem Unternehmensprofil nicht zur Verfügung steht. Nun habe ich im Unternehmensprofil ein Feld angelegt und möchte das Feld der Registrierung auch automatisch in die Datenbank eintragen. Leider schlagen alle versuche Fehl, weil ich zwar weiss, dass das Feld unter $account->profile_a1 aufzurufen ist dies aber nicht direkt bei der Registrierung zur Verfügung steht. Ein Versuch die Daten ala

<?php
 
db_query
("INSERT INTO {profile_values} (fid, uid, value) VALUES (%d, %d, '%s')", $fid2, $user->uid, $account->profile_a1);
?>

zu speichern funktioniert nicht. Das Feld values wird dabei leer bleiben. Hat vielleicht jemand eine Hinweis für mich?

Dies ist der HTML Code der Registrierung:

<input type="text" maxlength="255" name="profile_a1" id="edit-profile-a1" size="60" value="" class="form-text required">

‹ Drupal6 - Seite wird immer langsam Adsense direkt ohne zusatzmodul ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Lass dir doch erstmal die

Eingetragen von SteffenR@drupal.org (2262)
am 27.06.2011 - 18:06 Uhr

Lass dir doch erstmal die übergebenen Werte ausgeben, um zu schauen, ob denn überhaupt etwas übergeben wird und pb der Wert profile_a1 überhaupt schon im account Objekt vorhanden ist.

Dies kannst du in PHP mittels echo oder print_r bzw über das Devel Modul mit dem dsm Befehl machen..

SteffenR

  • Anmelden oder Registrieren um Kommentare zu schreiben

Die Werte werden nicht

Eingetragen von 1000 (764)
am 27.06.2011 - 21:50 Uhr

Die Werte werden nicht übergeben. profile_a1 ist noch nicht im Objekt vorhanden. Aber was nun? Ich habe in der profile.module im insert Pfad eine echo Anweisung geschrieben. Es wird nichts angezeigt weder Variabln noch Text. In der Reg Bestätigungsseite werden die Variablen aber auch nicht angezeigt. Da der Eintrag in die Datenbank funktioniert nur halt nicht für den Wert, denke ich das das Objekt $account->profile_a1 nicht zur Verfügung steht im Insert der Registrierungsdaten. Aber wie kann ich diese Variable $profile_a1 aus dem Formular dennoch in die Datenbank schreiben?

<?php

function profile_user($type, &$edit, &$user, &$account, $category = NULL) {
  switch (
$type) {
    case
'load':
      return
profile_load_profile($user);
    case
'register':
      return
profile_form_profile($edit, $user, $category, TRUE);
    case
'update':
    return
profile_save_profile($edit, $user, $category);
    case
'insert':
$fid='45';
$fid1='46';
$fid2='47';
db_query("INSERT INTO {profile_values} (fid, uid, value) VALUES (%d, %d, '%s')", $fid, $user->uid, $user->name);
db_query("INSERT INTO {profile_values} (fid, uid, value) VALUES (%d, %d, '%s')", $fid1, $user->uid, $user->name);
db_query("INSERT INTO {profile_values} (fid, uid, value) VALUES (%d, %d, '%s')", $fid2, $user->uid, $account->profile_a1);



return
profile_save_profile($edit, $user, $category, TRUE);



?>

So habe ich den insert Pfad modifiziert. die ersten Beiden inserts in die Datenbank werden ausgeführt, d.h der Username wird eingetragen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zitat:So habe ich den insert

Eingetragen von Exterior (2903)
am 27.06.2011 - 23:10 Uhr
Zitat:

So habe ich den insert Pfad modifiziert. die ersten Beiden inserts in die Datenbank werden ausgeführt, d.h der Username wird eingetragen.

Klar, weil der Username immer im User-Object vorhanden ist, im Gegensatz zu Profil-Werten, die sind erst im Objekt vorhanden, wenn man das Profil auch geladen hat. Und da bei dir nie das Profil für $account geladen wird, hast du auch keinen Zugriff auf die Werte. Das wäre zumindest meine Theorie.

Versuch doch mal, vor dem Insert das hier auszuführen: <?php profile_load_profile($account); ?>

Sodass das ganze am Schluss z. B. so aussieht:

<?php
function profile_user($type, &$edit, &$user, &$account, $category = NULL) {
  switch (
$type) {
    case
'load':
      return
profile_load_profile($user);
    case
'register':
      return
profile_form_profile($edit, $user, $category, TRUE);
    case
'update':
    return
profile_save_profile($edit, $user, $category);
    case
'insert':
$fid='45';
$fid1='46';
$fid2='47';

// Profil für $account laden
profile_load_profile($account);

db_query("INSERT INTO {profile_values} (fid, uid, value) VALUES (%d, %d, '%s')", $fid, $user->uid, $user->name);
db_query("INSERT INTO {profile_values} (fid, uid, value) VALUES (%d, %d, '%s')", $fid1, $user->uid, $user->name);
db_query("INSERT INTO {profile_values} (fid, uid, value) VALUES (%d, %d, '%s')", $fid2, $user->uid, $account->profile_a1);

return
profile_save_profile($edit, $user, $category, TRUE);
?>

Kann allerdings sein, dass du zu dem Zeitpunkt noch keinen Zugriff auf das Profil hast, wenn die Daten des Profils noch nicht gespeichert sind, das musst du einfach mal probieren.

Ich finde den Weg aber immer noch nicht in Ordnung ;-)

Edit:
Ich habe gerade nochmal deinen Beitrag oben angeschaut und den HTML-Code für die Registrierung gesehen. Wie genau kommt denn das Input-Feld eigentlich dort rein? Hast du das selbst eingetragen?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das hat leider nicht

Eingetragen von 1000 (764)
am 28.06.2011 - 20:25 Uhr

Das hat leider nicht funktioniert. Das Core Modul profile ermöglicht es der Registrierung Felder hinzuzufügen. Das Feld profile_a1 habe ich "als bei der Registrierung notwendiges Feld" markiert. Deshalb wird dieser Code generiert.

<?php
<form action="/user/register" accept-charset="UTF-8" method="post" id="user-register" enctype="multipart/form-data">
<
div><fieldset><legend>Kontoinformationen</legend><div class="form-item" id="edit-name-wrapper">
<
label for="edit-name">Benutzername: <span class="form-required" title="Dieses Feld wird benötigt.">*</span></label>
<
input type="text" maxlength="60" name="name" id="edit-name" size="60" value="" class="form-text required">
<
div class="description">Bitte geben Sie als Benutzernamen Ihren Vor- und Nachnamen oder Ihren Firmennamen an. Leerzeichen sind erlaubt.</div>
</
div>
<
div class="form-item" id="edit-mail-wrapper">
<
label for="edit-mail">E-Mail-Adresse: <span class="form-required" title="Dieses Feld wird benötigt.">*</span></label>
<
input type="text" maxlength="64" name="mail" id="edit-mail" size="60" value="" class="form-text required">
<
div class="description">Eine gültige E-Mail-Adresse. Alle E-Mails der Website werden an diese Adresse geschickt. Die Adresse wird nicht veröffentlicht und wird nur verwendet, wenn Sie ein neues Passwort anfordern oder wenn Sie einstellen, bestimmte Informationen oder Benachrichtigungen per E-Mail zu erhalten.</div>
</
div>
</
fieldset>
<
fieldset><legend>Profilauswahl</legend><div class="form-item">
<
label>Welche Art von Profil möchten Sie anlegen?: <span class="form-required" title="Dieses Feld wird benötigt.">*</span></label>
<
div class="form-radios"><div class="form-item" id="edit-user-roles-9-wrapper">
<
label class="option" for="edit-user-roles-9"><input type="radio" id="edit-user-roles-9" name="user_roles" value="9" class="form-radio"> Standardprofil</label>
</
div>
<
div class="form-item" id="edit-user-roles-10-wrapper">
<
label class="option" for="edit-user-roles-10"><input type="radio" id="edit-user-roles-10" name="user_roles" value="10" class="form-radio"> Unternehmensprofil</label>
</
div>
</
div>
</
div>
</
fieldset>
<
input type="hidden" name="timezone" id="edit-user-register-timezone" value="7200">
<
input type="hidden" name="form_build_id" id="form-0a6194b14aa52e97c189500a32266e2a" value="form-0a6194b14aa52e97c189500a32266e2a">
<
input type="hidden" name="form_id" id="edit-user-register" value="user_register">
<
fieldset><legend>Persönliche Informationen</legend><div class="form-item" id="edit-profile-a1-wrapper">
<
label for="edit-profile-a1">Studiumabschluss / Fachgebiet: <span class="form-required" title="Dieses Feld wird benötigt.">*</span></label>
<
input type="text" maxlength="255" name="profile_a1" id="edit-profile-a1" size="60" value="" class="form-text required">
<
div class="description">Bitte geben Sie Ihren Studiumabschluss inkl. erworbenen Titel an. Unternehmen können hier Ihr Fachgebiet angeben.</div>
</
div>
</
fieldset>
<
fieldset><legend>Bild</legend><div class="form-item" id="edit-picture-upload-register-wrapper">
<
label for="edit-picture-upload-register">Avatar hochladen: </label>
<
input type="file" name="files[picture_upload_register]" onchange="$('#edit-pic-selected').val(1);" class="form-file" id="edit-picture-upload-register" size="60">

<
div class="description"><br>Bitte laden Sie ein Avatar hoch. Die Dimension des Avatars ist <em>85x85</em> und die maximale Datengröße ist <em>100</em> kB. Bilder werden automatisch an diese Vorgaben angepasst. </div>
</
div>
<
input type="hidden" name="pic_selected" id="edit-pic-selected" value="0">
</
fieldset>
<
fieldset><legend>Nutzungsbedingungen</legend><div class="form-item" id="edit-terms-of-use-wrapper">
<
label class="option" for="edit-terms-of-use"><input type="checkbox" name="terms_of_use" id="edit-terms-of-use" value="1" class="form-checkbox required"> Ich akzeptiere die <a href="https://akademiker-netzwerk.de/node/2">Nutzungsbedingungen</a> und die <a href="http://www.akademiker-netzwerk.de/node/2">Datenschutzerklärung</a>.&nbsp;<span class="form-required" title="This field is required">*</span></label>
</
div>
</
fieldset>
<
fieldset class="captcha"><legend>Sicherheitsabfrage</legend><div class="description">Die untenstehende Sicherheitsabfrage dient der Vermeidung von Spam.</div><input type="hidden" name="captcha_sid" id="edit-captcha-sid" value="592">
<
div class="form-item" id="edit-captcha-response-wrapper">
<
label for="edit-captcha-response">Wie ist der Vorname des Erfinders vom Internet?: <span class="form-required" title="Dieses Feld wird benötigt.">*</span></label>
<
input type="text" maxlength="50" name="captcha_response" id="edit-captcha-response" size="50" value="" class="form-text required">
<
div class="description">Sind Sie ein Mensch?</div>
</
div>
</
fieldset>
<
input type="submit" name="op" id="edit-submit" value="Kostenlos registrieren" class="form-submit">

</
div></form>
?>

Das ist der komplette HTML Code der Registrierung. Warum ich nicht direkt auf die Variable $profile_a1 zugreifen kann ist mir ein Rätzel.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Weil's diese Variable nicht

Eingetragen von Exterior (2903)
am 28.06.2011 - 20:29 Uhr

Weil's diese Variable nicht gibt, so einfach ist das.

Hast du das Profil von $account geladen?

Edit:
Was ich gerade nicht verstehe: Wenn du das Feld als normales Profil-Feld angelegt hast, wird es doch ohnehin in der Datenbank gespeichert, was genau hast du denn noch damit vor?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also, der User hat die

Eingetragen von 1000 (764)
am 28.06.2011 - 22:06 Uhr

Also, der User hat die Möglichkeit 2 Profile anzulegen. Einmal ein Standardprofil und ein Unternehmensprofil. Das Profilfeld wird auch in dem Standardprofil angezeigt. Leider kann ich im Unternehmensprofil kein gleichnamiges Profilfeld anlegen, so dass ich ein neues Feld angelegt habe, wo ich nun einfach die Daten eintragen möchte. (Dieses Profilfeld soll beiden Profilen gleichermaßern zur Verfügung stehen und bei der Registrierung abgefragt werden) Da dies während des Inserts funktioniert, weiss ich nicht ob es evt. sogar funktionieren könnte wenn ich die Daten einfach aus der Datenbank auslese und dann in die profile_values unter der anderen Feldid eintrage. Das kann ich mal versuchen. Ich habe den Code eingefügt, um das Profil von $account zu laden. Das hat leider nicht funktioniert.

<?php
$fid
='45';
$fid1='46';
$fid2='47';
db_query("INSERT INTO {profile_values} (fid, uid, value) VALUES (%d, %d, '%s')", $fid, $user->uid, $user->name);
db_query("INSERT INTO {profile_values} (fid, uid, value) VALUES (%d, %d, '%s')", $fid1, $user->uid, $user->name);
$x=2;
$sql = "SELECT * FROM {profile_values} WHERE uid = %d and fid=%d";
$result = db_query($sql, $user->uid, $x);
$row = db_fetch_object($result);

$value = $row->value;
db_query("INSERT INTO {profile_values} (fid, uid, value) VALUES (%d, %d, '%s')", $fid2, $user->uid, $value);

?>

Ein Versuch die Daten einfach auszulesen und dann woanders reinzuschreiben hat auch nicht funktioniert.

Das Problem dabei ist wohl dass return profile_save_profile($edit, $user, $category, TRUE); erst danach ausgeführt wird. Wenn ich es vor die Anweisung setze bringt es leider auch nichts, da das Script nach return beendet wird.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Und wie genau kann ein User 2

Eingetragen von Exterior (2903)
am 28.06.2011 - 22:12 Uhr

Und wie genau kann ein User 2 verschiedene Profile anlegen?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Modul Auto assign Role und

Eingetragen von 1000 (764)
am 28.06.2011 - 22:20 Uhr

Modul Auto assign Role und eine per user-profile.tpl.php gesteuerte (php) die eine "Rollenweiche" enthält. Muss doch möglich sein die Registrierungsvariablen auszulesen. Warum geht das nicht? Wegen der form id wahrscheinlich???

  • Anmelden oder Registrieren um Kommentare zu schreiben

Beknackter Sch... Nach der

Eingetragen von 1000 (764)
am 29.06.2011 - 00:16 Uhr

Beknackter Sch... Nach der Anmeldung wird eine "Anmeldung erfolgreich Seite" aufgerufen. Dort müssten die Daten der Registrierung doch bereits in die Datenbank eingetragen worden sein. Irgedwas funktioniert da auch mit meinem Code nicht:

<?php
global $user;
$x=2;
$sql = "SELECT * FROM {profile_values} WHERE uid = %d and fid=%d";
$result = db_query($sql, $user->uid, $x);
$row = db_fetch_object($result);

$value = $row->value;
db_query("INSERT INTO {profile_values} (fid, uid, value) VALUES (%d, %d, '%s')", $fid2, $user->uid, $value); 
?>

Ehm, liegt wohl daran, dass er die uid nicht kennt da logoff. Naja, schon einmal einen Schritt weiter. Mal hat er die Daten noch nicht in die Datenbank geschrieben (funktioniert nicht) Mal hat er zwar die Daten in der Datenbank aber er kann nicht drauf zugreifen, da keine UID. Nervig !!!

Des Rätzels Lösung: Die ID die am höchten ist entspricht dem zuletzt angemeldeten User. Ich weiss mom. noch nicht wie man das in oho umsetzt aber so sollte es klappen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also ich bin ja nach wie vor

Eingetragen von Exterior (2903)
am 29.06.2011 - 12:04 Uhr

Also ich bin ja nach wie vor der Meinung, dass du das ganze mit hook_form_alter in der Zwischenzeit schon drei mal hättest lösen können. Und zwar wesentlich besser und sauberer...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Einen Marathon Läufer kurz

Eingetragen von 1000 (764)
am 30.06.2011 - 00:02 Uhr

Einen Marathon Läufer kurz vor dem Ziel ein Bahnfahrtticket zu schenken halte ich für sarkastisch :-) Und ja, ein wenig Lektüre erspart einen Geschwüre! Du hast wahrscheinlich recht damit. Nun habe ich es aber fast gelöst. Ich muss nur noch per php den Wert mit der höchsten uid auslesen und dann in die andere Tabelle eintragen.

<?php

$fid2
='47';
$x=2;
$sql = "SELECT MAX(uid) AS uid FROM profile_values where fid=%d";
$result = db_query($sql, $x);
$row = db_fetch_object($result);

$val = $row->value;
$userid = $row->uid;

echo
"val $val userid $userid";
db_query("INSERT INTO {profile_values} (fid, uid, value) VALUES (%d, %d, '%s')", $fid2, $userid, $val); 
?>

Die variable $userid wird angezeigt. Die $val variable nicht. Das muss ich noch hinbekommen dann bin ich fertig.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wo soll value den herkommen?

Eingetragen von wla (9461)
am 30.06.2011 - 07:30 Uhr

Wo soll value den herkommen? Du hast in Deiner Query ja auch kein Feld namens value angefordert, sondern nur uid. Also bekommst Du auch nichts anderes. $row -> value existiert eben nicht.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Probiers mal mit der

Eingetragen von Exterior (2903)
am 30.06.2011 - 11:04 Uhr

Probiers mal mit der Query:

SELECT * FROM profile_values ORDER BY uid DESC LIMIT 1;

Macht im Grunde das gleiche wie deine, liefert aber den gesamten Datensatz, nicht nur die UserID.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hab da wohl etwas falsch

Eingetragen von 1000 (764)
am 01.07.2011 - 00:34 Uhr

Hab da wohl etwas falsch verstanden. Danke ! Das hat geklappt.

  • 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 7 Stunden 12 Minuten
  • Казино с минимальным депозитом
    vor 7 Stunden 13 Minuten
  • Казино с минимальным депозитом
    vor 7 Stunden 14 Minuten
  • Казино с минимальным депозитом
    vor 7 Stunden 16 Minuten
  • Казино с минимальным депозитом
    vor 7 Stunden 17 Minuten
  • 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 6 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: 20454

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 19 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