Beiträge: 427
Themen: 45
Registriert seit: 11.08.2012
MyBB-Version: 1.8.36
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!
Beiträge: 2.041
Themen: 10
Registriert seit: 28.06.2007
MyBB-Version: 1.8.x
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)
Beiträge: 427
Themen: 45
Registriert seit: 11.08.2012
MyBB-Version: 1.8.36
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.
Beiträge: 2.041
Themen: 10
Registriert seit: 28.06.2007
MyBB-Version: 1.8.x
07.10.2017, 17:22
(Dieser Beitrag wurde zuletzt bearbeitet: 07.10.2017, 17:30 von doylecc.)
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).
Beiträge: 427
Themen: 45
Registriert seit: 11.08.2012
MyBB-Version: 1.8.36
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 /:
Beiträge: 2.041
Themen: 10
Registriert seit: 28.06.2007
MyBB-Version: 1.8.x
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.
Beiträge: 427
Themen: 45
Registriert seit: 11.08.2012
MyBB-Version: 1.8.36
Vielen Dank für die Unterstützung, waldo!