Asszociatív tömb elemének cseréje, adott feltételtől függően
Sziasztok!
Mára ez már a sokadik kérdésem lesz, de egyszerűen nagyon jók vagytok, lassan több sportszelettel jövök itt már a társaságnak. :)
szitu #1:
Lekérdezés visszaad egy asszociatív tömböt. Igen ám, de én nem azt szeretném kiiratni hogy "Tagság: 3", hanem azt hogy "Tagság: Bronzfokozatú", viszont a táblában kódokkal van jelölve a dolog.
szitu #2
Mező Numerikus értéke alapján szeretnék képet, gombot, formalkatrészt kitenni.
Az volt a tervem, hogy mikor jönnek az adatok a lekérdezésből
Na valami ilyenre gondoltam sacc/kábé. Hogyan kell ezt elegánsan? Nem akarok külön táblát a rangoknak, idegenkulcsokkal!
Egyébként is univerzális varázsfüggvényre gondoltam.
Olyat is meg tudna oldani a kis okos, hogy adott mezőértékek esetén más formelemeket pakoljon ki a képernyőre, vagy egy szállásfoglalásnál, a "függő" státusz esetén egy "jóváhagyás" gombot mutatunk egyébként pedig a "lefoglalva" feliratot stb.
na mutatok még kódot, hogy rendesen bele tudjátok élni magatokat:Alapban visszadná a lekérdezés eredményét minden varia nélkül, ha kap egy tömböt cserél, ahogy mondtam, ha még függvényt is megadok akkor bonyulultabb feltételektől függő cserét is tudna csinálni.
Csak éppen fogalmam sincs hogyan lenne ez jó. Egyáltalán
array_map, vagy array_walk, vagy egyik sem? az array_map-nál gondjaim vannak a kulcsok visszaadásával.
Mi lesz velem most?
■ Mára ez már a sokadik kérdésem lesz, de egyszerűen nagyon jók vagytok, lassan több sportszelettel jövök itt már a társaságnak. :)
szitu #1:
Lekérdezés visszaad egy asszociatív tömböt. Igen ám, de én nem azt szeretném kiiratni hogy "Tagság: 3", hanem azt hogy "Tagság: Bronzfokozatú", viszont a táblában kódokkal van jelölve a dolog.
szitu #2
Mező Numerikus értéke alapján szeretnék képet, gombot, formalkatrészt kitenni.
Az volt a tervem, hogy mikor jönnek az adatok a lekérdezésből
mysql_fetch_array
bevetésével, rögtön megejtek a sorokon egy cserét is. Mi erre a legjobb módszer?
$resultrow=array("nev"="Béla","statusz"=>"6","polomeret"=>"XL");
$modifier=array("statusz");
$modifier["statusz"]["original"]=6;
$modifier["statusz"]["replacement"]="Aranyfokozatú törzstag";
array_map("replace",$resultrow,$modifier);
Egyébként is univerzális varázsfüggvényre gondoltam.
Olyat is meg tudna oldani a kis okos, hogy adott mezőértékek esetén más formelemeket pakoljon ki a képernyőre, vagy egy szállásfoglalásnál, a "függő" státusz esetén egy "jóváhagyás" gombot mutatunk egyébként pedig a "lefoglalva" feliratot stb.
na mutatok még kódot, hogy rendesen bele tudjátok élni magatokat:
function dbQueryRows($result, $replace=array(),$callback="replacer")
{
function replacer($original,$replacer)
{ // ide jönne a szimpla mechanikus csere értékstimmelés esetén
}
$resultArray=FALSE;
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
if (!empty($replace)) array_map("replacer",$row,$replace);
$resultArray[] = $row;
}
return $resultArray;
}
Csak éppen fogalmam sincs hogyan lenne ez jó. Egyáltalán
array_map, vagy array_walk, vagy egyik sem? az array_map-nál gondjaim vannak a kulcsok visszaadásával.
Mi lesz velem most?
Adatok és nézetek szétválasztása
pp
kreatív kommandó lecsap :))) avagy Varázsfüggvény I.
http://toxin.hu/weblabor/replacer.txt
magyarán a tábla szerinti oszlopnévvel mint függvénnyel eljátszuk a cserét (ha kell) az egyes elemeken, lehetne még szórakozni vele, de az már a fenti megoldás mutálása lenne (már nem kihívás nem kell ötlet nem érdekel :)) )
további jó szórakozást :)
üdv t
no még egy, nem kulcselnyelős változat
http://toxin.hu/weblabor/replacer2.php
http://toxin.hu/weblabor/replacer2.txt
üdv t :)
ui: persze lehetne egy függvényt hívni 2 param-al és switch-case -el cserélni stb. :)
a macskarúgja meg ez tényleg működik
Úgyhogy nagyon jól jött ez az ihlet most. Összeházasítom a sajáttal, ebből tankönyvbe való megoldás lesz.:)
Szerintem még jelentkezem.
Le a kalappal.
A történet folytatódik...
Paradigmaváltás küszöbén állok.
filo #1:
Eddig úgy csináltam lekérdezések feldolgozását, hogy egy tömböt gyártottam, amiben benne volt az összes fetch_array-el visszadott sor. Utána ezzel dolgoztam. Van táblázat generáló fv-em, adatlapgeneráló fv-em satöbbi, ezek általában ebből a nyers adat tömbből dolgoznak.
Arra hajlok, hogy megpróbálom úgy megkomponálni az egész művet, hogy mindig csak az aktuális fetch_array által visszaadott sorral dolgozzanak a fv-ek. Így egyáltalán nem kell tárolnom az eredményhalmazt a memóriában, csak amig éppen csinálok valami az aktuális sorral. (Néhány speckó esetet leszámítva)
Kérdés: megéri-e szerintetek, vagy hagyjam a manóba, legjobban van ez így a világon?
filo #2:
A cseréket amiről az elején szóltam, hol szoktátok megtenni? Mert most belököm a majmot a vízbe. Azt eszeltem ki, hogy lesz egy nagy-nagy "validálóm". :)
A vezérhangyát Felhő hintette a fülembe:
a "Beérkező adatok ellenőrzése" -címszónál felskiccelt tömbjével.
Nem másoltam be, mert így is marha hosszú leszek, és utáltok majd nagyon.
ötlet: az adatbázis kezelőtől jövő adatokat pont úgy dolgozom fel, mint a felhasználótól jövőket, csak persze más "szabályok" szerint. Itt megtörténhet például a fent bevezetett csere probléma kezelése is.
részemről az ADOdb
http://phplens.com/lens/adodb/docs-active-record.htm
ill. volt egy elődádás phpConf-on
http://phpconf.hu/2005/media/eloadasok/adodb.pdf
további linkek ezen fent vannak
üdv t
ui: van belőle extension is ha ezirányú gondjaid lennének