Suche mit AND und OR gleichzeitig

  • Suche mit AND und OR gleichzeitig

    Hallo!

    Habe folgendes Problem: Auf der ersten Seite sollen mittels Listenmenü (Typ) und Eingabefeld (Name) die Suchbegriffe eingegeben werden. Gearbeitet wird mit POST. Die Datenbank hat die Felder Inventarnummer, Name, Seriennummer, Standort und Typ. Ich möchte nun genau nach dem Typ suchen (er muss mit dem Listenmenü übereinstimmen). Beim Namen sollen alle restlichen Felder nach dem Suchbegriff abgesucht werden.

    Hier der Code, der leider nicht funktioniert.



    SELECT *
    FROM tbl_inventar
    WHERE Typ LIKE '$liste' AND tbl_inventar.Name LIKE '%$name%'
    OR tbl_inventar.Seriennummer LIKE '%$name%'
    OR tbl_inventar.Inventarnummer LIKE '%$name%'
    OR tbl_inventar.Standort LIKE '%$name%'




    Für euch ist es sicher ein leichtes, den Code auszubessern. DANKE im Voraus!
  • Falls das PHP Code ist, und du einfache Hochkommas verwendest, werden darin keine Variablen ersetzt (weil das letzte Zeichen des von dir geposteten Codes ein einfaches Hochkomma enthält).
    Ansonsten musst du dir die Abfrage dynamisch zusammenbauen.

    1. Wenn $liste aus einer Auswahlliste kommt, brauchst du kein "like" sondern kannst per "=" vergleichen, oder?
    2. Wenn nur $liste ausgewählt ist, lässt du alles was mit $name vergleich weg.
    3. Wenn nur $name gesetzt ist, lässt du den Vergleich mit Typ weg.
    4. Wenn beides gesetzt ist, machst du eine runde Klammer um alles nach dem AND:
    ... AND (tbl_inventar ... %$name%)
    5. Diese Art von SQL-Abfrage ist anfällig für SQL-Attacken. Stattdessen lieber eine Variante mit "parameter" und "bind" verwenden

    hth