Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Variable mit AND und OR durchsuchen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Variable mit AND und OR durchsuchen

    Hallo,

    gibt es eine Möglichkeit eine Variable ZB
    $wert = "1, 2, 3, 4, 5";
    nach mehreren Suchbegriffen verbunden mit AND oder OR zu durchsuchen und je nach Erfolg etwas auszugen, also in etwa so:

    if ( (1 OR 15) AND (5 OR 7 OR 9) AND (3 OR 11) IN $wert enthalten){
    echo "JA";}else{
    echo "NEIN";
    }

    In diesem Besipiel sollte dann ein JA kommen.

    Danke für die Hilfe und Grüsse
    Ulli

  • #2
    Nein. Schon gar nicht, wenn Du $wert als String aus Values angibst.
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #3
      Woher kommt den $wert überhaupt? Also warum ist es ein String aus Zahlen die mit Komma getrennt sind? Kommt das vlt. so aus der Datenbank???

      Kommentar


      • #4
        Ja. $wert ist quasi eine "Liste" mit
        Eigenschaften, also in diesem Beispiel hat jemand die Eigenschaften 1,2,3,4,5. Die Werte kommen aus einer Datenbanktabelle mit den (u.a.) Spalten Name und Eigenschaft. Dort steht dann ZB
        Name Eigenschaft
        Ulli.....1
        Ulli.....2
        Ulli.....3
        Ulli.....4
        Ulli.....5
        Test...3
        Test...7
        Test...9
        (Hinter den "Eigenschaftzahlen" stehen in einer anderen Tabelle die "Eigenschaftnamen")
        Nun möchte ich alle Namen deren Eigenschaften
        (1 OR 15) AND (5 OR 7 OR 9) AND (3 OR 11) ist anzeigen.
        Ich dachte es wäre nicht schlecht als ersten Schritt alle Eigenschaften in eine Variable zu schreiben...
        Dafür suche ich eine Lösung.

        Kommentar


        • #5
          Beschreib mal was zum Hintergrund. Das scheint alles ziemlich unsinnig.
          [COLOR="#F5F5FF"]--[/COLOR]
          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
          [COLOR="#F5F5FF"]
          --[/COLOR]

          Kommentar


          • #6
            Nutz Arrays dafür. Dann kannst du über jeden einzelnen Wert iterieren und deine Überprüfungen damit machen. IN einer Textvariable bringen dir die IDs gar nichts.

            Kommentar


            • #7
              Ich habe eine Tabelle eigenschaften und die splaten eigenschaften.id und eigenschaften.name.
              Dazu habe ich die Tabelle namen mit Spalten namen.id, namen.name und namen.eigenschaftenid. In der Spalte namen.namen stehen die NAmen, in der Spalte namen.eigenschaftenid JE EINE id. Soweit ja sicher klar, oder?
              Nun Möchte ich auf einer PHP Seite alle Namen anzeigen lassen, die die gesuchten Eigenschaften besitzen. (Also zb (Eigenschaft1 Oder Eigenschaft2)UND(ES3 Oder ES4)...)Ich habe etwa 45 Eigenschaften und 500 Namen.
              Das ist soweit das Vorhaben...
              Danke, das geht ja alles recht schnell hier

              Kommentar


              • #8
                Naja, ob die Datenbank wirklich so sinnvoll aufgebaut ist?

                Kommentar


                • #9
                  Naja, an sich schon.
                  [COLOR="#F5F5FF"]--[/COLOR]
                  [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                  [COLOR="#F5F5FF"]
                  --[/COLOR]

                  Kommentar


                  • #10
                    sagen wir mal die namen sind schüler, die Eigenschaften Sport-Hobbys. Nun möchte ich abfragen welcher Schüler welche Sportarten mag in verbindung mit denen die wir heute Mittag anbieten um zu sehen welche Schüler "versorgt" sind und in Umkehrung dann wer nicht...
                    Habe gesagt bekommen Schüler in eine Tab, Sportarten (Hobbys) in eine und eine Verbindungstabelle...

                    Kommentar


                    • #11
                      Hat das irgendwas mit Deinem letzten Thread zu tun, dann sags bitte. Es ist unnötig, sich hier Gedankenkonstrukte auszuspinnen.
                      [COLOR="#F5F5FF"]--[/COLOR]
                      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                      [COLOR="#F5F5FF"]
                      --[/COLOR]

                      Kommentar


                      • #12
                        Du willst Schnittmengen bilden. Schau dir die array Funktionen an, insbesondere

                        array_diff()
                        array_intersect()
                        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                        Kommentar


                        • #13
                          Das Problem ist, dass man dazu alle Userdaten komplett auslesen muss.
                          [COLOR="#F5F5FF"]--[/COLOR]
                          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                          [COLOR="#F5F5FF"]
                          --[/COLOR]

                          Kommentar


                          • #14
                            Hallo,
                            habe versucht das Problem mal genau aufzuzeigen:
                            Danke für Eure Mühe. Es scheint in der Tat ähnliche Problemstellung zu sein wie in meinem anderen Thread.
                            (
                            Vielen vielen Dank für Eure Hilfe

                            Kommentar


                            • #15
                              Zitat von lumb Beitrag anzeigen
                              Nun möchte ich alle Namen deren Eigenschaften
                              (1 OR 15) AND (5 OR 7 OR 9) AND (3 OR 11) ist anzeigen.
                              Ich dachte es wäre nicht schlecht als ersten Schritt alle Eigenschaften in eine Variable zu schreiben...
                              Doch, und ob das schlecht ist. Wenn etwas bereits die Datenbank machen kann - dann mache es auch dort direkt, und nicht erst hinterher per PHP.

                              Um zu prüfen, ob zu einem Benutzer mehrere vorgegebene Eigenschaften gehören, kann man bspw. nach der Benutzer-ID gruppieren, und mittels HAVING die Anzahl der Datensätze im Ergebnis auswerten lassen, in etwa so:

                              Code:
                              SELECT id FROM tabelle
                              WHERE eigenschaft = 4711 OR eigenschaft = 42 # nach 2 speziellen Eigenschaften wird gesucht
                              GROUP BY id
                              HAVING COUNT(id) = 2; # nur die IDs werden zurückgeliefert, die jeweils einen
                                                    # Datensatz mit 4711 und einen mit 42 haben
                              [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                              Kommentar

                              Lädt...
                              X