Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Select2 soll UserID anstatt Username in Datenbank schreiben
#1
Schönen Samstag!

Die Select2-Funktion, mit der man nach Usernamen suchen kann (z.B. in der Mitgliederliste), ist schon sehr praktisch. Für ein Projekt käme es mir aber gelegen, wenn man zwar nach Usernamen suchen könnte, beim Absenden des Formulars jedoch die entsprechenden UserIDs in die Datenbank geschrieben werden wie z.B. "1, 5, 6" anstatt "Username1, Username5, Username6".
Ginge das? Und wenn ja, gibt es jemand, der mir da ein bisschen auf die Sprünge helfen könnte?

Liebe Grüsse und vielen Dank!
Zitieren
#2
Das ginge - bei der PHP-Verarbeitung der Formulardaten durch die Funktion get_user_by_username().
Beim Accountswitcher wird das zB. bei der Autor-Moderation benutzt (in as_functions.php ab Zeile ~595)
Zitieren
#3
Danke für den Hinweis! Ich habe mir das mal angesehen. Leider verstehe ich die get_user_by_username()-Funktion nicht.. also inwiefern die den einzelnen Usernamen die entsprechende UserIDs zuordnet.
Zitieren
#4
Durch die Funktion get_user_by_username() bekommst du das komplette User-Array, also auch die ID.
Als Beispiel: ein User hat den Namen BenutzerWilli und hat die User-ID 12, du hast aber nur seinen Usernamen aus dem Select2 Formular:

PHP-Code:
$user get_user_by_username('BenutzerWilli'), array('fields' => '*')); 


In dem Fall erhältst du das $user-Array von BenutzerWilli, also $user['uid'], $user['username'], $user['avatar'] usw. Wenn du nur die UID willst, kannst du auch nur dieses Feld von der Funktion abrufen lassen.
Dadurch kannst du dann $user['uid'] zum Speichern verwenden (in dem Beispiel ist das die User-ID 12).
Zitieren
#5
Ich verstehe, Danke. Wieder was praktisches gelernt!
Mit einem Usernamen funktioniert das nun auch wunderbar. Mit was für einer Funktion ziehe ich nun aber die UserIDs von mehreren Usernamen im Select2-Feld heraus, um sie gemeinsam mit dem Formular zu übertragen, damit am Ende in der Datenbank z.B. steht "1,5,6"? Meine Vermutung liegt irgendwo zwischen foreach und implode, aber von Arrays verstehe ich leider nur Oberflächliches /:
Zitieren
#6
Wenn du mehrere Usernamen über das Select2Feld erhältst, ist eine foreach-Schleife eine Möglichkeit.
Du hast dann als Ausgang zB eine Liste "Username3,Username54,Username199" und rufst die Funktion get_user_by_username() in der Schleife auf:

PHP-Code:
$userid 0;
$usernames explode(','$mybb->input['namenvomselect2feld']);
foreach (
$usernames as $username) {
   $user get_user_by_username($username, array('fields' => '*'));
   $userid $user['uid'];


Die jeweilige $userid kannst du dann entweder einzeln in die DB schreiben, oder in der Schleife mit den anderen User-IDs zu einem Array oder einer Liste zusammenfügen, oder was immer du möchtest.
Zitieren
#7
Vielen Dank für die Unterstützung, waldo! Smile
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Fid(15) automatisch in Datenbank schreiben Bodoboo 1 1.573 04.01.2017, 09:32
Letzter Beitrag: Bodoboo
  Anstatt MYSQL LDAP ? Laello 3 4.336 11.10.2007, 13:56
Letzter Beitrag: Jan