mysql Suchabfragen Problem ?!?!?

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

  • mysql Suchabfragen Problem ?!?!?

    Hallo zusammen.
    Ich habe folgendes Problem. Es existiert eine Datenbank in der Ferienwohnungen abgelegt sind. In dieser Datenbank existieren unter anderen auch die Felder "Freizeittips " und "Objektangaben". Ich habe nun einen query gebaut, der die beiden Felder durchsucht. Man hat die möglichkeit, einen oder zwei Suchbegriffe einzugeben. Wenn man zwei Suchbegriffe eingibt, sollten natürlich dementsprechend weniger Ferienwohnungen aufgelistet werden als bei einen. Und genau da liegt mein Problem. Anstatt weniger werden deutlich mehr Wohnungen aufgelistet. Ich schreibe euch hier mal meinen query zum angucken

    $anzahl = mysql_query ( "select * from objekt WHERE LCASE(freizeittips) LIKE '%".strtolower($query1)."%' or LCASE(objektangaben) LIKE '%".strtolower($query1)."%' and LCASE(freizeittips) LIKE '%".strtolower($query2)."%' or LCASE(objektangaben) LIKE '%".strtolower($query2)."%'");
    $result = mysql_query ( "select * from objekt WHERE LCASE(freizeittips) LIKE '%".strtolower($query1)."%' or LCASE(objektangaben) LIKE '%".strtolower($query1)."%' and LCASE(freizeittips) LIKE '%".strtolower($query2)."%' or LCASE(objektangaben) LIKE '%".strtolower($query2)."%' LIMIT $start,10");

    Für Tipps wäre ich euch sehr dankbar! In diesem Sinne...

  • #2
    1.) Wenn SQL, dann auch ins Forum
    2.) Bitte entsprechende Formatierung!!!

    *VERSCHIEB*

    Und dann bitte think() anwenden!!!

    Wenn ergebnise entweder das eine oder das andere haben ausgegeben werden sollen, sinds logischerweise auch mehr ergebniss, als wenns beide eigenschaften haben muss.

    Kommentar


    • #3
      Du verstehst nicht! Sie sollen ja nicht das eine ODER das andere haben. Guck dir dass Script nochmal genau an, dann siehst du was ich meine. Es werden als erstes die zwei Felder nach dem ersten Suchbegriff durchsucht:

      (select * where feld1 like suchbegriff1 or feld2 like suchbegriff1)

      Dann werden die beiden Felder nach dem zweiten Suchbegriff durchsucht:

      (select * where feld1 like suchbegriff1 or feld2 like suchbegriff1 and feld1 like suchbegriff2 or feld2 like suchbegriff2)

      Ich hoffe du verstehst dass :-)

      Kommentar


      • #4
        kein wunder dass ich nicht erkannt habe, dass es zwei querys sind, bei der formatierung. (hatte wegen dem OR darauf geschlossen)

        Warum machst du die Querys nicht zusammen mit nem AND?`

        Noch ne Frage ist dein SQL Case sensitiv eingestellt?

        Kommentar


        • #5
          Ich benutze kein AND weil ja sonst nur die Wohnungen angezeigt werden, bei denen Feld1 mit Suchbegriff1, Feld2 mit Suchbegriff1, Feld1 mit Suchbegriff2, Feld2 mit Suchbegriff2 übereinstimmt. Ich will aber dass entweder Feld1 oder Feld2 mit Suchbegriff1 übereinstimmt UND dass Feld1 oder Feld2 mit Suchbegriff2 übereinstimmt.

          Ich weis garnicht was sensitive ist.

          Kommentar


          • #6
            versuch das mal:
            PHP-Code:
            $anzahl mysql_query "
            select * from objekt 
            WHERE 
            (LCASE(freizeittips) LIKE '%"
            .strtolower($query1)."%' 
            or 
            LCASE(objektangaben) LIKE '%"
            .strtolower($query1)."%') 
            and 
            (LCASE(freizeittips) LIKE '%"
            .strtolower($query2)."%' 
            or 
            LCASE(objektangaben) LIKE '%"
            .strtolower($query2)."%')"); 
            ich habs mal etwas augenfreundlicher formatiert

            du musst mit klammern arbeiten:
            ... where ( ... or ... or ...) and ( ... or ... or ...) ...
            wenn du das so zusammenfassen willst.
            Kissolino.com

            Kommentar


            • #7
              case sensitive ist englisch und sollte übersetzt werden können! Vorallem, wenn mann strtolower etc verwendet!


              OffTopic:
              --> Ich wunder mich immer wieder, wie gutz leute ihr eigenes Zeugs verstehen!


              PHP-Code:
              where (f1 bla OR f2=bla) AND (f1 =  hix OR f2=hix
              Zuletzt geändert von TobiaZ; 11.08.2003, 21:57.

              Kommentar


              • #8
                @Wurzel
                Danke Dir vielmals. Jetzt klappts einwandfrei. Dann war mein Script ja gar nicht so falsch. Mit den klammern dass muss ich mir merken.

                @tobiaZ
                Für einen Moderator verhälst du dich hier aber nicht besonders vorbildlich! Versuchs mal auf die freundliche Tour...

                Gruß

                Sven

                Kommentar


                • #9
                  wo war ich unfreundlich?

                  wer sagt das moderatoren bessere menschen sind?

                  Kommentar


                  • #10
                    Ich rede von deiner überheblichen Wortwahl. Wenn man das so liest bekommt man direkt den Eindruck als ob du dich als besserer mensch fühlst, egal ob moderator oder nicht !!!

                    Schönen Abend

                    Kommentar


                    • #11
                      tut mir leid, wenn das so war. fühle mich eigentlich nicht so. (wäre schön wenns so wäre )

                      Nee, kann nur sein, wenn ich die beiträge was schneller bearbeite und vorher schon ein paar andere threads dieser art hatte, dass es sich so an hört.

                      gute nacht!

                      Kommentar


                      • #12
                        Alles klar. Dir sei verziehen.

                        Schönen Abend noch

                        Kommentar

                        Lädt...
                        X