Mysql ausgabe anhand einer ID aus anderem Tabel


#1
Guten Abend,
ich sag gleich vorweg das ich nicht wirklich bewandert bin was php,mysql und co angeht.
Dennoch versuche ich mich gerade an einem kleinen Projekt.

Nach vielen schwierigkeiten bin ich nun schon ein ganzes Stück weiter gekommen.
Jetzt scheitert es allerdings wieder an Fachbegriffen und know-How.
Undzwar habe ich eine DB in der mehrere Tabellen vorhanden sind und einzelne Daten via Constraint miteinander verbunden.
Nun habe ich mir ein Formular gebastelt um schnell werte in die Mittelsmann Tabelle einzufügen. Das hab ich mit google noch zusammen bekommen.
Jetzt ist es allerdings so das er mir in der Tabelle unten die KartenID anzeigt (diese brauche ich ja zum hinzufügen bzw zuweisen der werte),
nun frage ich mich aber ob es eine möglichkeit gibt ohne groß Fachkentnisse zu haben eben quasi den Name von der dazu passenden Karte anzuzeigen.
Karten Level Hinzufügen hier mal das bisherige Ergebniss. Und dort hätte ich eben gerne bei Karte und bei Kiste anstatt der ID den Namen der dazu passenden gegenseite

Aktuelles Echo aus der Tabelle card_chest_level_m2m:
<td><?php echo $row["KaID"]; ?></td>
<td><?php echo $row["KiID"]; ?></td>


Und ich bräuchte quasi anhand der KaID die ausgabe des Names von der Tabelle Card dort ist die Karte mit der selben ID unter KartenIDs zu finden und der Name unter Card_Name.
Bei der KiID quasi das selbe nur aus der Tabelle Chest - ChestIDs, Chest_Name.

Für mich ist das schwierige daran, die Karten werden dort aufgelistet sobald Werte in der Mittelsmann Tabelle card_chest_level_m2m sind.
Diese werden ausgegeben über die m2mID. Wenn ich da jetzt den Wert einfach auf z.B. KaID ändere, dann zeigt der mir natürlich alle Karten an, aber eben aus dem Card Tabel und nicht nach den Einträgen im MM Table.

Vielleicht kann mir ja jemand sagen ob das so ohne großen Beinbruch für einen Anfänger umsetzbar wäre.
Danke und einen schönen Abend.

Achso falls noch mehr Code benötigt wird reiche ich den gerne nach, weiß allerdings nicht was bzw. wieviel dafür relevant ist und ich möchte ja die Seite hier nicht Sprengen
 

basti1012

Erfahrenes Mitglied
#2
Mal kucken ob ich das richtig verstehe
Wenn man da jetzt Level hinzufügen klickt kommen ja die Auswahl-Listen.
Bei Level stehen ja die Zahlen und da willst du die Namen stehen haben?
 
#3
Servus, ja genau im Dropdown beim Hinzufügen stehen die Namen, gespeichert wird die ID davon, allerdings sobald ich auf der übersichts tabelle von der ID auf den Namen wechsel spuckt er mir halt xxxx Einträge aus anhand der Karten anzahl und nicht anhand der vorhandenen einträge in der Mittelsmann tabelle. Hab halt wie gesagt keine große erfahrung mit dem ganzen und hab das jetzt auch nur anhand von einem Tutorial abändern könne. War vorher nur 3x eingabe feld. Das mysql dropdown hat schon googlen gekostet wie schon lang nicht mehr, aber für den ich sag mal switch von der id auf name hängts irgendwie. Nehme an es liegt einfach an den beschreibungen/fachbegriffen die mir fehlen. Vieles finde ich nur übers Englische was die Begriffe noch mal einschränkt für mich. So ein kleiner Denkanstoß könnte mir ja schon was bringen ;)
 

basti1012

Erfahrenes Mitglied
#4
So jetzt schecke ich es. wenn ich im Formular Pfundskatze , Holzkiste und level 244 eingebe , dann soll in der Tabelle nicht
3 | 1 | 244 stehen sondern
Pfundskatze | Holzkiste | 244 stehen ??

Wenn ich die Daten eingegeben habe wird das ja alles an der Datenbank gesendet richtig ? Stehen da die Namen auch drinne oder nur die id's ?
 
#5
Ja genau so soll es sein. Sorry bisschen schwer noch so ohne übung das klar rüber zu bringen. Hätte aber auch mal früher auf die Beispiele kommen können. Im Formular werden die Namen zwar angezeigt aber nur die IDs gespeichert. Die Namen liegen in einer anderen Tabelle, werden per JOIN hinzugefügt an der passenden stelle vom dropdown. Die Daten werden in der Tabelle card_chest_level_m2m rein als zahlen gespeichert. Die Tabelle ist jeweils aber verbunden mit den passenden IDs im Tabel Card und Chest dort sind dann auch die Namen zu finden. Ums mal möglichst kurz zu fassen, mir fehlt der ansatz wie ich in

<td><?php echo $row["KaID"]; ?></td>
<td><?php echo $row["KiID"]; ?></td>


am besten ne Query/switch verbasteln könnte um halt eben die Namen passend zur ID parat zu haben. Aber der einfache weg scheint es ja nicht zu sein, da wie gesagt die Tabelle komplett verwurschtelt wenn ich einfach von KaID und KiID auf Card_Name und Chest_Name switche.
 

basti1012

Erfahrenes Mitglied
#6
Hier gibt es ein der sich damit super auskennt. Habe zwar auch schon viel mit Datenbanken gemacht , aber das mit den verbundene nicht so oft.

Wenn unser Profi hier online kommt oder auch wer anders müßte dein Code sehen der die Daten aus der Datenbank holt und in der Tabelle schreibt. Sind die Namen in der gleichen Tabelle wie die Id's ? oder in 2 verschiedene ?

Wäre es in einer dann würdest du wohl nicht Fragen:rolleyes: , Ich doof .
 
#7
Du nix doof. Ist spät :p Ich danke dir so oder so jedenfalls.
Ich füg hier einfach mal die 3 php datein als pastebin an, falls da jemand mehr einblick braucht.
Und ja der code sieht bestimmt grässlich aus nach meinen Anpassungen, war einfach nur froh schon soweit zu kommen :D wenns läuft soll das ganze dann in Wordpress eingepflegt werden, was die sicherheit hoffentlich etwas erhöht.

index.php
insert.php
select.php

und Datenbank aufbau falls nötig

PS: falls sich jemand wundert warum in der index.php mitten in der Datei die 2 querys kommen für die Dropdown Namens ausgabe. Wenn ich die 2 Tabellen (Card/Chest) zu beginn mit eingefügt habe via JOIN, hab ich komischweise in den Dropdowns jeden Karten/Kisten eintrag multipliziert gehabt mit der anzahl an Datensätzen die im card_chest_level_m2m table gespeichert sind.
 

basti1012

Erfahrenes Mitglied
#8
Nagt.
Mein Weg den ich jetzt nehmen würde ist wohl nicht verkehrt , aber wahrscheinlich unnötig weil es bestimmt einfacher und kürzer geht.
Das ist das Thema mit den verbundenen Tabellen , wo meine erfahrung im Keller liegt.

Ich weiß von ein der das aufjedenfall kann und den rufe ich mal einfach @Yaslaw damit du es gleich richtig machen kannst.
Aber es gibt auch noch andere die das können, aber wie ich es mitbekomme ist er in den Thema einer der besten. ( Schleim , hehe ):)

Dafür das du in den Bereich Afänger bist und so hast du es ja schon weit geschafft.
 
#9
Vielen dank :) ja ich komme irgendwie durch Tutorials eher an das Thema ran als über reines Command lesen. Weiß auch nicht warum, aber die birne da oben macht eh was sie will... hab halt das ganze vorher einfach über Excel gemacht und dann über Datatables suchbar gemacht. Die unschöne suche hat mir aber nicht gefallen. Also z.B. nach 5 gesucht und es kam auch 15,25 usw raus.

Deshalb jetzt der umschwung auf die Datenbank und für jedes Level, jede Karte und jede Kiste einen extra eintrag. Ist zwar mehr aufwand aber am ende dann doch besser. Hab mich jetzt erstmal dem Hinzufüg Script gewidmet bevor ich an der suche unnötig Zeit verschwende wenn die DB noch nicht steht wie sie sollte. Schlag mich da jetzt schon 2 Wochen mit rum, aber gut ding will weile haben sagt man ja so schön. Das ganze ist halt für ein kleines Community Projekt um anderen Spielern zu helfen, ich lern noch etwas dabei also win win.

Werde definitiv weiter suchen/basteln, vielleicht komm ich ja selbst schon auf den richtigen weg über X google weiterleitungen und co. Falls ich weiter komme melde ich mich hier natürlich, muss sich ja dann niemand unnötig mühe machen wenns erledigt ist.

Das die Erfahrung da im Keller liegt ist ja nicht wild, wenn man den Bereich nicht braucht. Klar je mehr je besser, aber alles kann man am Ende ja auch nicht. Und wenn ich für das bisschen schon Wochen verbrauche will ich garnicht wissen wie das in der Tiefe aussieht
 
#10
Guten Abend. Ich kann endlich verkünden das ich die Lösung gefunden habe. Eigentlich relativ simple ohne viele Zeilen, sofern man drauf kommt... :)
SELECT * FROM Card JOIN card_chest_level_m2m ON KartenIDs=card_chest_level_m2m.KaID JOIN Chest ON card_chest_level_m2m.KiID=Chest.ChestIDs ORDER BY m2mID war es in meinem Fall.
Dann halt einfach an entsprechenden stellen nicht die ID sondern den Namen im echo ausgeben.
 
Zuletzt bearbeitet: