Tervezési segítség
Sziasztok!
Ismerkedek az összetettem adatbázisok készítésével és gondoltam önszorgalomból és gyakorlásnak létrehozok a kollégáknak (és persze magamnak is) egy olyan oldalt ahova bizonyos lépéssort követve vehetik fel a munka infóit hogy egymást segítsük és ne maradjon ki info.
A tervezésnél elakadtam, mert nem nagyon vagyok jártas változó táblájú adatbázisokban. Eddig csak olyanokat csináltam ahol fix volt a tábla, például volt egy tábla abban volt fixen három oszlop és ebben tárolni és módosítani az adatokat nem nagy cucc, de itt most nem igazán találom a megoldást.
Kis magyarázat az elképzelésemről
Tehát az az elképzelésem, hogy bárki létrehozhat sablon listákat amik a munkával kapcsolatos lépésekből állnak hogy biztosan ne felejtődjön el semmi. Ha úgy tetszik ez egy kommentelhető "todo" lista, aminek a pontjai törölhetőek és módosíthatóak (egy oszlop törlése esetén nem baj ha a hozzá tartozó rekordok elvesznek).
Egy munkatárs létrehoz egy listát például: "Tervezési folyamat" néven.
Ebbe belepakol pontokat például:
1. pont: Végy egy papírt.
2. pont: Rajzolj.
3. pont: Küld el Sanyinak.
Ezekhez a pontokhoz mindenki írhat megjegyzést amikor kitölt egy ilyen listát (és biztosan minden ponthoz írni fog valaki valamit, mert nem ilyen egyszerű pontok lesznek)
A problémáim:
1. Ugye a legkézenfekvőbb az lenne hogy létrehozhatnánk egy "Tervezési folyamat" táblát, majd abba olyan oszlopot hogy "Végy egy papírt", "Rajzolj", stb, de ezzel az a baj hogy ilyen ékezetes, meg netalántán nagyon hosszú tartalmakat nem lehet cellának adni, na meg az sem világos számomra hogy ha valaki változtat valamelyik oszlop nevén akkor azt hogy kezelem le... beolvastatom a tábla oszlopait egy tömbbe és azon lépkedek végig az "insert into" parancsnál?
2. ekkor azt találtam ki hogy lesznek olyan tábláim mint például "listak", "pontok", "megjegyzesek". Ekkor amikor létrehoz valaki egy listát akkor egy egyedi azonosítóval elmentésre kerül a lista neve. Utána ha létrehoz egy pontot akkor ahhoz hozzárendelődik a lista azonosítója és elmentődik a pont elnevezésével a pontok táblában, majd itt is kap egy egyedi azonosítót és ez az azonosítóval ha egy munkatárs ír egy megjegyzést akkor az elmentődik a megjegyzes táblában.
Ez így elég működőképesnek látszik, csak az a bajom mint ez előbbinél hogy hogyan generálom le az "insert into" parancsokat ha a pontok és sorrendjeik is változik?
Remélem sikerült érthetően körbeírnom a problémám, ha valaki csinált már hasonlót és tud egy két jó szót vagy példakódot/leírást mutatni az ne tartsa magában! :)
Előre is köszönöm!
■ Ismerkedek az összetettem adatbázisok készítésével és gondoltam önszorgalomból és gyakorlásnak létrehozok a kollégáknak (és persze magamnak is) egy olyan oldalt ahova bizonyos lépéssort követve vehetik fel a munka infóit hogy egymást segítsük és ne maradjon ki info.
A tervezésnél elakadtam, mert nem nagyon vagyok jártas változó táblájú adatbázisokban. Eddig csak olyanokat csináltam ahol fix volt a tábla, például volt egy tábla abban volt fixen három oszlop és ebben tárolni és módosítani az adatokat nem nagy cucc, de itt most nem igazán találom a megoldást.
Kis magyarázat az elképzelésemről
Tehát az az elképzelésem, hogy bárki létrehozhat sablon listákat amik a munkával kapcsolatos lépésekből állnak hogy biztosan ne felejtődjön el semmi. Ha úgy tetszik ez egy kommentelhető "todo" lista, aminek a pontjai törölhetőek és módosíthatóak (egy oszlop törlése esetén nem baj ha a hozzá tartozó rekordok elvesznek).
Egy munkatárs létrehoz egy listát például: "Tervezési folyamat" néven.
Ebbe belepakol pontokat például:
1. pont: Végy egy papírt.
2. pont: Rajzolj.
3. pont: Küld el Sanyinak.
Ezekhez a pontokhoz mindenki írhat megjegyzést amikor kitölt egy ilyen listát (és biztosan minden ponthoz írni fog valaki valamit, mert nem ilyen egyszerű pontok lesznek)
A problémáim:
1. Ugye a legkézenfekvőbb az lenne hogy létrehozhatnánk egy "Tervezési folyamat" táblát, majd abba olyan oszlopot hogy "Végy egy papírt", "Rajzolj", stb, de ezzel az a baj hogy ilyen ékezetes, meg netalántán nagyon hosszú tartalmakat nem lehet cellának adni, na meg az sem világos számomra hogy ha valaki változtat valamelyik oszlop nevén akkor azt hogy kezelem le... beolvastatom a tábla oszlopait egy tömbbe és azon lépkedek végig az "insert into" parancsnál?
2. ekkor azt találtam ki hogy lesznek olyan tábláim mint például "listak", "pontok", "megjegyzesek". Ekkor amikor létrehoz valaki egy listát akkor egy egyedi azonosítóval elmentésre kerül a lista neve. Utána ha létrehoz egy pontot akkor ahhoz hozzárendelődik a lista azonosítója és elmentődik a pont elnevezésével a pontok táblában, majd itt is kap egy egyedi azonosítót és ez az azonosítóval ha egy munkatárs ír egy megjegyzést akkor az elmentődik a megjegyzes táblában.
Ez így elég működőképesnek látszik, csak az a bajom mint ez előbbinél hogy hogyan generálom le az "insert into" parancsokat ha a pontok és sorrendjeik is változik?
Remélem sikerült érthetően körbeírnom a problémám, ha valaki csinált már hasonlót és tud egy két jó szót vagy példakódot/leírást mutatni az ne tartsa magában! :)
Előre is köszönöm!
Miért új oszlopokban
nem szeretném
(bár ugye nem tudom hogy mit is szeretnék, ezért kértem hogy segítsetek hogy legalább jó irányba induljak)
Bár most hogy ezt írtad akkor a pontnak adjak egy egyedi azonosítót az egyedi azonosítóhoz meg rendeljem egy másik táblában a szöveget?
Például.
most tényleg ez a jó?
Ti is így csinálnátok, vagy most ez is csak egy megoldás?
De akkor is ha ez a legjobb megoldás, még hogy mentem el egy ilyen lista adatait? Mert nem tudom hogy mi lesz például az 5. módosított/hozzáadott oszlop azonosítója.
Tehát nem tudok olyat megadni hogy:
uh :)
pontok táblába vegyél fel egy sorrend mezőt. aztán ha változik a sorrend akkor azt update-eled.
sok sikert!
írkáld ide, hogy mire jutottál, aztán megpróbálunk segíteni.
eddig
Eddig ott tartok hogy (most a sorrendezéssel nem foglalkozok mert az pofonegyszerű ennél a verziónál, az azonosítókat meg egy kis "sózott" időbélyeggel oldom majd meg, az átláthatóság miatt használok most három karakteres azonosítókat):
"listak" tábla:
id, azonosító, érték
id, azonosító1, azonosító2, érték
id, azonosító, felhasználó, érték
Lista nevének kiíratása (pl:Tervezési folyamat)
Gondoltam arra hogy bevezetek egy $i számlálót ami számolja hány kiíratás volt (mert ugye ezek eltérőek a listák hosszától függ) és akkor ez alapján ad a megjegyzés inputoknak name és id-t (pl: megjegyzes1, megjegyzes2, stb) és a végén ezt a számot hidden inputként átadom a a mentes.php-nak CSAKHOGY utána e ciklikus végigléptetése nem probléma, de hogy adom meg neki hogy melyik érték melyik ponthoz tartozik, mivel a pontok egyedi azonosítói közt nincs összefüggés (egyedi időbélyeg), tehát ekkor adjak hozzá minden megjegyzés inputhoz egy hidden értéket és az tartalmazza a pont id-ját? Mert akkor már tudni lehet hogy mi hova tartozik, de ez nem tűnik valami "elegáncos" megoldásnak... vagy csak azért tűnik ilyen furcsának mert még nem láttam ilyet?
Változók
tömb?
táblák
Form
A lényeg annyi, hogy a pont azonosítóját berakod a megjegyzes mögé indexnek, akkor a $_POST tömbödben lesz egy megjegyzés array aminek az indexei az adott pontok azonosítói lesznek, értékei pedig a megjegyzések. a felhasználó azonosítót pedig tudod.
aztán, hogy egy insert-tel szúrod-e be vagy három külön lekérdezés, az már tökmindegy.
megvan
Tehát akkor "tömbösítem" a válaszokat és foreach paranccsal meg insert-telem?
pontosan
utolsó kérdés
pl:
Ha ilyeneken aggódsz, akkor
nem aggódom
Az előző problémánál is (amikor szabo.b.gabor vezetett rá) nem az volt a gond, hogy nem ismertem a tömböket, vagy a name mező postolását, hanem csak arra a kis trükkre volt szükség ahogy elegáncosan meg lehetett oldani...
(mert ugye ez működik most is ilyen csúnyán, csak nem valami optimálisan)
nem utolsó válasz :)
de én inkább arra gondolok, hogy a modelled rosszul képezi le a valóságot. valószínűleg egyszerre csak egy pontra fognak válaszolni a kollégák, hiszen egyszerre jó esetben csak egy ponton dolgoznak. a formodnak úgy kellene kinéznie, hogy van egy dropdown ahol kiválasztja az adott pontot amin dolgozik, majd van alatta egy textarea amibe beírja, hogy mit csinált. persze minden hozzászóláshoz kellene egy időbélyeg is.
valamint nem volna rossz, ha lenne valami megrendeles, vagy munkafolyamat tábla is, mert gondolom ezek a pontok ismétlődő munkafolyamatokat írnak le, és ezeknek kapcsolódni kell egy adott megrendeléshez. ez a munkafolyamat tábla praktikusan tartalmazza majd a lista azonosítóját, hogy tudd milyen pontok játszanak benne. lehet, hogy több lista is tartozhat hozzá, nem ismerem a körülményeket.
a kiírásod aztán valami ilyen formában lesz értelmes:
táblázatos megjelenítés
Vannak az ügyfelek, a kapcsolattartók és a kivitelezők. A legtöbb félreértés abból adódik hogy a kapcsolattartó egy csomó (számunkra) lényeges infót elfelejt megkérdezni, ami természetes, mert nem ért mélységében a kivitelezéshez és erre szeretnék egy listát/listákat létrehozni (különböző témakörben), hogy ne felejtsen el semmit és hogy rögtön oda tudja írni a megjegyzéseit, ötletei, stb.
Azért lenne jó ha utána például az összes kapcsolattartó egy összesítő táblában megjelenhetne az adott projektnél (persze ennek feltétel hogy ugyanazon dolgozzon), mert sok olyan kérdést is fel lehetne tenni nekik, amik alapján monitorozni lehetne hogy melyik kapcsolattartó hozza a jobb döntéseket, (mert sokszor van hogy ugyanazt a munkát viszik, a nagysága miatt, vagy ugyanolyan típusút) Ezt először magunk (kivitelezők) segítségére csinálnám, de utána majd lehet tudná használni a többi rész is... vagy átalakítva más feladatokat is elláthatna, esetleg kérdőív vagy ilyen jellegű feladatot ahol több ember válaszait hasonlíthatjuk össze egy lapon excelhez hasonló táblázatos megjelenéssel, nem tudom igazából nekem most az a lényeg hogy megtanuljak olyan eljárásokat amikkel egy webshopnál vagy eddigi bármi másnál még nem találkoztam, mint például ez is hogy soha nem volt olyan hogy egy tábla oszlopai változóak lennének, mindig csak a sorok változnak...
papír, ceruza
szerintem sok munkát és nyálat megspórolsz vele, ha mondjuk a formjaidat papír alapon odaadod egy ügyintézőnek (kiválasztasz egy szimpatikus, helyes egyedet), nézed ahogy dolgozik, használja, megnézed hol nehézkes, hol lehet javítani (a lényeg, hogy ne akard neki megmondani, hogy hogyan használja, csak azt hogy mire, aztán persze hallgasd meg a véleményét). aztán a papírjaidat (egy-egy elmentett form) gyűjtsd össze és csinálj belőle értelmes prezentációt.
ha kialakult egy használható béta, akkor kezdj el programozni (az úgyis unalmas).
http://www.doclerholding.com/hu/academy/
Schmidt Zoltán előadásait nézd meg, hasznosak lehetnek.
+1
van a papírnál is jobb az adatbázishoz :)
Á, nem hinném
Mondjuk az igazság az, hogy csak a kezdeti kapcsolatokat, alaptáblákat tervezem papíron (de azt szó szerint), és csak olyankor, ha még semmi hasonlót nem csináltam. Tehát egyre ritkábban, de ez az alap.
elölről
Tehát összefoglalva. Én azt szeretném megtanulni hogyan lehet olyan adatbázost tervezni, majd azt php-val manipulálni ahol nem (!) fixek a tábla oszlopai.
Értem ez alatt például egy egyszerű regisztrációt:
megvan adva az id, felhasználónév, jelszó. Ha ezen változtatni szeretnék, tehát mostantól kell a regisztrációhoz az e-mail cím, akkor az egész kócerájt át kell programozni és mindenhova be kell tenni hogy már van email oszlop is és kezelni kell.
Mivel azért ez nem jellemző hogy változik a regisztrációs adatok bekérése pláne nem gyakran, erre próbáltam valami feladatot kitalálni...
Már korábban is írtam hogy bármilyen feladatot kitalálhatunk, például jó ötlet volt a kérdőív és kitöltő rendszer, de utána azzal is mit kezdek? Nincs szükségünk ilyen programra... bár mondjuk azt konkrétan le lehet írni, hogy vannak kérdőívek, abban kérdések (ezek a változó dolgok) és aki kitölti annak a válaszai elmentődnek, majd azokat meg lehet jeleníteni egy nagy táblázatban és látni az összes választ meg a kérdéseket is. Így jobban érthető hogy mit szeretnék megtanulni?
(:
a változások fájdalommentes követésére használhatsz vmi ActiveRecord vagy ORM rendszereket.
esetleg amennyire nem értek hozzá a nosql vagy milyen rendszerek nyújtanak olyasmit, amire gondolsz (bár gyanítom nem).
amúgy hajrá! sajnos én nem tudok segíteni abban, amit szeretnél megtanulni.
Minek?
Nem lehetetlen amit szeretnél, de nemigazán célravezető. A megváltozott (új) táblaszerkezetek kezelésére ki tanítja meg a szoftvert? És mikor? Vagy a megváltozott szerkezettel nincsenek ellenőrzési és/vagy adatváltoztató műveletek?
Ez kissé olyan, mint mikor a kiskutya kergeti a saját farkincáját...
akkor vau :)
Most átálltam a kérdőív készítésre és így talán jobb eredménnyel járok, mert könnyű modellezni.
Most ott tartok a táblámmal hogy:
- A kérdőívet kiválasztva egy dropdown menüből egy olyan felületre kerül ahol hozzáadhat kérdéseket és ezeket sorrendezheti a kerdes tablaban.
- A regisztrált kitöltő landol a kitöltő oldalon ahol a kérdőívhez tartozó kérdéseket vannak kilistázva.
- Válaszol és szabo.b.gabor által mutatott eljárással tömbben átadódnak majd elmentőnek.
- Aztán ezeket a kérdéseket módosíthatja, törölheti újakat adhat hozzá a létrehozója (itt majd meg kell valahogy oldani hogy a törölendő kérdésekhez tartozó válaszok is törlődjenek, mert egy idő után tele lesz a valasz tábla szeméttel.
Ennek az egésznek első ránézésre az a hátulütője hogy ha valaki épp kitölt egy táblát és akkor van módosítás alatt a tábla, akkor arra nem tud válaszolni, de ennyi hiba belefér... gondolom ezt nem is lehet jól kezelni egyszerűen).
Ezt az egészet ki lehet íratni egy oldalra úgy hogy a kerdov id-ját megkapja az kiírató oldal és egy táblázatba jönnek a következők:
Kitoltő neve (input mező): Sanyi
1. kérdés: Hanyadika van ma?
Válasz (input mező): 12
2. kérdés: Milyen színű a virág?
Válasz (input mező): kék
3. kérdés: Süt a nap?
Válasz (input mező): nem
Kilistázva a kérdőívre adott válaszok alapján:
KITÖLTŐ | Hanyadika van ma? | Milyen színű a virág? | Süt a nap?
Sanyi 12 kék nem
Laci 14 zöld igen
Andi 17 lila igen
Kulcsszavak