Beiträge: 213
Themen: 8
Registriert seit: 02.09.2009
MyBB-Version: 1.6.11
07.04.2010, 11:51
(Dieser Beitrag wurde zuletzt bearbeitet: 07.04.2010, 11:51 von Olaf_A.)
@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?
Beiträge: 2.318
Themen: 13
Registriert seit: 09.11.2008
07.04.2010, 12:10
(Dieser Beitrag wurde zuletzt bearbeitet: 07.04.2010, 12:16 von frostschutz.)
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
Beiträge: 1.443
Themen: 95
Registriert seit: 15.12.2005
MyBB-Version: 1.6.x
Naja, passiert halt, wenn man SQL-Tabellen nicht normalisiert, sondern kommagetrennte Werte als ein einziges Attribut abspeichert...
Beiträge: 25.762
Themen: 269
Registriert seit: 20.09.2005
Das ist zwar nicht elegant, aber funktioniert doch gut? Wie würdet ihr das denn lösen?
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Beiträge: 1.443
Themen: 95
Registriert seit: 15.12.2005
MyBB-Version: 1.6.x
08.04.2010, 10:11
(Dieser Beitrag wurde zuletzt bearbeitet: 08.04.2010, 10:15 von querschlaeger.)
Das funktioniert, aber wenn ich mir die MyBB-Datenbank aus Sicht eines "Datenbankdesigners" (sofern es diese Bezeichnung gibt
) 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.
Beiträge: 9.560
Themen: 197
Registriert seit: 27.12.2007
MyBB-Version: 1.8
(07.04.2010, 11:51)Olaf schrieb: @Jockl, hast du bereits Fortschritte gemacht und ein Template erstellt?
Ehrlich gesagt, habe ich an dem php-Code nicht mehr weiter "gewerkelt" und deshalb auch nicht am Template.
Beiträge: 9.560
Themen: 197
Registriert seit: 27.12.2007
MyBB-Version: 1.8
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.....
Beiträge: 2.318
Themen: 13
Registriert seit: 09.11.2008
@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...
@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.
Beiträge: 25.762
Themen: 269
Registriert seit: 20.09.2005
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?
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.