Suche in mehreren Spalten der Datenbank

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

  • Suche in mehreren Spalten der Datenbank

    Hallo Leute,

    hab da ein kleines Problem mit meinem Suchformular.
    Hab ein Formular mit sechs Feldern.
    Datum, Veranstaltung, Ort, Landkreis, Musikrichtung und Kategorie
    Die Abfrage der Datenbank besteht aus sieben Feldern.
    Status + die sechs anderen.
    Wie kan ich jetzt die Abfrage so programmieren das in jedem Fall Status erfüllt sein muß
    und nach den Feldern gesucht wird in denn im Formular was eingegeben wurde (also egal ob nur in einem was steht oder in allen) ? ? ?

    Hier mal der Code so wie ich ihn bisher hab:
    PHP-Code:
    $Query "SELECT status,tag,datum,uhrzeit,veranstaltung,ort,eintritt,lk,veranstalter,extras,hp,flyer,musik,kategorie
                       FROM kalender WHERE status = 'ja' AND datum >= '
    $datum' OR veranstaltung = '$veranstaltung' OR ort = '$ort'
                       OR lk = '
    $lk' OR musik = '$musik' AND kategorie = '$kategorie' ORDER  BY  datum  ASC "
    Habs schon mit "AND" "LIKE" und Platzhaltern versucht.
    Entwerder er gibt gar kein Treffer zurück oder alle Datensätze die vorhanden sind.
    Kann man da irgendwie mit Klammern arbeiten ???

    Danke schon mal

    Grüße Chrissi

  • #2
    klammern sind ne gute idee ... ausserdem solltest du bdenken,
    dass "and" stärker bindet als "or"
    Kissolino.com

    Kommentar


    • #3
      Bitte im entsprechenden Forum posten!!! *verschieb*

      Kommentar


      • #4
        Servus,

        Habs mit Klammern versucht, aber irgendwie klappt es nicht. *verzweifel*

        Wenn ich nur nach datum such, dann gibt er mir nur die Datensätze aus
        die status = ja haben und nach dem eingegebenen Datum liegen.
        Gib ich jedoch zur gleichen Abfrage noch einen z.B. Ort an gibt er mir auch diese Datensätze aus die vor dem Angegeben Datum stattfinden.

        Grüße Chrissi

        Kommentar


        • #5
          aktuelle query?

          Kommentar


          • #6
            Gib ich jedoch zur gleichen Abfrage noch einen z.B. Ort an gibt er mir auch diese Datensätze aus die vor dem Angegeben Datum stattfinden.
            hört sich nach OR an ...
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              Die aktuelle Query ist immer noch

              PHP-Code:
                      $Query "SELECT status,tag,datum,uhrzeit,veranstaltung,ort,eintritt,lk,veranstalter,extras,hp,flyer,musik,kategorie
                                 FROM kalender WHERE status = 'ja' AND datum >= '
              $datum' OR veranstaltung = '$veranstaltung' OR ort = '$ort'
                                 OR lk = '
              $lk' OR musik = '$musik' OR kategorie = '$kategorie' ORDER  BY  datum  ASC "
              Wenns mit Klammern geht, wie fang ich denn da am besten an ??
              Ne Klammer um alle OR Abfragen oder wie ?
              Hab so ne Abfrage noch nie gehebt .

              Kommentar


              • #8
                na klammere mal das was zusammengehört also wenn Du auf jeden Fall
                status = 'ja' AND datum >= '$datum' haben willst und die ors zusammengehören mach ne klammer um alle Ors
                Wenn aber ein Element von status = 'ja' AND datum >= '$datum' optional ist dann gehört es mit in die klammer...
                Beantworte nie Threads mit mehr als 15 followups...
                Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                Kommentar


                • #9
                  Jetz hab ich ne Klammer drum rum.

                  PHP-Code:
                          $Query "SELECT status,tag,datum,uhrzeit,veranstaltung,ort,eintritt,lk,veranstalter,extras,hp,flyer,musik,kategorie
                                     FROM kalender WHERE status = 'ja' AND ( datum >= '
                  $datum' OR veranstaltung = '$veranstaltung' OR ort = '$ort'
                                     OR lk = '
                  $lk' OR musik = '$musik' OR kategorie = '$kategorie' ) ORDER  BY  datum  ASC "
                  Wenn ich jetz z.B. nach Ort such gibt er mir alle daten aus die status = "ja" sind und aus dem gesuchten Ort.
                  Aber er soll ja nur die ausgeben auf die beide Werte zutreffen.

                  Kommentar


                  • #10
                    Original geschrieben von Du Bisches
                    Wenn ich jetz z.B. nach Ort such gibt er mir alle daten aus die status = "ja" sind und aus dem gesuchten Ort.
                    Aber er soll ja nur die ausgeben auf die beide Werte zutreffen.
                    ^^ hoffentlich weisst du, was du willst und kannst es uns erklären
                    Kissolino.com

                    Kommentar


                    • #11
                      Klar kann ich des.

                      Status = "ja" muß erfüllt sein,
                      alle anderen Felder sind Eingabefelder und optional auszufüllen.
                      Wenn ein Feld leer bleibt soll nicht danach gesucht werden wird es ausgefüllt
                      soll nach dem eingegeben Wert gesucht werden.

                      z.B. wird kein Feld ausgefüllt wird nur nach Status = ja gesucht.
                      werden alle Felder ausgefüllt soll nach allen Werten gesucht werden und es werden nur die Datensätze angezeigt auf die alle Angaben zutreffen.

                      Ich hoff jetz is es klar und verständlich.

                      Kommentar


                      • #12
                        dann würde ich vorschlagen, die query dynamisch aufzubauen:
                        - status ist gesetzt
                        - andere werte werden mit isset() oder empty() auf vorhandensein geprüft
                        und mit "AND" angehängt
                        ^^ der einfache weg

                        solltest du ein "OR" benötigen innerhalb eines wertes bzw das im suchformular zulassen, wirds etwas komplizierter. aber auch hier solltest
                        du dir mit php den bereich der query dynamisch zusammenstellen, dar auf
                        das "where status='ja'" folgt
                        Kissolino.com

                        Kommentar


                        • #13
                          Danke vielmals für den Tip

                          Werd des ganze jetz mal versuchen umzubauen.

                          Kommentar


                          • #14
                            So ewas ähnliches hab ich auch, blos kürzer,

                            Der gibt mit blos den ersten string des Array().

                            PHP-Code:
                            $Query "SELECT Name ,Land WHERE name = '$nane' AND land = '$land'  ORDER  BY  id=$id  ASC "

                            Ich hab 2 select menues .

                            Menue 1 | Menue 2
                            ____________ __________

                            Wert 1 | Wert 1
                            Wert 2 | Wert 2
                            Wert 3 | Wert 3



                            kann mir jeman weiter helfen ???????
                            Broesel

                            Kommentar


                            • #15
                              order by id=$id ... kann das richtig sein?

                              1. schau mal ins sql-manual => order by
                              2. nutze mysql_error()
                              Kissolino.com

                              Kommentar

                              Lädt...
                              X