Nabend,
ich möchte eine kleine, feine Musikerdatenbank anlegen.
-verschiedene Musiker (Tabelle Musiker)
-verschiedenen Instrumente (Tabelle Instrumente)
Ich möchte, daß jeder Musiker so viele Instrumente auswählen kann wie er spielt. Dazu soll der Musiker auch noch seine Fahigkeitsstufe angeben (1-10)
Rein thoretisch würde ich diese wieder in einer extra Tabelle abspeichern (Tabelle instrumentSkill)
zB.:
MusikerID = 10
InstrumentID = 4
SkillID(Fähigkeitsstufe) = 7
So könnte ein Musiker verschiedene Instrumente mit unterschiedlichen Fähigkeitsstufen eintragen.
Frage ist nur, wie sucht man später danach?
In der entsprechenden Tabelle stehen ja nur Ziffern. Wenn also nun jemand einen Gitarristen sucht, wie mach ich das dann?
Beste grüße
derDenis
Grüße vom Griechen,
Cybergreek!
everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht
Hi Cybergreek,
das hilft mir irgendwie nicht. Ich haben so ein klassisches Suchfeld, dort sucht jemand nach Gitarrist. In der Tabelle instrumentSkill sind ja nur die fremdschlüssel gespeichert und nicht das Wort "Gitarre".
Oder muß ich erst abfragen, welchen Fremdschlüssel die Gitarre hat und DANN in der Tabelle instrumentSkill suchen?
Grüße
derDenis
Hallo Denis,
ich denke mal, Du hast ein Formular mit einer Auswahlliste für die Mehrfachauswahl. Diese wird wird aus der Tabelle Instrumente gefüllt. Bei Option gibst Du den Instrumentennamen und bei Value die InstumentID an, denn nur die interessiert Dich für die Datenbanksuche.
Genau das möchte ich vermeiden. Ich möchte kein Auswahlfeld erstellen, das ist bei 20 und mehr Instrumenten sehr nervig.
Geht das nicht irgendwie mit einer Freitextsuche?
Ja, das geht. Die Frage ist, was Du für Vorkenntnisse hast?
Was würdest Du für ein Select erstellen, wenn die Namen in einer Tabelle wären?
Weißt Du wieder mehrere Tabellen in einem Select miteinander verbinden kannst?
Willst es so machen, dass Du was dazu lernst? (=> Join)
Grüße vom Griechen,
Cybergreek!
everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht
Sicher geht es auch mit einer Freitextsuche, aber der Suchende weiß ja nicht, welche Instrument angeboten werden und kann dann auch immer nur nach einem Instrument suchen. Ist umständlich und führt häufig zur antwort: nichts gefunden.
Die Auswahlliste wird doch in einer Schleife gefüllt, dass sind nicht mehr als vielleicht 10 bis 15 PHP-Programmzeilen, egal ob 20 oder 100 Instrumente.
Wir kennen Deine Vorkenntnisse nicht, vielleicht helfen Dir die Workshops http://www.traum-projekt.com/coding/php_apache/ "Newsysteme mit PHP und MySQL" oder die Workshoptutorials unter http://www.traum-projekt.com/forum/7...und-tutorials/ um, dort gibt es eine ganze Serie zur Formularverarbeitung.
Oder: http://de.wikibooks.org/wiki/Einf%C3...ltsverzeichnis besonders unter Grundlagen DML 1und Fortgeschrittene: Mehrere Tabellen.
hmmm,
also eine suche könnte ggf. so aussehen...
"Gitarrist in Köln gesucht" dh. ich suche im Musikerprofil nach der Stadt und dem Instrument. Bei der Freitextsuche müßte ich halt immer das komplette Profil durchsuchen.
Was mich an dem Auswahlfeld ärgert, ist, daß es so groß wird, bei vielen Instrumenten.
Der Denis
Ich
Wenn Du so viele Instrumente erwartest, dann teile diese doch weiter auf .. Schlag- / Saiten- / Blasinstrumente, etc.
.. und mich als Nutzer stört ein langes Auswahlfeld übrigens nicht. Ich mein, wie oft scrollen ich mich in Shops durch180 Länder, um "Germany" zu finden.. ich finds immer noch angenehmer, als selbst tippen zu müssen ..
Wildmiezes Vorschlag ist durchaus eine Überlegung wert, würde aber eine zusätzliche Spalte in der Instrumententabelle und normalerweise eine zusätzliche Tabelle für die Instrumentenart bedeuten. Die Unterlisten im Formular könnten dann mit Ajax gefüllt werden.
Im Auswahlfeld für die Instrumente sollten auch nicht alle existierenden Instrumente (aus der Intrumententabelle) stehen, sondern nur die, die auch von den erfassten Musikern (Verknüpfung aus Musikertabelle und Instrumententabelle) gespielt werden. Sonst bekommt man sehr oft die Meldung "Nichts gefunden" und besucht Deine Seite nie wieder.
Die Länge der Liste ist meist zweitrangig, da man bei Eingabe des ersten Buschstaben ja schon gelenkt wird.
Besonders am Anfang, wenn die DB noch nicht richtig gefüllt ist, sieht man mit so einer Liste schnell, was man an Ergebnissen erwarten kann. Und wenn exotische Instrumente erfasst sind, kennt auch nicht jeder die richtige Schreibweise, bei einer Liste ist das einfacher als bei der Freitextsuche.
Den "Gitarrist in Köln" findest Du so natürlich nicht, denn in der Instrumentendatei steht "Gitarre". Im Profiltext steht es ungenormt: mal steht da "er spielt Gitarre", mal "er ist Gitarrist", mal "er spielt unterschiedliche Zupfinstrumente".
Hallo zusammen,
ich werde es mit der Auswahlliste machen. Ich lasse diese übliche Suche, wie sie auf fast allen Seiten zu finden ist gleich weg. Ich erstelle lieber eine ausführliche Suche. Ort/Plz, Instrument, ggf. Alter, Mobilität etc.
Danke für eure Überzeugungsarbeit mit den Auswahlfeldern :-)
Danke
derDenis
Nabend,
ich stoße irgendwie an meine Grenzen. Ich habe nun 3 Tabellen erstellt:
profile (Informationen zum Musiker wie, PLZ, Ort, Alter, PKW etc.)
portfolio (id, instrumentID, profileID, skill)
instrument (instrumentID, instrument)
mit
habe ich alle von Musikern genutzen Instrumente gefiltert. Damit erstelle ich die Auswahlbox der Instrumente.Code:SELECT DISTINCT instrument.instrument, instrument.instrumentid FROM portfolio LEFT JOIN instrument ON instrument.instrumentid = portfolio.instrumentid ORDER BY instrument.instrument
Mein Formular enthält nun die Auswahlbox der vorhandenen Instrumente und je ein Feld für PLZ und ORT.
Jetzt brauche ich ja eine Afrage, die alles miteinander verbindet :-(
Nur wie...
Kann mir da jemand auf die Sprünge helfen?
Grüße
derDenis
Einfach mit einem weiteren JOIN auf die "profile"-Tabelle über portfolio.profileID. Du musst ggf deine Query von oben etwas umstrukturieren. Überlege einfach mal, was du an Informationen hast und welche die haben möchtest. Das hilft.
...zur Zeit außer Betrieb...
Ich verstehe das nicht mit dem JOIN. Habe ja vorher alles mit WHERE gemacht.
Außerdem habe ich meine tabellen umstrukturiert.
Es gibt nun eine Artist Tabelle, eine Instruments Tabelle und eine ArtistInstruments Tabelle. Die letztere verbindet also beide Tabellen.
Ich möchte nun alle Instrumente den Artists anzeigen.
SELECT Instruments.instrument, ArtistInstruments.instrumentid, ArtistInstruments.artistid
FROM Instruments, ArtistInstruments
WHERE Instruments.instrumentid = ArtistInstruments.instrumentid AND ArtistInstruments.artistid = ID
wie geht das denn mit JOIN ?
Grüße vom Griechen,
Cybergreek!
everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)