Textsuche bei unterschiedlichen Eingaben

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

  • Textsuche bei unterschiedlichen Eingaben

    Hallo zusammen,

    habe folgendes Problem:
    das jetzt beschriebene Formular findest Du unter www.auto-mergen.de

    Ich habe in einem Suchformular ein Textfeld mit dem Namen "Modell", dass mit einer MySQL-Tabelle verbunden ist.

    Wenn ein Benutzer hier eine Modell eingibt z.B. "1,9 TDI" werden alle Modelle gefunden mit "1,9 TDI", aber nicht die in der Datenbank eingetragenen Modelle mit 1.9 TDI.

    Wie kann man erreichen, dass sowohl die Modelle mit "." und mit Komma gefunden werden.

    Die bisherige Abfrage auf dieses Feld war:
    $sql = "SELECT * FROM tblfz WHERE 1=1 ";
    if ($fh) // hersteller
    $sql .= " AND hersteller='$fh'";
    if ($fb) // baureihe
    $sql .= " AND baureihe='$fb'";
    if ($fm) // modell
    $sql .= " AND modell like '%$fm%'";

    Gruss Klaus66

  • #2
    indem du daraus 2 Suchbegriffe machst und die letzte Bedingung so verknüpft:
    ... AND (modell like '%$fm_punkt%' OR modell like '%$fm_komma%')

    Kommentar


    • #3
      Hallo,

      vielen Dank für die schnelle Antwort.

      Ich verstehe den Ansatz nicht ganz.

      Die Variable $fm wird mir von dem Formularfeld Modell übergeben, in dem der Benutzer seine Eingabe vorgenommen hat.

      Ich weiss jetzt nicht wie ich diese Eingabe in 2 verschiedene Variablen aufteilen kann bzw. wie nach einem Punkt oder Komma gesucht werden kann.

      Könntest Du mir das etwas genauer erklären

      Gruss

      klaus66

      Kommentar


      • #4
        seufz... wenn der User 1.9 eingibt, wer hindert dich denn daran, die Eingabe zuerst in:
        PHP-Code:
        $fm_punkt $_POST['fm'];
        if (
        strpos($fm_punkt,'.')===false// kein Punkt enthalten
           
        $fm_komma str_replace(...); // na was wohl
        else
           
        $fm_komma str_replace(...); // und was dann hier? 
        ... dann in die Abfrage einbauen.

        Kommentar


        • #5
          Hallo,

          vielen Dank dür deine Antwort.

          Jetzt hab ich verstanden, wie's geht.

          Ich muss dazu sagen, dass ich ein Anfänger in Sachen php bin, was du sicher schon bemerkt hast.

          Jetzt habe ich noch etwas zu diesem Problem.

          Es gibt verschiedene Modelle die nicht nur den Punkt in der Motorangabe haben wie z.B "1.9 TDI T.Spark". Wäre es auch möglich nur den Punkt in der Motorbezeichnung umzuwandeln, indem man ein Muster für diese Motorbezeichnung angibt wie z.B [1-5].[0-9].

          Und wäre es auch möglich wenn der Benutzer im Formular die Baureihe eingibt und diese dann nochmal unter Modell eingibt, das diese Fahrzeuge dann trotzdem gefunden werden.

          Beispiel:

          Baureihe: Sharan
          Modell: Sharan 1.9 TDI


          Gruss Klaus

          Kommentar


          • #6
            ja, es ist möglich, schau dir dazu RegEx an, insbesondere preg_match. Es gibt Tutorials hier: http://www.php-resource.de/tutorials/read/10/1/ und von derHund: http://pcre.nophia.de/intro/index.php

            Kommentar


            • #7
              Hallo,

              vielen Dank für Deine Link-Vorschläge. Habe da jetzt mal nach gesehen und mir einen reg. Ausdruck für die Motorbezeichnung erstellt. "(.([1-5]\.|,[0-9]).)"

              Wie bekomme ich diesen denn jetzt in die vorher beschriebene Suchabfrage mit $fm_punkt und $fm_komma

              Kannst du mir da nochmal weiterhelfen.

              Gruss Klaus66

              Kommentar


              • #8
                Original geschrieben von asp2php
                ...insbesondere preg_match.
                die Beispiele genau durchlesen, dann weißt du wie

                Kommentar


                • #9
                  Hallo,

                  werde mir die Sache jetzt mal genau anschauen.

                  Vielen Dank nochmal

                  Gruss Klaus66

                  Kommentar

                  Lädt...
                  X