MyBB.de Forum
ID in Zellen zählen - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Sonstiges (https://www.mybb.de/forum/forum-1.html)
+--- Forum: Programmierung (https://www.mybb.de/forum/forum-32.html)
+--- Thema: ID in Zellen zählen (/thread-35274.html)



ID in Zellen zählen - melancholia - 20.01.2018

Guten Abend,

vermutlich sehe ich den bekannten Wald vor lauter Bäume nicht mehr, aber ich komme bei einem Problem gerade nicht weiter und hoffe, mir kann hier jemand auf die Sprünge helfen.

Es geht darum, dass ich eine Tabelle habe, in der User-IDs gespeichert werden.
Abgespeckt sieht das Ganze so aus, um es zu veranschaulichen:

id           uids
1           1,2,3
2           2,3
3           1,4,5
4           2,4

Nun würde ich gerne zählen, wie oft eine gewisse User-ID in allen uids-Feldern vorkommt.
Sprich, User-ID 2 dreimal, User-ID 1, 3 und 4 jeweils zweimal und User-ID 5 nur einmal.

Als nächsten Schritt soll eine Aktion ausgelöst werden, wenn eine User-ID 5x gezählt wird.

Wie mache ich das am besten?

Vielen Dank und liebe Grüsse!


RE: ID in Zellen zählen - regaddi - 20.01.2018

Hallo,

hast Du diese Tabell in Excel oder wo ?


RE: ID in Zellen zählen - melancholia - 21.01.2018

Es ist eine Datenbanktabelle meines Forums  Smile

Nach noch mehr herumprobieren, bin ich nun bei folgendem Query gelandet, das auch den Zweck zu erfüllen scheint:

PHP-Code:
$query $db->query("SELECT COUNT(uids) as count FROM ".TABLE_PREFIX."table WHERE (uids LIKE ('%$uid,%') OR uids LIKE ('%,$uid%'))"); 

Gäbe es vielleicht noch eine andere (elegantere) Lösung?


RE: ID in Zellen zählen - MrBrechreiz - 21.01.2018

Hmm, einen explode davor machen und die uids somit auslesen. Dann das explode Resultat in die Where mit rein.


RE: ID in Zellen zählen - doylecc - 21.01.2018

(21.01.2018, 01:30)melancholia schrieb: Es ist eine Datenbanktabelle meines Forums  Smile

Nach noch mehr herumprobieren, bin ich nun bei folgendem Query gelandet, das auch den Zweck zu erfüllen scheint:

PHP-Code:
$query $db->query("SELECT COUNT(uids) as count FROM ".TABLE_PREFIX."table WHERE (uids LIKE ('%$uid,%') OR uids LIKE ('%,$uid%'))"); 

Gäbe es vielleicht noch eine andere (elegantere) Lösung?

Eleganter weiß man nicht, denn solche Art Listen in einem Datenbankfeld sollte man eigentlich vermeiden.
Aber deine Query wird ein falsches Ergebnis liefern, denn wenn du zB nach uid 2 suchst, wird sie auch bei uid 20 oder 222 oder 82 usw zählen.

Du könntest entweder eine einfache Abfrage durchführen und dann in einer PHP-Schleife mit explode() zählen, wie Mr. Brechreiz vorgeschlagen hat oder, wenn du das Ergebnis direkt aus der Abfrage haben möchtest, könntest du es eher in dieser Art versuchen (Für das Beispiel habe ich die ID des aktuellen Users benutzt, nach der gesucht wird):

PHP-Code:
$query $db->query("SELECT COUNT(*) as count FROM `deine_tabelle` WHERE FIND_IN_SET('{$mybb->user['uid']}', uids)");
$number $db->fetch_field($query"count");

if (
$number >= 5) {
   // tu etwas




RE: ID in Zellen zählen - melancholia - 21.01.2018

(21.01.2018, 15:54)doylecc schrieb: Aber deine Query wird ein falsches Ergebnis liefern, denn wenn du zB nach uid 2 suchst, wird sie auch bei uid 20 oder 222 oder 82 usw zählen.

Danke für den Hinweis, daran dachte ich natürlich nicht.

Dein Vorschlag funktioniert so, wie ich mir das vorgestellt habe.
Vielen Dank!  Smile