Beispiel für eine Suchfunktion

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

  • Beispiel für eine Suchfunktion

    Hat mal jemand ein Beispiel für eine Suchfunktion. Und zwar habe ich eine Datenbank mit News. Ich möchte news_titel durchsuchen und somit alle Einträge ausgeben, die eben zu den Suchbegriffen passten. Mit LIKE und REGEXP habe ich in MySQL schon die passenden Funktionen gefunden. Allerdings macht mir der "PHP-Teil" etwas Schwierigkeiten.
    Wie zerlege ich am besten den String (der die Suchbegriffe enthält) ? Wenn jemand nur ein Suchbegriff eingibt ist es ja nicht schwer. Aber wie mache ich das bei mehreren Suchbegriffen ?

  • #2
    Nimm der einfachheit halber nur und

    trim, implode, explode sind die Funktionen die du dir anschauen solltest


    An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

    Kommentar


    • #3
      Also am besten den String per Explode in ein Array packen und dann per trim die überflüssigen Leerzeichen entfernen. Und das ganze dann in den MySQL Query mit einbinden. Am besten ich probiere es mal.

      Gleich noch ne Frage nebenbei. Gibt es eine Funktion, die mir zurückgibt, wieviel strings ein Array enthält ?

      Kommentar


      • #4
        Gibt es eine Funktion, die mir zurückgibt, wieviel strings ein Array enthält ?
        PHP-Code:
        sizeof ($array
        falls du die anzahl der einträge meinst

        gruss
        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Danke für die Hilfe. Ich habe es jetzt so gelößt:
          Der Suchbegriff wird mittels str_replace von Leerzeichen befreit bzw. diese werden durch den Platzhalter % ersetzt. Zudem ist das % erste und letzte Zeichen des Strings. Das ganze wird dann direkt im SQL-Query benutzt (... LIKE '%beispiel%suchgebriff%').

          So klappt es ganz gut. Verbesserungsvorschläge sind natürlich willkommen Zudem hab ich gleich noch eine Frage.

          Wie teile ich das Suchergebnis am besten auf ? Angenommen es werden 100 Datensätze gefunden, ich möchte pro Seite aber nur 50 ausgeben.

          Kommentar


          • #6
            Wie teile ich das Suchergebnis am besten auf ? Angenommen es werden 100 Datensätze gefunden, ich möchte pro Seite aber nur 50 ausgeben.
            PHP-Code:
            SELECT bla bla LIMIT bla bla 
            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              An Limit hab ich auch schon gedacht, nur hab ich da ein kleines Verständnisproblem. Ich führe das Query mit der Suchanfrage aus (... LIKE ... LIMIT ...) und lasse es auf 50 Datensätze begrenzen. Wie zeige ich dann die restlichen Datensätze an, wenn es z.B. mehr als 100 sind ? Ich muss ja sicherlich einen Index ausgeben (Seite 1 - 2 - 3 - 4). Nur weiter weiß ich leider nicht

              Kommentar


              • #8
                du weiss, dass limit 2 Parameter hat, die den Anfang und Ende des
                auszugebenden Bereich angibt? Um mit limit korekt zu "blättern" muss du
                das Ergebnis sortieren und zwar bei jedem Request immer mit dem
                gleichen Sortierkriterium. Dann brauchst du in deiner Form nur noch die Info
                über aktuelle Bereichbegrenzung und Zielinfo mitzugeben.

                EDIT:

                Eigentlich reich Zielinfo auch schon, z.B.
                Anzahl der anzuzeigende DS = 50 = Bereichweite
                => 1. Seite: 0-49 = 0*50 bis 1*50-1
                => 2. Seite: 50-99 = 1*50 bis 2*50-1
                => Bereichanfang = (Zielinfo-1)*Bereichweite
                => Bereichende = Zielinfo*Bereichweite-1

                Zuletzt geändert von asp2php; 30.03.2004, 09:32.

                Kommentar


                • #9
                  Danke schön. So langsam scheine ich es zu verstehen. Vielen Dank schonmal an alle für die Hilfe.

                  Kommentar

                  Lädt...
                  X