1. Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!
    Information ausblenden

Frage In Zeichenkette suchen

Dieses Thema im Forum "Datenbanken - z.B. MySQL" wurde erstellt von drumer, 15 März 2017.

  1. drumer

    drumer Neues Mitglied

    Registriert seit:
    7 Februar 2017
    Beiträge:
    13
    Punkte für Erfolge:
    1
    Ich programmiere ein Forum auf meiner Homepage http://www.levi-jacobs.de/ .
    Dabei habe ich folgende mysql Tabbelle:

    +-------+------------------------------+------+
    | id | bezeichnung | für |
    +-------+------------------------------+------+
    | 1| Unterhaltungen | alle |
    | 24 | html Scrollbar erstellen | alle |
    | 25 | Gemüsepfanne | alle |
    | 26 | html textarea | alle |
    | 27 | Loom Bänder | alle |
    | 28| über dieses Forum | alle |
    +-------+-------------------------------+------+

    Bei der Spalte "für" sollen später die Namen von den Personen stehen, die das Thema lesen dürfen.

    +-------+------------------------------+---------------------------------+
    | id | bezeichnung | für |
    +-------+------------------------------+--------------------------------- +
    | 1| Unterhaltungen | Nutzer1, Nutzer2, Nutzer5 |

    Wenn ich also die Themen anzeige, soll das habe ich das bisher so gemacht:

    select thema.bezeichnung from thema where für='alle' or für='Nutzer1' order by thema.id desc;

    Wenn das Thema aber für mehrere Nutzer gedacht ist, muss ich die Zeichenkette "Nutzer1, Nutzer2, Nutzer5" dann nach "Nutzer1" überprüfen.
    kann mir da jemand helfen?
     
    Werbung:

    Jetzt registrieren, damit diese Werbung verschwindet
  2. scbawik

    scbawik Senior HTML'ler

    Registriert seit:
    14 Juli 2011
    Beiträge:
    2.168
    Punkte für Erfolge:
    83
    Machbar wäre das theoretisch mit "REGEXP".
    Je nach erlaubten Zeichenketten ist das jedoch alles andere als sicher.

    Um das sauber zu lösen solltest du 3 Tabellen erstellen:
    User <-> UserConversation <-> Conversation

    Die Tabelle UserConversation verknüpft User IDs mit Conversation IDs.
    Das ganze kannst du dann ungefähr so abfragen:
    Code (MySQL):
    1.   c.*
    2.   Conversation AS c
    3.   UserConversation AS uc ON (c.id = uc.conversationId)
    4.   User AS u ON (u.id = uc.userId)
    5.   u.id = 5
    Weiß leider nicht ob oben genannte Query wirklich richtig ist, da ich schon seit Jahren fast nicht mehr mit Raw SQL arbeite. Ich denke aber es sollte ersichtlich sein wie das ungefähr funktioniert.
     
  3. sysop

    sysop Mitglied

    Registriert seit:
    10 Juli 2015
    Beiträge:
    125
    Punkte für Erfolge:
    18
    Die Namen halte ich für keine gute Idee, wenn dann die ID`s der Userdaten, damit die Zuordnung eindeutig ist.
    Den Inhalt des Feldes "für" kannst du in ein Array laden und dann z.B. mit in_array() auf das Vorhandensein einer bestimmten USERID prüfen

    Da du aber mit einer Datenbank arbeitest, mach es doch gleich richtg und achte auf Normalform und leg dir (wie schon gesagt) eine Hilfstabelle mit zusammengesetztem Primärschlüssel an wo du die Userid und die Datensatzid der Tabelle oben einträgst. Durch den zusammengesetzten Primärschlüssel kannst du keine Daten doppelt eintragen und es gibt keine Restriktionen für die Anzahl User. Abfragen über User mit Zugriffen oder Themen, auf die bestimmte User zugreifen können sind auch extrem leicht zu bewerkstelligen

    Code (text):
    1.  
    2. [Tabelle "für"]
    3. USERID    |   TABELLE_OBEN_ID
    4. -----------------------------------
    5. PRI       |   PRI
    6.  
    Also wenn schon, denn schon...
     
  4. alphac

    alphac Guest

    Ich glaube das ist keine gute Idee. Du solltest erst einmal die Grundlagen von Datenbankdesign lernen und Deine Webseite auf keinen Fall öffentlich machen. Abgesehen davon ist die Seite ein optischer Alptraum. Ich denk mal die Sicherheit der Webseite ist es auch.