Ankündigung

Einklappen
Keine Ankündigung bisher.

Abfrage einer Datenbank für eine Vorschlagsliste

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

  • Abfrage einer Datenbank für eine Vorschlagsliste

    Hallo,

    ich bastele gerade an einer Musik-Datenbank und hänge nun etwas an der Eingabemaske für neue Alben. Ich habe mir dabei überlegt für den Künstler nur ein Textfeld zur Verfügung zu stellen und die Tabelle zu durchsuchen ob einen Künstler gibt der zu diesem Suchmuster passt und diesen dann wie bei google in einer Vorschlagsliste dem Benutzer als Auswahl vorzuschlagen.
    Falls der Benutzer keine Auswahl trifft, wird ein neuer Datensatz mit dem neuen Künstler angelegt. Nun liegen die Felder in der Datenbanktabelle gemäß der 1. Normalform in 2 Felder (für Vor- und Nachname) vor. Damit ergibt sich allerdings ein kleines Problem wie Frage ich jetzt am besten die Daten ab? Ich habe mir bis jetzt 3 Möglichkeiten überlegt

    1. Option
    Ich lege einen Index über die Felder Vor- und Nachname und lass die MySQL eigene Volltextsuche darauf los

    2. Option
    Ich baue eine Abfrage die jede Eingabe (separiert durch ein leerzeichen) auf jedes Feld loslasse. Also so etwas wie
    SELECT * FROM Artist WHERE Vorname=Mark OR Nachname=Mark OR Vorname=Knopfler OR Nachname=Knopfler

    3. Option
    Ich baue eine View die Vor und Nachnamen zusammenklebt und ich frage dann direkt mit dem Eingabestring ab ob es dazu was passendes gibt.

    Nun bin ich allerdings etwas unsicher welche Option davon am besten für mein Problem geeignet ist. Ich persönlich tendiere im moment zur dritten Option, allerdings würde ich dazu gerne noch die eine oder andere Meinung hier im Forum hören.
    Ich hoffe nun einfach mal das ich mit der Frage im richtigen Unterforum gelandet bin und würde mich über die eine oder andere Antwort sehr freuen.
    Viele Grüße
    Dan


    PS
    Falls ich hier falsch bin, hoffe ich einfach mal das ich nicht zuviele Umstände gemacht habe und einer der Moderatoren meinen Beitrag entsprechend verschiebt.


    PPS
    Eine vierte Alternative wäre noch das Suchfeld über Bord zu werfen und eine Dropdownliste zu bauen . Allerdings stellt sich dann die Frage wie erfasse ich neue Künstler ohne die Eingabemaske zu verlassen?


  • #2
    Die technisch einfachste Lösung ist ein Drop-Down mit einem Add-Button daneben, in dem der Benutzer in einem Layer einen neuen Künstler eingeben kann. Ansprechender ist sicher die textuelle Eingabe mit Suggestion-Feature. Hierzu kannst du dir neben dem Vor- und Nachnamen in deiner Tabelle auch einen Anzeige-Namen (Vor- und Nachname zusammen) als Suchindex aufbauen. Nachteil hierbei ist natürlich die parallele Pflege. Diese könntest du jedoch durch einen ON UPDATE-Trigger für den Entwickler transparent erledigen.
    Viele Grüße,
    Dr.E.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    1. Think about software design before you start to write code!
    2. Discuss and review it together with experts!
    3. Choose good tools (-> Adventure PHP Framework (APF))!
    4. Write clean and reusable software only!
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Kommentar


    • #3
      Stimmt so ein Switch wo man dann von Dropdownliste in ein Eingabefeld umschaltet wäre auch noch eine Idee. Ich sehe bei der von mir angedachten Lösung im moment auch das Problem das ich dann eine Logik brauche wo der Nachname anfängt und der Vorname aufhört. Alternative wurde mir gerade von einem guten Bekannten noch diese Library[1] (oder wie man das bezeichnen mag) zugetragen.
      Mit anderen Worten alternativen wie man das umsetzt scheint es genug zu geben, die frage ist jetzt bloß welche nimmt man?

      Kommentar


      • #4
        Zitat von hawkeye78 Beitrag anzeigen
        Nun liegen die Felder in der Datenbanktabelle gemäß der 1. Normalform in 2 Felder (für Vor- und Nachname) vor.
        Ähm, what for? Willst Du da

        P | Diddy | …

        eintragen oder wie? Und ist Nena jetzt der Vor- oder Nachname? Falco? Was zur Hölle ist ein Xzibit?
        --

        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar


        • #5
          Nein ich benutze das Feld für den Nachnamen auch gleich als Gruppenname und das Feld für den Vornamen als Feld für den Artikel... solche Kandidaten wie xzbit, Nena und P. Diddy würden bei mir alle uter Nachnamen stehen vor allem weil es für mich so auch später einfacher möglich ist anhand des Anfangs buchstaben die Alben aufzulisten. Was zugegebener maßen zu der Frage führen kann ob man nun Elton John unter E oder oder unter J wiederfinden möchte....

          Kommentar


          • #6
            Es macht schlichtweg keinen Sinn.

            Al Bano und Romina Power,
            The The,
            Marilyn Manson,
            Nicole, Robyn, Madonna…
            Phillip Boa / Phillip Boa & The Voodooclub

            das kriegst Du doch alles nicht sinnvoll eingeordnet.
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar


            • #7
              Zitat von hawkeye78 Beitrag anzeigen
              Nein ich benutze das Feld für den Nachnamen auch gleich als Gruppenname und das Feld für den Vornamen als Feld für den Artikel... solche Kandidaten wie xzbit, Nena und P. Diddy würden bei mir alle uter Nachnamen stehen vor allem weil es für mich so auch später einfacher möglich ist anhand des Anfangs buchstaben die Alben aufzulisten. Was zugegebener maßen zu der Frage führen kann ob man nun Elton John unter E oder oder unter J wiederfinden möchte....
              Schau dir mal an, wie das MP3 Tagger handhaben. Beispiel:
              Code:
              albumartist     : Elton John
              composer        : Elton John
              albumartistsort : John, Elton
              albumartistsort ist dann auch für Varianten wie "Doors, The" zuständig. Wenn du unbedingt eine Personen-Datenbank anschließen willst, dann macht die nur bei Feldern wie "composer" und "producer" Sinn.
              @fschmengler - @fschmengler - @schmengler
              PHP Blog - Magento Entwicklung - CSS Ribbon Generator

              Kommentar

              Lädt...
              X