MarcMugg: Autosuggestion / Autocomplete MySQL

Hallo, ich brauche bitte mal einen Denkanstoß. Ich habe ein Autosuggestion / Autocomplete umgesetzt (PHP & MySQL). Die DB hat die Felder "Ort", "OT" und "Bundesland". Das funktioniert soweit auch alles wunderbar wenn ich nach einem Ort suche. Nun soll man die Datenbank aber auch nach Ortsteilen durchsuchen können. Als Beispiel nehme ich mal Rostock:

Gibt jemand in das Textfeld "rosto" ein bekommt er zur Auswahl "Rostock, Mecklenburg-Vorpommern" vorgegeben (Rostock steht als Ort in der DB).

Gibt jemand in das Textfeld "warnem" soll er zur Auswahl "Warnemünde, Mecklenburg-Vorpommern" vorgegeben bekommen (Warnemünde steht als OT in der DB und ist ein Ortsteil von Rostock).

Wie kann ich also den Ort und den OT "gleichwertig" ausgeben/abfragen?

Danke für Tipps Marc

  1. Tach!

    Wie kann ich also den Ort und den OT "gleichwertig" ausgeben/abfragen?

    Beide Bedingungen mit OR verknüpfen.

    dedlfix.

    1. Hallo, das ist schon klar.

      SELECT ort, ot, `bundesland` FROM `Tabelle` WHERE `ort` LIKE 'warnem%' || `ot` LIKE 'warnem%' ORDER BY ort
      
      echo $ausgabe->ort.', '.$ausgabe->bundesland;
      

      Vielleicht macht es das Problem deutlicher. Ich muss in der Abfrage ja bereits etwas wie folgendes einbauen:

      SELECT ort as var1, ot as var1, `bundesland` FROM `Tabelle` WHERE `ort` LIKE 'warnem%' || `ot` LIKE 'warnem%' ORDER BY var1
      
      echo $ausgabe->var1.', '.$ausgabe->bundesland;
      

      Das Beispiel funktioniert so natürlich nicht. Daher brauche ich ja Hilfe.

      1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

        SELECT ort, ot, `bundesland` FROM `Tabelle` WHERE `ort` LIKE 'warnem%' || `ot` LIKE 'warnem%' ORDER BY ort
        
        echo $ausgabe->ort.', '.$ausgabe->bundesland;
        

        Vielleicht macht es das Problem deutlicher. Ich muss in der Abfrage ja bereits etwas wie folgendes einbauen:

        SELECT ort as var1, ot as var1, `bundesland` FROM `Tabelle` WHERE `ort` LIKE 'warnem%' || `ot` LIKE 'warnem%' ORDER BY var1
        
        echo $ausgabe->var1.', '.$ausgabe->bundesland;
        

        Das Beispiel funktioniert so natürlich nicht. Daher brauche ich ja Hilfe.

        MySQL kennt ein if()

        Du kannst aber auch das Datenmodell ändern:

        • id ID des Datensatzes
        • class Ort, Ortsteil, Stadtteil
        • parent gehört zu Überordnung ID
        • name Name des Ortes, Ortsteiles o. ä.

        Dann wird die Abfrage plötzlich ganz einfach. Wenn Du nur vollwertige Städte sehen willst, setzt Du einfach class='Ort' und wenn es alle sein sollen, belibt die Spalte bei der Filterung unberücksichtigt.

        Spirituelle Grüße
        Euer Robert
        robert.r@online.de

        --
        Möge der wahre Forumsgeist ewig leben!
        1. Prima, genau so mache ich es!

        2. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

          Du kannst aber auch das Datenmodell ändern:

          • id ID des Datensatzes
          • class Ort, Ortsteil, Stadtteil
          • parent gehört zu Überordnung ID
          • name Name des Ortes, Ortsteiles o. ä.

          Wie muss ich das denn in diesem kramdown machen, dass meine Aufzählung eine tabulierte Aufzählung wird? Siehe Quelltext.

          Spirituelle Grüße
          Euer Robert
          robert.r@online.de

          --
          Möge der wahre Forumsgeist ewig leben!
          1. Hallo robertroth,

            Du kannst aber auch das Datenmodell ändern:

            • id ID des Datensatzes
            • class Ort, Ortsteil, Stadtteil
            • parent gehört zu Überordnung ID
            • name Name des Ortes, Ortsteiles o. ä.

            Wie muss ich das denn in diesem kramdown machen, dass meine Aufzählung eine tabulierte Aufzählung wird? Siehe Quelltext.

            Hör auf in Plaintext zu denken und fang an in HTML zu denken. Du verfasst hier kein Plaintext, sondern HTML. Das Konstrukt gibt es so nicht in HTML. Aber was es gibt ist eine dl:

            id
            ID des Datensatzes
            class
            Ort, Ortsteil, Stadtteil
            parent
            gehört zu Überordnung ID
            name
            Name des Ortes, Ortsteiles o. ä.

            LG,
            CK

            1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

              Hallo robertroth,

              Du kannst aber auch das Datenmodell ändern:

              id |ID des Datensatzes class |Ort, Ortsteil, Stadtteil parent |gehört zu Überordnung, ID name |Name des Ortes, Ortsteiles o. ä.

              Wie muss ich das denn in diesem kramdown machen, dass meine Aufzählung eine tabulierte Aufzählung wird? Siehe Quelltext.

              Hör auf in Plaintext zu denken und fang an in HTML zu denken. Du verfasst hier kein Plaintext, sondern HTML. Das Konstrukt gibt es so nicht in HTML. Aber was es gibt ist eine dl:

              id
              ID des Datensatzes
              class
              Ort, Ortsteil, Stadtteil
              parent
              gehört zu Überordnung ID
              name
              Name des Ortes, Ortsteiles o. ä.

              Gefällt mir nicht. :-O

              Dann lieber Tabelle...

              Spirituelle Grüße
              Euer Robert
              robert.r@online.de

              --
              Möge der wahre Forumsgeist ewig leben!
              1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

                Hör auf in Plaintext zu denken und fang an in HTML zu denken. Du verfasst hier kein Plaintext, sondern HTML. Das Konstrukt gibt es so nicht in HTML. Aber was es gibt ist eine dl:

                Vielleicht solltest Du ein drittes Forum eröffnen für die "KramDown-Fahrschule". Wer die Übungsaufgabe als erster richtig löst, bekommt 10 Extrapunkte, wer anschließend noch eine brauchbare Alternative liefert, bekommt 15 Extrapunkte und wer dann noch was sinnvolles zu sagen hat, bekommt 20 Goldpunkte :-P

                auf jeden Fall würde es trainieren. Schadet ja nix, eine zusätzliche Fremdsprache zu lernen.

                Spirituelle Grüße
                Euer Robert
                robert.r@online.de

                --
                Möge der wahre Forumsgeist ewig leben!
            2. Hallo Christian Kruse,

              Hör auf in Plaintext zu denken und fang an in HTML zu denken. Du verfasst hier kein Plaintext, sondern HTML. Das Konstrukt gibt es so nicht in HTML. Aber was es gibt ist eine dl:

              Was hältst du von

              .thread-message .posting-content dt { font-weight: bold; }
              

              Bis demnächst
              Matthias

              --
              Signaturen sind bloed (Steel) und Markdown ist mächtig.
              1. Hallo Matthias,

                Was hältst du von

                .thread-message .posting-content dt { font-weight: bold; }
                

                [x] Done

                LG,
                CK

                1. Hallo Christian Kruse,

                  Vielleicht sollte man darüber nachdenken, den Text "Dieses Forum nutzt Markdown zur Formatierung der Postings. Formatierungs-Hilfe" noch weiter in die Nähe des Antwortfeldes zu rücken. Etwa zwischen Button-Leiste und Textarea.

                  Bis demnächst
                  Matthias

                  --
                  Signaturen sind bloed (Steel) und Markdown ist mächtig.
          2. Hallo,

            Wie muss ich das denn in diesem kramdown machen, dass meine Aufzählung eine tabulierte Aufzählung wird?

            Kennst du das Wiki?

            Gruß
            Kalk

            1. Hallo Tabellenkalk,

              Kennst du das Wiki?

              Jetzt auch mit Berücksichtigung der Beschreibungslisten.

              Bis demnächst
              Matthias

              --
              Signaturen sind bloed (Steel) und Markdown ist mächtig.