Ankündigung

Einklappen
Keine Ankündigung bisher.

Nach doppelten Einträgen suchen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Nach doppelten Einträgen suchen

    Hallo,

    womöglich ist das sehr simpel aber ich komme leider nicht drauf.

    Szenario:

    Ein Portal hat ein Benachrichtigungssystem (wie Facebook). Es gibt eine Benachrichtigung, wenn jemand in einem Thema schreibt in dem man selbst auch schon geschrieben hat.

    Was ich möchte ist, dass sobald eine Benachrichtigung bei einem Mitglied vorhanden ist, er nicht noch eine zweite Benachrichtigung an das gleiche Mitglied vom gleichen Mitglied sendet. (es werden sonst zu viele bei Abwesenheit)

    Ich erstelle also eine SQL Abfrage und suche nach dem Thema in Verbindung mit dem Sender.

    PHP-Code:
    SELECT n.*
    FROM pnotifications n
    WHERE n
    .notification_topic 2
    AND n.source_user_id 2017 
    (source_user_id ist der Sender)

    Wenn in dem Thema 5 verschiedene Personen geschrieben haben, erhalten alle 5 eine Benachrichtigung. Das Ergebnis bei einem echo der Empfänger user_id wäre also z.B.:

    PHP-Code:
    echo $row->user_id '-'
    Ergebnis:

    20-34-56-28-102

    Wie kann ich nun für jede von diesen 5 ID´s verhindern, dass diese nicht noch einmal eine Benachrichtung erhalten?

    Der Notification hook sieht so aus:

    notification_hook:ush('topic_posted', $data['topic_id']);

    Das um diesen hook eine IF Abfrage muss ist klar nur soll das ja für jede einzelne ID gemacht werden und falls die ID nicht dabei ist soll die Benachrichtigung geschickt werden.

    Mir ist klar, dass dies für euch Profis wahrscheinlich so einfach ist, dass man sich fragt, warum man da nicht drauf kommen kann aber ich brauch einfach ein Beispiel. Hab einen Knoten im Kopf

  • #2
    Womit willst du die ID denn vergleichen? Denn das muss ja bereits vor dem hook geschehen wenn ich das richtig verstanden habe. (In irgend einer Tabelle steht vermutlich das die Person schon einmal benachrichtigt wurde? Wenn ja musst du diese ID ebenfalls zum Vergleich abfragen. Gibt es die entsprechenden Daten bisher nicht musst du sie zusätzlich irgendwo speichern. Denn sonst weiß das System ja nicht das es bereits eine Benachrichtigung gibt.)

    Dann sorgst du einfach dafür das die ID's dir als Array vorliegen und definierst eine zusätzliche Variable z.B. $pushNotification = ''TRUE";

    Als nächstes durchläufst du das Array mit foreach und fragst für jedes $key=>$value Paar ab ob es dem Kontrollwert entspricht. Ist das der Fall setzt du $pushNotification = "FALSE";

    Im Anschluss kommt um den eigentlichen Hook dann einfach nur ein if $pushNotification == "TRUE" und du hast die im Array genannten ID's herausgefiltert.

    Kommentar

    Lädt...
    X