[REGEX] schonwieder regexp^^

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

  • [REGEX] schonwieder regexp^^

    Ai^^

    Aalso.. ich will für mein Forum feststellen, welches Forum vom aktuellen Benutzer noch nicht gelesene (neue) Beiträge enthält. Ich schreibe alle Benutzer, die den Thread schon gelesen haben in eine Art gejointes Array (also einen String ) (Trennzzeichen: |) in der Datenbank.

    Das ganze sieht dann z.B. so aus:

    Code:
    |1|21|34|34
    Jetzt habe ich eine regexp erstellt, die ich in das Query eingebaut habe, welches herausfinden soll, ob es noch ungelesene Threads im Forum gibt.


    Das Query sieht so aus:

    PHP-Code:
            $sql "SELECT id FROM forum_threads WHERE fid='$fid'
     AND vuids NOT REGEXP '@\|
    $uid\|%isU' AND vuids NOT REGEXP '%\|$uid$%isU'"
    So.. das funktionert mal, und mal nicht. Ist halt irgendwie leich merkwürdig..

    Das soll folgendes bewirken:

    Die ID's aus von den Threads abrufen, in denen die UID noch nicht steht (= Die ungelesen sind)

    Hab ich da irgendwas falsch gemacht?
    Zuletzt geändert von ; 09.06.2007, 12:38.

  • #2
    Re: [REGEX] schonwieder regexp^^

    Original geschrieben von micronax
    So.. das funktionert mal, und mal nicht. Ist halt irgendwie leich merkwürdig..
    Lass mich raten - es funktioniert dann nicht, wenn die gesuchte UID genau am Anfang oder am Ende des Feldinhaltes steht ...?

    Hab ich da irgendwas falsch gemacht?
    Ja - und zwar m.E. schon massiv bei der Entwicklung des Datenmodells.



    Und bitte Code umbrechen!
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Eigendlich wenn die ID am Anfang / mitte steht, sollte der 1. Ausdruck zutreffen und wenn er am Ande steht der 2. Ausdruck.

      Kommentar


      • #4
        Na dann finde erst mal heraus, wodurch sich die Fälle, in denen es "nicht funktioniert", von denen, wo es das tut, signifkant unterscheiden.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Na toll... hab' grad' was über serialize und so gelesen.. Auch ganz net.. Aber da wäre es vermutlich noch schwieriger das mit MySQL zu trennen, oder?

          Kommentar


          • #6
            Ein Beispiel:

            Meine uid: 1; die eines kumpels: 21

            und bei "|21" in der DB sacht er mir, dass es von mir gelesen wäre, was aber nicht der Fall, ist da vor der Ziffer eins im String kein | steht.

            Kommentar


            • #7
              Lass uns mal überlegen - welches Sonderbedeutung hat eigentlich das Zeichen | in regulären Ausdrücken ...?



              Und das mit dem Code umbrechen möchte ich nicht noch mal sagen müssen.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Original geschrieben von wahsaga
                Lass uns mal überlegen - welches Sonderbedeutung hat eigentlich das Zeichen | in regulären Ausdrücken ...?
                Deswegen hab' ich ja auch ein "\" davor gesetzt.. Hats nur vergessen ins Forum hier mit reinzuschreiben.. geht aber immernoch ned..
                Zuletzt geändert von ; 09.06.2007, 12:40.

                Kommentar


                • #9
                  Wenn du wirklich bei diesem, m.E. äusserst suboptimalen Datenmodell bleiben willst - dann würde ich empfehlen, einfach ein anderes Trennzeichen und FIND_IN_SET zu verwenden.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Original geschrieben von wahsaga
                    Wenn du wirklich bei diesem, m.E. äusserst suboptimalen Datenmodell bleiben willst - dann würde ich empfehlen, einfach ein anderes Trennzeichen und FIND_IN_SET zu verwenden.
                    Es ist zwar nicht mein Thema, aber jedoch hab ich so nen ähnliches Prinzip bald vor, aber da du sagst, dass es suboptimal ist, wollte ich mal nachfragen, welche Variante denn besser wäre

                    mfg

                    Kommentar


                    • #11
                      Also ich hab das prob jetzt gelöst.. Wie: Frag mich nicht Hab ein anderen seperator genommen.

                      So ich empfehle um arrays in mysql zu speichern: (un-)serialize()

                      Kommentar


                      • #12
                        Original geschrieben von micronax
                        So ich empfehle um arrays in mysql zu speichern: (un-)serialize()
                        Autsch.

                        Dann kannst du sie ja erst PHP-seitig durchsuchen, musst also immer alle Datensätze auslesen.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Ja ach. Ansonsten muss man es ja mehr oder weniger so machen, wie ich es gemacht habe.

                          Kommentar


                          • #14
                            Ist ja nicht so, als ob wir das Thema "Treads als gelesen markieren" u.ä. nicht schon mehrfach behandelt haben. Hätte man sich mal vorher gedanken gemacht, und vielleicht nicht das Rad neu erfunden.

                            BTW: die "Großen" machen es doch vor...

                            Kommentar

                            Lädt...
                            X