Select2 soll UserID anstatt Username in Datenbank schreiben - Druckversion +- MyBB.de Forum (https://www.mybb.de/forum) +-- Forum: Anpassungen (https://www.mybb.de/forum/forum-47.html) +--- Forum: Plugin-Entwicklung (https://www.mybb.de/forum/forum-74.html) +--- Thema: Select2 soll UserID anstatt Username in Datenbank schreiben (/thread-35101.html) |
Select2 soll UserID anstatt Username in Datenbank schreiben - melancholia - 07.10.2017 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! RE: Select2 soll UserID anstatt Username in Datenbank schreiben - doylecc - 07.10.2017 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) RE: Select2 soll UserID anstatt Username in Datenbank schreiben - melancholia - 07.10.2017 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. RE: Select2 soll UserID anstatt Username in Datenbank schreiben - doylecc - 07.10.2017 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). RE: Select2 soll UserID anstatt Username in Datenbank schreiben - melancholia - 07.10.2017 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 /: RE: Select2 soll UserID anstatt Username in Datenbank schreiben - doylecc - 07.10.2017 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; 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. RE: Select2 soll UserID anstatt Username in Datenbank schreiben - melancholia - 07.10.2017 Vielen Dank für die Unterstützung, waldo! |