MyBB.de Forum
Wer hat mich in der Buddyliste? - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Anpassungen (https://www.mybb.de/forum/forum-47.html)
+--- Forum: Plugin-Ideen und -Wünsche (https://www.mybb.de/forum/forum-73.html)
+--- Thema: Wer hat mich in der Buddyliste? (/thread-22232.html)

Seiten: Seiten: 1 2


RE: Wer hat mich in der Buddyliste? - Olaf_A - 07.04.2010

@querschlaeger, danke für die zusätzlichen Infos und Hinweise. An was man alles denken muß *ztztzt*

@Jockl, hast du bereits Fortschritte gemacht und ein Template erstellt?


RE: Wer hat mich in der Buddyliste? - frostschutz - 07.04.2010

Ich habe keine Ahnung wie die Buddylist gespeichert wird (nutze die nirgends) aber wenn es csv oder array als String ist könnte man da eventuell noch ein LIKE einwerfen... MyBB macht das an einigen Stellen genauso. Bescheuert, zumal dazu dem Feld noch Kommata angehängt werden müssen, anstatt die gleich fest einzubauen, aber so ists halt.

Code:
(CONCAT(',',forums,',') LIKE '%,$fid,%'

s/forums/buddylist, s/$fid/$uid ...

Damit spart ihr euch die while-schleife bzw. das explode / if


RE: Wer hat mich in der Buddyliste? - querschlaeger - 07.04.2010

Naja, passiert halt, wenn man SQL-Tabellen nicht normalisiert, sondern kommagetrennte Werte als ein einziges Attribut abspeichert...


RE: Wer hat mich in der Buddyliste? - StefanT - 08.04.2010

Das ist zwar nicht elegant, aber funktioniert doch gut? Wie würdet ihr das denn lösen?


RE: Wer hat mich in der Buddyliste? - querschlaeger - 08.04.2010

Das funktioniert, aber wenn ich mir die MyBB-Datenbank aus Sicht eines "Datenbankdesigners" (sofern es diese Bezeichnung gibt Big Grin ) anschaue, dann muss ich die Hände über den Kopf zusammenschlagen...

Hier bietet sich z.B. eine Hilfstabelle an:

Code:
ID | USER | BUDDY
1  | 1    | 2
2  | 1    | 3
3  | 1    | 14
4  | 3    | 14
5  | 14   | 1
6  | 1    | 5
n  |      |

Das würde Buddy-Afbfragen extrem vereinfachen (Pseudocode):

Code:
Suche alle BUDDY wo USER ist m
Das liefert alle Freunde von einem User.

Code:
Suche alle USER wo BUDDY ist m
Das würde das Problem dieses Threads lösen.


RE: Wer hat mich in der Buddyliste? - Jockl - 08.04.2010

(07.04.2010, 12:51)Olaf schrieb: @Jockl, hast du bereits Fortschritte gemacht und ein Template erstellt?

Blush Ehrlich gesagt, habe ich an dem php-Code nicht mehr weiter "gewerkelt" und deshalb auch nicht am Template.


RE: Wer hat mich in der Buddyliste? - Jockl - 10.04.2010

An der Tatsache, dass die Tabelle nicht normalisiert ist, kommt man ja wahrscheinlich erst einmal nicht dran vorbei.

Angeregt durch frostschutz' Hinweis habe ich mal mit folgendem Code im PHPMyAdmin gespielt:
Code:
SELECT uid, buddylist FROM `users` WHERE buddylist LIKE "%,X,%" ORDER BY uid ASC
"X" ist dabei die uid, nach der man in der Buddylist sucht.

Problem: wenn sich "X" am Ende des Arrays befindet, erhält man mit der o.a. Zeile kein Ergebnis. Hier müsste man mit LIKE "%,X%" bzw. mit LIKE "%,X" suchen.....


RE: Wer hat mich in der Buddyliste? - frostschutz - 10.04.2010

@Jockl,
Ja, das meinte ich ja mit "bescheuert". Du musst das Feld vor dem LIKE mit CONCAT um , am Anfang und am Ende erweitern.

@StefanT,
Also ich würde mindestens die zusätzlichen , direkt ins Feld speichern. Das CONCAT macht das Query unglaublich langsam. Eines der vielen Dinge in MyBB die unnötig sind wie ein Kropf, mit der Änderung von einer Zeile behoben werden könnten, was aber nicht gemacht wird da es ja dann nichts mehr gäbe, was man in MyBB 2 dann endlich richtig machen könnte... Rolleyes

@querschlaeger,
So eine Tabelle wäre natürlich die Kirsche auf der Sahne auf dem Törtchen, aber sowas kann man hier ja von vorneherein gar nicht erwarten.


RE: Wer hat mich in der Buddyliste? - StefanT - 11.04.2010

Naja, die Code-Basis ist halt schon Jahre alt... Ich denke, mit MyBB 2 wird so etwas nicht mehr gemacht.

Was ist denn besser, eine zusätzliche Tabelle oder CSV-Daten?