Webapp MySQL adatbázissal? Hogy a legegyszerűbb ezt megoldani?
Adatbázis MySQL-ben személyekről. Egy személy kapcsolható 1 vagy több iskolához. Ahova jár(t).
Viszont ha egy személy több iskolába is járhat/járhatott, akkor egy adott iskolának lehet több diákja is.
Tehát akkor ez egy many to many kapcsolat igaz? Vagy nagyon túlgondolom?
Ugye mivel many to many nem lehet a kapcsolat, van egy link table ami tartalmazza a másik kettő (személyek, iskolák) ID-jait, és így össze tudom kapcsolni a személyt a sulikkal.
Ez így eddig oké is, SQL-ben is le tudom hívni, hogy adott suliba kik jártak, a 2 táblázat segítségével.
Viszont ha van egy egyszerű form-om amit html/css-el dobok össze, hogy írom be, hogy ki melyik suliba járt?
A személyek táblázatba oké, az megvan. De a link table-be hogyan kötöm össze a személyt 1 vagy több sulival?
Hisz nem elég kiválasztani a sulit a drop down list-ből, mert be kell írni, hogy melyik id-t melyikkel kötöm össze a harmadik táblázatban, de ezt a front end-nél nem látja a user, hogy milyen ID-t kap elmentés után vajon az elmentett személy, hogy aztán azt kösse össze egy másik formban a sulival..
Ötletek?
Kb:
SELECT * FROM schools_students
JOIN students ON schools_students.student_id=students.id
JOIN schools ON schools_students.school_id=schools.id
#1-es vagyok, de valószínű nem teljesen értettem a kérdést, amit írtam az arra jó, hogy lekérdezze az összes személyt és iskolát, de persze, ha eleve megvan a személy, akkor igazából az id alapján nem kell a tanuló rész, csak a link és a suli tábla.
Kiírni meg vagy két listát csinálsz, az egyikbe berakod, hogy hova jár, a másikba meg a többit és akkor a kettő közötti átpakolásra csinálsz gombokat.
Nos igen, lerövidítve annyit szeretnék, hogy a felhasználó lát egy formot, ott beírja a diák nevét, meg kiválaszt a drop down-ból egy iskolát és beküldi az adatbázisba.
Ami egyszerű lenne, csak ugye az számomra megbonyolítja a helyzetet, hogy many to many a kapcsolat ezért van egy harmadik táblázatom a másik két táblázat primary kulcsaival.
Csak ott akadtam meg, hogy backend-be hogy csinálom azt, hogy veszi az épp hozzáadott új felhasználó id-jét meg a kiválasztott iskola nevét (amit aztán id-ként felismerve kezel), és ezeket az adatokat jó helyre beteszi a harmadik táblázatba ami összeköti ezt a kettőt, amint megnyomja a felhasználó a mentés gombot frontend-en.
Hát a kapcsolati táblád az id, shcool_id, student_id
id increment primary key
A másik kettő meg unique így az sql dob egy hibát, ha már 1x szereplet volna biztos ami biztos.
DE a formon meg eleve olyan sulikat kell listázni, amibe nincs benne az student,csak ugye ezt addig nem tudod listázni, amíg nincs meg az id_je.
Ezt pedig leginkább ajaxal tudnád megcsinálni egy formon belül, de ez természetéből adódóan szerver oldali is.
Jól értem, hogy az a gondod, hogy egy épp frissen hozzáadott user ID-je kellene? Erre több megoldás is létezik.
1. Használhatod a beépített függvényt az insert után:
SELECT LAST_INSERT_ID();
2. Használhatsz UUID azonosítókat az auto increment helyett és a backenden insert előtt generálod az UUID-t, amit utána már be tudsz szúrni a kapcsolótáblába
3. Használhatsz ORM rendszert, ami az egészet elintézi neked
#7 Óh, így már picit érthetőbb a helyzet, most ötletet adtál. Ezt ki fogom próbálni mindenképp.
Tehát tulajdonképpen annyi a történet, hogy a send gomb nyomására minden amit beírtunk a form-ba, azt beküldi az adatbázisba, de egyúttal meg a legutóbb hozzáadott ID-t meg a kapcsoló táblába küldöm be, azzal az ID-vel amelyik sulinak az ID-jét szintén kiválasztotta a felhasználó a diák adatokkal együtt.
Remélem működni fog, vagy legalábbis nekem sikerül megoldani.
Arra miképp keressek rá a neten, hogy ha azt szeretném hogy a felhasználó az iskola nevét lássa a drop down list-ből, de ez ID formájában kerüljön be az összekapcsoló táblázatba?
Gondolom nem insert where lesz az?
#9 Igazából már minden megvan, az adatbázis és a frontend is javarészt, egyedül csak ez a rész volt vissza, ez az Insert rész.
Egyébként PHP.
További kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!