tömb rendezése saját sorrend szerint
Sziasztok!
MySQL-ből szedek ki adatokat egy tömbbe (szerzok), aminek minden tagja tömb (egy_szerzo). Az egy_szerzo-k szerzok tömben elfoglalt sorrendjét szeretném megváltoztatni, két értékük alapján.
egyszerűbb ha megmutatom:
Az a lényeg, hogy a szerzok-ben elméletileg akármennyi szerzo lehet
Azt szeretném elérni, hogy a szerz. tualjdonságú szerzők előre kerüljenek, utánnuk jöjjenek a szerk., ford., illusztr.
Az egyes funkciókat betöltő személyek viszont a nevük szerint abc sorrendben.
Végig futottam a manual példáin, de ha jól láttam, akkor csak 1 szempont szerint rendeznek. Szóljatok ha tévednék.
Ha valakinek van egy elegáns megoldása szivesen venném a segtséget.
TikuVoltam
■ MySQL-ből szedek ki adatokat egy tömbbe (szerzok), aminek minden tagja tömb (egy_szerzo). Az egy_szerzo-k szerzok tömben elfoglalt sorrendjét szeretném megváltoztatni, két értékük alapján.
egyszerűbb ha megmutatom:
Array (
[0] => Array (
[szerzo_azon] => 32
[nev] => Magyarics Tamás
[szul_dat] =>
[halal_dat] =>
[funkcio] => ford.
[egyeb] =>
)
[1] => Array (
[szerzo_azon] => 31
[nev] => Sproule, Anna
[szul_dat] =>
[halal_dat] =>
[funkcio] => szerz.
[egyeb] =>
)
)
[0] => Array (
[szerzo_azon] => 32
[nev] => Magyarics Tamás
[szul_dat] =>
[halal_dat] =>
[funkcio] => ford.
[egyeb] =>
)
[1] => Array (
[szerzo_azon] => 31
[nev] => Sproule, Anna
[szul_dat] =>
[halal_dat] =>
[funkcio] => szerz.
[egyeb] =>
)
)
Az a lényeg, hogy a szerzok-ben elméletileg akármennyi szerzo lehet
Azt szeretném elérni, hogy a szerz. tualjdonságú szerzők előre kerüljenek, utánnuk jöjjenek a szerk., ford., illusztr.
Az egyes funkciókat betöltő személyek viszont a nevük szerint abc sorrendben.
Végig futottam a manual példáin, de ha jól láttam, akkor csak 1 szempont szerint rendeznek. Szóljatok ha tévednék.
Ha valakinek van egy elegáns megoldása szivesen venném a segtséget.
TikuVoltam
én erre
ui: és a 4 sql query(... WHERE funkcio = szerz. szerk., ford., illusztr) és azon belül abc-sorrendbe rendezve (ORDER BY nev), a tömböket összeadva, az nagyon gáz?
ez eléggé
Viszont az usort() -ot megnézem, bár most valahogy nem nagyon vagyok gondolkozásra képes.
ej lehet hogy megbánom hogy
http://toxin.webes.hu/simple/Downloads/labor/export.jpg és a funkció-kba ebben a sorrendbe rakod be a söröket (ill. a rekordokat) "1-szerzők előre kerüljenek, utánnuk jöjjenek a 2-szerk., 3-ford., 4-illusztr."
akkor valami ilyen lekérdezéssel kezedben a kivánt tömb,
szerzõ.név,
szerzõ.születésnap,
funkció.funckió_neve,
szerzõ.egyéb
FROM mûvek
INNER JOIN könyvek ON (mûvek.könyv_id=könyvek.könyv_id)
INNER JOIN szerzõ ON (mûvek.szerzõ_id=szerzõ.szerzõ_id)
INNER JOIN funkció ON (mûvek.funkció_id=funkció.funkció_id)
WHERE (könyvek.könyv_id=XXX)
ORDER BY funckció.funkció_id,szerzõ.név
márha könyvekre kérdezel le egyébként a WHERE-ben nyilván más van. Na majd holnap reggel megint megnézem, addig nem ér röhögni :-)))
köszi az ötletet
Külön táblába raktam a funkciót. így még lekezelni is könnyebb lesz.
köszi az ötletet. A módosítás után meg ilyen
"hogy ez miért nem nekem jutott eszembe?"
és mi az funckcio:integer a
az már az új változat
Igaziból így néz ki a kapcsoló tábla:
A DBDesigner4 rakja bele a képbe az idegen kulcsokat is. Ezzel engem is megkavart már párszor
engem te kavartál meg, mert
a sorrend
Először létre szoktam hozni a táblákat a szükséges mezőkkel (lásd az előbbi három), és csak utánna hozom létre a kapcsolatokat. Valahogy úgy müxik a dolog, mint Acces-ben, kattint egyik tábla mező, utána kattint a másik tábla mezőjén ahova kapcsolódni fog. Csak accessben át kell húzni az egyik mezőt a másik táblába.
az okés, én is így
usort
elméletileg
toXin kézenfekvő ötletéből merítkezve, név szerint rendezve kérem le az adatokat. Eddig nincs problema.
Ha jól értettem, akkor az usort() előtt kell létrehozni egy függvényt, ami megmondja az usortnak, hogy két érték közül melyik a nagyobb. Namost, mivel a felállított sorrendre nem tudok rendszert találni (jelentésbeni különbség van), az az ötletem, hogy abban a bizonyos függvényben az egyes értékekhez rendelek egy számértéket (szerz.=0, ford.=1, stb,stb.) és ezt hasonlítom össze.
Ezzel csak egy bajom van:
Ezt hogy lehet kiküszöbölni? Vagy félreértettem a manualt?