1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

wie von: 'user_login' zu 'user_id'?

Dieses Thema im Forum "Plugins und Widgets" wurde erstellt von kaiser, 9. März 2009.

  1. kaiser

    kaiser Well-Known Member

    Registriert seit:
    20. November 2008
    Beiträge:
    1.840
    Zustimmungen:
    0
    Hello Leute,

    kurze Frage: Wie kann ich mir über den user_login die user_id holen?

    Im "Table: wp_users" ist die ID, wie der user_login eine Spalte. Wenn ich den user_login eines Users bekomme und mir in eine Variable speicher, wie kann ich dann die zugehörige ID erfragen und in einer anderen Variablen ablegen?

    Vielen Dank!
    (p.s. ich hoffe das Thema gehört hier hin.)
     
  2. Alphawolf

    Alphawolf Well-Known Member
    Ehrenmitglied

    Registriert seit:
    31. Mai 2005
    Beiträge:
    3.315
    Zustimmungen:
    0
    Salut. :)

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  3. kaiser

    kaiser Well-Known Member

    Registriert seit:
    20. November 2008
    Beiträge:
    1.840
    Zustimmungen:
    0
    Servus Alphawolf,

    vielen Dank für die Antwort. Leider bekomme ich damit immer nur meine eigene ID ausgegeben.

    Zur Erklärung: Ich hole mir mittels eines Plugins alle User mit einem gewissen Benutzerdefinierten/Extra-Feld (das ich mit diesem Plugin erstellt habe). Jeden User lege ich dann in einem div ab. Das funktioniert soweit auch ganz gut: $username = $value['user_login']; echo $username."<br />"; gibt mir anstandslos den Usernamen aus. user_login wird in der sql-abfrage des plugin mit geholt. daneben aber nur 3 spalten der beiden plugin-tabellen 'data' und 'fields'.

    Wenn ich aber versuche die einmalige User-ID zu bekommen, scheitere ich kläglichst und bekomme immer nur meine eigenen Werte ausgegeben. Um sicher zu gehen, hab ich es noch mit $user_info = get_userdata($userdata->ID); echo('Username: ' . $user_info->user_login . "\n"); probiert und bekomme wieder nur meine eigenen daten. genau dasselbe wenn ich mit get_userdata auf andere db-werte zu greifen will.

    ich hab im meiner Verzweiflung dann auch schon folgendes probiert:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    und bekomme leider als Ergebnis "Ausgabe ist: Array" ... ?? Ich hab nur keine Ahnung wie ich an den Inhalt des Arrays ran komme um zu sehen, ob´s überhaupt funktioniert hat und was da jetzt drinnen liegt...

    Vielleicht müsste ich ja auch $wpdb->users, $wpdb->user_meta, $wpdb->cimy_uef_data und $wpdb->cimy_uef_fields verschmelzen, dann die zeile in der user_login vorhanden ist und dann die spalte user_id ausgeben... ? (Bekomme ich glaub ich nicht hin) Oder gibt´s noch andere Möglichkeiten mit user_login an user-daten heran zu kommen, die ich übersehen habe?
     
    #3 kaiser, 10. März 2009
    Zuletzt bearbeitet: 10. März 2009
  4. Alphawolf

    Alphawolf Well-Known Member
    Ehrenmitglied

    Registriert seit:
    31. Mai 2005
    Beiträge:
    3.315
    Zustimmungen:
    0
    Hiermit hast du ja schon den richtigen Ansatz:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Die Werte aus dem assoziaitiven Array $value werden mit eckigen Klammern geholt: $value['user_login']

    Den Array ausgeben lassen kannst du dir mit:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    An die Werte kommst du wie oben erklärt hiermit:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Oder aber per foreach-Schleife, falls du alle IDs aus der Query auslesen möchtest.
     
  5. kaiser

    kaiser Well-Known Member

    Registriert seit:
    20. November 2008
    Beiträge:
    1.840
    Zustimmungen:
    0
    hm... funktioniert erstmal so nicht. Trotzdem Dank und Anerkennung für Zeit und Hilfe!

    Ich fang mit der Frage wohl besser ein wenig näher den Wurzeln (des Übels) an: Die beiden User-Extra-Tabellen "fields & data" sind miteinander so verknüpft wie die WP-Basis-Tabellen "users & usermeta". An die "users" sind sie dann mittels "user_id" angehängt. Also wird die ID als Spalte i d "users"-Tabelle über deren Wert/Value mit den passenden Zeilen i d "usermeta"-Tabelle verknüpft. zB ("users"-Tabelle) user_login: Hans Schlingel ID: 41 mit allen Zeilen ("usermeta"-Tabelle) aus der Spalte "user_id" wo 41 vorkommt. Ich such mich nur schon zum absoluten Hans und find dafür nirgendwo eine Erklärung, bzw. eine Anleitung wie das gemacht wird...

    Hast Du da vielleicht eine a) Erklärung/Anleitung oder einen b) Link für mich? Ich glaub, dann kann ich einen großen Teil von selbst durch denken und muss nicht für jede Frage das Forum bemühen und die ID wäre ja eigentlich nur ein alternativer Ansatz gewesen. So wärs für mich leichter a d Sache heranzugehen und verständlicher. Dankeschön!
     
    #5 kaiser, 10. März 2009
    Zuletzt bearbeitet: 10. März 2009
  6. Alphawolf

    Alphawolf Well-Known Member
    Ehrenmitglied

    Registriert seit:
    31. Mai 2005
    Beiträge:
    3.315
    Zustimmungen:
    0
  7. kaiser

    kaiser Well-Known Member

    Registriert seit:
    20. November 2008
    Beiträge:
    1.840
    Zustimmungen:
    0
    Hey Alphawolf,

    den Codex hab ich schon in allen Varianten durch und immer dasselbe Problem: es kommt die eigene user_id, weil eingeloggt... Ich will jetzt lieber selbst meine sql-Abfragen basteln, müsste dazu aber (wie oben beschrieben) wissen, wie ich von der
    Spalte(!) ID [im users-Table]
    auf die zur
    ID passenden Zeilen(!) [Spalte user_id im user_meta-Table]
    zugreifen kann.

    Es ist ja so, dass im users-Table eine Spalte mit der ID vorhanden ist. Nur ist der user-meta-Table etwas anders aufgebaut: es gibt eine Spalte user_id aber für die dazugehörigen Werte wie first_name, last_name, etc. nur Zeilen. D.h. irgendwie greift WP alle Zeilen mit der ID xy im user-meta-Table auf und verschmilzt diese dann mit dem user-Table, wo die ID xy zur user_id xy passt. Nur wo und wie passiert das? Ich finde dazu weder im Codex, noch sonst wo irgend etwas. Ich wüsste noch nicht einmal wo ich da im WP-Core nachschauen müsste um die Abfrage raus zu finden. Logischer wäre ja den user-meta-Table um die entsprechenden Spalten zu erweitern und nicht Spalten mit Zeilen zu verschmelzen.

    Gibt´s da eine Erklärung/Link/Hintergrundgedanken dazu? Danke vielmals (mein Kopf explodiert bald).
     
  8. Alphawolf

    Alphawolf Well-Known Member
    Ehrenmitglied

    Registriert seit:
    31. Mai 2005
    Beiträge:
    3.315
    Zustimmungen:
    0
    Dafür solltest du dir den Quellcode der Fkt. get_usermeta anschauen. Die liefert zwar nur die Ergebnisse für die eigene ID, aber darin siehst du, wie auf die user-meta-Table zugegriffen wird.
     
  9. kaiser

    kaiser Well-Known Member

    Registriert seit:
    20. November 2008
    Beiträge:
    1.840
    Zustimmungen:
    0
    auja! sehr fein. Danke erstmal. Ich melde mich wieder bei Fortschritten, wie Schwierigkeiten. Das Problem haben ja scheinbar relativ viele Leute und Lösung hab ich dazu bis heute keine gefunden. Danke! :D
     
  10. kaiser

    kaiser Well-Known Member

    Registriert seit:
    20. November 2008
    Beiträge:
    1.840
    Zustimmungen:
    0
    Servus Alphawolf,

    nochmals Danke für die Hilfe. Ich hab schlussendlich doch aufgegeben, alles eingepackt und einem Freund der Programmierer ist, um Hilfe gefragt. Es hätte meine Kenntnisse bei Weitem überstiegen. Falls jemand ein ähnliches Problem mit Cimy-User-Extra-Fields, user&user_meta-Daten oder ählichen Geschichten hat, hier ein Ansatz zur Lösung, wie man auf einzelne Feldwerte zugreifen kann:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden