[SQL allgemein] Zeilenweise suchabfrage

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

  • [SQL allgemein] Zeilenweise suchabfrage

    Hallo,

    ich habe ein Problem. Ich möchte eine Schfunktion auf meiner Seite einfügen, die Zeilenweise sucht und nicht Felderweise. Derzeit habe ich:
    PHP-Code:
    $suche1 "SELECT * FROM archiv WHERE inhalt LIKE '%".$suche."%' OR sendung LIKE '%".$suche."%' OR folge LIKE '%".$suche."%' OR bandbeschreibung LIKE '%".$suche."%' OR standort LIKE '%".$suche."%' ORDER BY sendung, folge"
    Wenn ich aber jetzt 2 Worte in mein Suchfeld eingebe, dann bekomme ich nur die Zeile, wo beide Wörter in einem Feld stehen. Das will ich nicht.
    ich will die zeile, die beide Wörter enthält, egal ob in der selben Zelle oder nicht.

    Hilfe
    Helmi

  • #2
    Dann mit Hilfe von explode() den string zerlegen und in ein Array speichern und dann für jeden array-Index die Suche starten.
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      Hmm, danke schon mal.... hört sich gut an.
      Ich glaube aber, ich bin zu sehr newbie als dass ich das problemlos so umsetzte, wie Du es beschrieben hast.
      Kannste mir ein Beispiel geben?

      Kommentar


      • #4
        Übrigens... Deine Seite finde ich gut. Super Idee.

        Kommentar


        • #5
          PHP-Code:
          $such_array explode(" ",$suche);
          foreach (
          $such_array as $value)
          {
          $suche1 "SELECT * FROM archiv WHERE inhalt LIKE '%".$value."%' OR sendung LIKE '%".$value."%' OR folge LIKE '%".$value."%' OR bandbeschreibung LIKE '%".$value."%' OR standort LIKE '%".$value."%' ORDER BY sendung, folge";

          Ist aber ungetestet!!!
          it's not a bug,
          it's a feature!

          Kommentar


          • #6
            Kommt zwar kein Fehler, geht aber auch nicht.
            Er gibt mir dann auch Daten aus, die zwar den einen haben, nicht aber den anderen Wert

            Kommentar


            • #7
              Dann musst du dein SELECT noch umbauen.
              Ungefähr so:
              Wähle alles aus, wo Suchbegriff in (inhalt und sendung) oder in (inhalt und folge) oder in ...
              it's not a bug,
              it's a feature!

              Kommentar


              • #8
                Original geschrieben von happy_helmi
                Kommt zwar kein Fehler, geht aber auch nicht.
                Er gibt mir dann auch Daten aus, die zwar den einen haben, nicht aber den anderen Wert
                ist auch logisch, in der foreach überschreibst du $suche immer wieder

                PHP-Code:
                $suche "such mich";
                $such_array explode(" ",$suche);
                // alle suchbegriffe im array

                $feldliste = array("spalte1","spalte2","spalte3");
                // zu durchsuchende spalten, beliebig zu erweitern

                $ins = array();
                // zwischenspeichern der einzelnen suchstrings

                foreach($such_array as $val)
                {
                  
                $ins[] = "(".implode(" LIKE '%".$val."%' OR "$feldliste)." LIKE '%".$val."%')";
                }
                echo 
                implode(" AND ",$ins); 
                schau dir den code mal in ruhe an und schau dir im manual mal an,
                was die einzelnen funktionen machen. musst du nur noch auf deine
                bedürfnisse umsetzen.
                Kissolino.com

                Kommentar


                • #9
                  Jetzt muss ich mal wieder ganz blöd fragen...
                  wo wird mir dann die zeile übergeben bzw. wie kann ich die werde jetzt anzeigen lassen?
                  wo muss ich mein $suche2 = mysql_query($suche1); einfügen?


                  Kommentar


                  • #10
                    Original geschrieben von happy_helmi
                    Jetzt muss ich mal wieder ganz blöd fragen...
                    wo wird mir dann die zeile übergeben bzw. wie kann ich die werde jetzt anzeigen lassen?
                    wo muss ich mein $suche2 = mysql_query($suche1); einfügen?
                    wie meinen?

                    $suche2 beinhaltet deinen resourceindex, wenn du an die suchergebnisse
                    willst, brauchst du:
                    mysql_num_rows() => habe ich überhaupt ein ergebnis
                    while + mysql_fetch_array() => um die ergebnisse in einer schleife anzuzeigen

                    oder wolltest du was anderes wissen?
                    Kissolino.com

                    Kommentar


                    • #11
                      Ja, genau, aber auf was greife ich denn mit dem mysql_fetch_array() zu?
                      vorher war das $suche2, aber das gibt es ja jetzt nicht mehr....

                      Kommentar


                      • #12
                        wenn du mit "$suche2 = mysql_query($suche1); " abfragst, benutzt du $suche2 auch weiter.

                        wie wärs mal mit einem blick ins manual?
                        http://de.php.net/manual/de/function...etch-array.php
                        Kissolino.com

                        Kommentar


                        • #13
                          Jetzt verstehe ich gar nichts mehr.
                          Ich habe doch gefragt, auf was ich mein $suche2 = mysql_query($suche1); beziehen soll, weil $suche1 ist nicht da.
                          Dann meintest Du, dass ich $suche2 = mysql_query($suche1); nicht benutze sondern while + ....
                          und jetzt soll ich es wieder auf $suche1 anwenden, das ich ja in dem Script von Dir nicht habe.....

                          Kommentar


                          • #14
                            Original geschrieben von happy_helmi
                            und jetzt soll ich es wieder auf $suche1 anwenden, das ich ja in dem Script von Dir nicht habe.....
                            ja und?

                            er hat in dem script am ende ja auch nur eine ausgabe per echo gemacht, um dir das prinzip naeher zu bringen.

                            von "so kind, hier ist deine fertige loesung, und den hintern wische ich dir nach dem kacken auch noch ab" war ja wohl auch keine rede - es hiess viel eher, zitat:
                            musst du nur noch auf deine bedürfnisse umsetzen.
                            also mach das - verstehe das prinzip von wurzels loesung, und passe diese so an, dass sie zu deinem script passt!
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              mein script sollte dir einen denkanstoss liefern, mehr nicht ... und dafür
                              geht es schon sehr weit.

                              so, jetzt schalten wir mal die/deine grauen zellen ein:

                              du weisst,
                              [ ] wie du ein select-statement definierst
                              [ ] wie du einschränkungen im select mit "and" oder "or" verbindest
                              [ ] was beim echo implode(" AND ",$ins); rauskommt
                              [ ] was der unterschied zwischen echo und einer variablen ist
                              [ ] wie man strings verkettet

                              ^^ zutreffendes bitte ankreuzen ... wenn du ein bischen mitdenkst, hast
                              du in einer minute $suche1 zusammen.
                              Kissolino.com

                              Kommentar

                              Lädt...
                              X