Mykee fejlesztési naplója
Szerző
Üzenet
Amit szeretnék: egy listából kiválasztott fájl elérési útvonalát tárolni az adatbázisban.
Vagy egy órája szenvedek már az egyedileg létrehozott admin formmal, ugyanis létrehoztam benne pár lenyitható listát, ami automatikusan kerül legenerálásra. Amikor elküldöm a formot, a lista value értéke nem kerül bele a request tömbbe. A value értékekben html hivatkozásokat generáltam le, ezeket szeretném letárolni az adatbázisba (pl.: ./../mdownloader/pictures/393987_160821080697137_1680792676_n.jpg)
Nomármost a csavar annyi, hogy rövid értéket nem tudok letárolni, lévén ez egy mappa fájljaiból készített lista, ahol ugye állandóan változhatnak az id-k a fájlnevektől függően.
A röhej az, hogy míg a többi (text és textarea, valamint egyszerű szám alapú value elemek) esetében simán átjön a value érték.
Tehát miért van az, hogy a checkbox esetén a checked és a generált option listák html link value értékek nem jönnek át? Magyarul: option value értékében nem tudok linket átadni? Hogy tűnhet el a POST során?
Vagy egy órája szenvedek már az egyedileg létrehozott admin formmal, ugyanis létrehoztam benne pár lenyitható listát, ami automatikusan kerül legenerálásra. Amikor elküldöm a formot, a lista value értéke nem kerül bele a request tömbbe. A value értékekben html hivatkozásokat generáltam le, ezeket szeretném letárolni az adatbázisba (pl.: ./../mdownloader/pictures/393987_160821080697137_1680792676_n.jpg)
Nomármost a csavar annyi, hogy rövid értéket nem tudok letárolni, lévén ez egy mappa fájljaiból készített lista, ahol ugye állandóan változhatnak az id-k a fájlnevektől függően.
A röhej az, hogy míg a többi (text és textarea, valamint egyszerű szám alapú value elemek) esetében simán átjön a value érték.
Tehát miért van az, hogy a checkbox esetén a checked és a generált option listák html link value értékek nem jönnek át? Magyarul: option value értékében nem tudok linket átadni? Hogy tűnhet el a POST során?
No kiderült, hol ástam magamnak a gödröt: hiába alapból nullás értéket akartam beleírni a request_var függvénynél, nem vette át a request a paramétert. Erre átírtam üresre alapértelmezetten és lőn csoda: egyből megjött a kért érték. Úgyhogy valószínűleg számként értelmezte a szöveget, amitől inkább default értékre váltott, ha már a szöveget nem értette. A checkboxnál meg alapból egyest adok meg és checked értéket, onnantól ez is működik.
PHP rejtelmei
PHP rejtelmei
Üdítő hír ebben az uborkaszezonban
_________________
Tapasztalást pénzért venni vagy hagyományképpen kapni nem lehet - fizetni kell azért mindég és mindegyiknek.
_________________
Tapasztalást pénzért venni vagy hagyományképpen kapni nem lehet - fizetni kell azért mindég és mindegyiknek.
No egyre mélyebb vizekre evezek. Most egy kissé erősebb kérdésem van. Jelenleg
- van egy táblázatom, aminek a végén jelölőnégyzetek vannak
- a táblázat alján egy funkcióválasztó: törlés és szerkesztés, valamint a Küldés gomb
- a törlés simán megy: kiválasztom a törlendő sorokat, a Törlést és elküldöm. Oké.
- van egy adathozzáadó oldal is funkcióval, a HTML-ben megfelelő szekcióval. A form tartalmaz generált listákat, checkboxot.
A kérdésem az, hogy ha a Szerkesztést választom, akkor hogyan tudnám átirányítani az adathozzáadó oldalra, de az ID megadásával, hogy az alapján betöltse a formba az adatokat? Ugyanis ha a táblázatban kiválasztok egy elemet és a Törlést, majd az Elküld gombot (több kiválasztásakor persze hibát kap a user), akkor a szokásos "minden rendben van" ablak jön fel és visszatérek a táblázathoz.
Tehát nekem arra van szükségem, hogy a zöld értesítés helyett automatikusan a hozzáadó form jöjjön be a kitöltendő adatokkal, hogy szerkesszem. Nyilván ez akár külön funkcióval is (tehát nem kell a hozzáadás függvényt mókolnom, hiszen a listagenerálásnál az alapértelmezett listaelemeket is meg kell adnom az aktuális értékek miatt).
Szóval lehetséges, hogy paraméterátadással a korábban használt hozzáadó formomra kerüljek a zöld infoablak helyett?
Másik alternatíván is gondolkodtam, ha az előbbi nem megy: egy linket teszek az egyik paraméter alá, így a (pl.) névre kattintva átvisz arra a formra és módban, de ebben az esetben milyen legyen a legenerált link (persze paraméterrel megtoldva)?
- van egy táblázatom, aminek a végén jelölőnégyzetek vannak
- a táblázat alján egy funkcióválasztó: törlés és szerkesztés, valamint a Küldés gomb
- a törlés simán megy: kiválasztom a törlendő sorokat, a Törlést és elküldöm. Oké.
- van egy adathozzáadó oldal is funkcióval, a HTML-ben megfelelő szekcióval. A form tartalmaz generált listákat, checkboxot.
A kérdésem az, hogy ha a Szerkesztést választom, akkor hogyan tudnám átirányítani az adathozzáadó oldalra, de az ID megadásával, hogy az alapján betöltse a formba az adatokat? Ugyanis ha a táblázatban kiválasztok egy elemet és a Törlést, majd az Elküld gombot (több kiválasztásakor persze hibát kap a user), akkor a szokásos "minden rendben van" ablak jön fel és visszatérek a táblázathoz.
Tehát nekem arra van szükségem, hogy a zöld értesítés helyett automatikusan a hozzáadó form jöjjön be a kitöltendő adatokkal, hogy szerkesszem. Nyilván ez akár külön funkcióval is (tehát nem kell a hozzáadás függvényt mókolnom, hiszen a listagenerálásnál az alapértelmezett listaelemeket is meg kell adnom az aktuális értékek miatt).
Szóval lehetséges, hogy paraméterátadással a korábban használt hozzáadó formomra kerüljek a zöld infoablak helyett?
Másik alternatíván is gondolkodtam, ha az előbbi nem megy: egy linket teszek az egyik paraméter alá, így a (pl.) névre kattintva átvisz arra a formra és módban, de ebben az esetben milyen legyen a legenerált link (persze paraméterrel megtoldva)?
Én még csak ismerkedek a 3.1-el, így ez csak egy tipp!.
Gondolom van egy alap adatbázis tábla, amiben valószínű soronként vannak a táblázat sorainak adatai (legalább is a kiinduló adatok).
Kellene egy táblasor_id (vagy valami más néven) a táblázatban, ami fix.
Például:
Ez automatikusan adja a sorok számát új soroknál is, és törléskor sem változik a megmaradt sor ID száma (később is berakható).
A php-ba pedig egy újabb sor (például!):
Ez lesz a Szerkesztés gomb linkje.
A Szerkesztés gombra klikkeléssel átirányítod az adathozzáadó oldalra, és az átadott ID felhasználásával már ki tudod választani a szükséges adatokat (például!).
Ott, amikor szerkesztetted az adatokat, nyomsz egy Submit gombot, hogy az új adatok érvényesüljenek.
Feltételezem, valahogy így van, vagy hasonlóan(??):
Én a végére, a kapcsos zárójel elé betenném:
Ha a visszatéréskor is kell valami adat, akkor a tablazat.php-ba is be kell tenni előre egy sort(például!):
Ezt a $tablavissza_id értéket fel lehet használni például arra, hogy az újra betöltődő táblázatban jelezze, melyik sor is volt szerkesztve (főleg, ha már nagy a táblázat). Egyszerűbb a dolog, ha ugyanarról a sorról van szó, mert akkor mindkét átadott érték ugyanaz, és akkor az adathozzáadó php-ban az előbb beírtat egyből módosíthatod:
Nem tudom még egészen, hogy a 3.1-ben ez mennyivel más, de az elven végig lehet menni szerintem.
Gondolom van egy alap adatbázis tábla, amiben valószínű soronként vannak a táblázat sorainak adatai (legalább is a kiinduló adatok).
Kellene egy táblasor_id (vagy valami más néven) a táblázatban, ami fix.
Például:
Kód:
`tablasor_id` int(4) unsigned NOT NULL AUTO_INCREMENT,
Ez automatikusan adja a sorok számát új soroknál is, és törléskor sem változik a megmaradt sor ID száma (később is berakható).
A php-ba pedig egy újabb sor (például!):
Kód:
'U_TABLA_SOR' => append_sid("{$phpbb_root_path}adathozzaado.$phpEx", 'w=' . $row['tablasor_id']),
Ez lesz a Szerkesztés gomb linkje.
A Szerkesztés gombra klikkeléssel átirányítod az adathozzáadó oldalra, és az átadott ID felhasználásával már ki tudod választani a szükséges adatokat (például!).
Kód:
$sorkeres_id = request_var('w', 0);
.........
$sql = 'SELECT * FROM ' . TABLAZAT_TABLE .
' WHERE tablasor_id = ' . $sorkeres_id;
........
........
Ott, amikor szerkesztetted az adatokat, nyomsz egy Submit gombot, hogy az új adatok érvényesüljenek.
Feltételezem, valahogy így van, vagy hasonlóan(??):
Kód:
$submit = (isset($_POST['submit'])) ? true : false;
...........
if ($submit)
{
..........
..........
}
Én a végére, a kapcsos zárójel elé betenném:
Kód:
$vissza = append_sid("{$phpbb_root_path}tablazat.$phpEx", 'y=' . - ha szükséges valami visszatérő érték - $tablavissza_id);
redirect($vissza);
exit;
Ha a visszatéréskor is kell valami adat, akkor a tablazat.php-ba is be kell tenni előre egy sort(például!):
Kód:
$tablavissza_id = request_var('y', 0);
Ezt a $tablavissza_id értéket fel lehet használni például arra, hogy az újra betöltődő táblázatban jelezze, melyik sor is volt szerkesztve (főleg, ha már nagy a táblázat). Egyszerűbb a dolog, ha ugyanarról a sorról van szó, mert akkor mindkét átadott érték ugyanaz, és akkor az adathozzáadó php-ban az előbb beírtat egyből módosíthatod:
Kód:
$sorkeres_id = request_var('w', 0);
$tablavissza_id = $sorkeres_id;
Nem tudom még egészen, hogy a 3.1-ben ez mennyivel más, de az elven végig lehet menni szerintem.
A hozzászólás legutóbb Ragadozo által 2015.08.21. 13:32-kor lett szerkesztve, összesen 4 alkalommal.
Köszönöm a tippet, átrágom magam rajta. Hasonló az általad leírtakkal és akkor egy gomb lesz kitéve, nem a lenyitható menüs verziót erőltetem.
Igazából 3.0-ához készítek egy nagyobb modot, úgyhogy megpróbálom kisakkozni ezt. Úgyis most értem el oda, hogy pár adatot még hozzácsapok a konfig táblámhoz, aztán jöhet ez az adatmódosítós rész
Hálás köszönet, és ha valami fájásom lenne, úgyis írok
Igazából 3.0-ához készítek egy nagyobb modot, úgyhogy megpróbálom kisakkozni ezt. Úgyis most értem el oda, hogy pár adatot még hozzácsapok a konfig táblámhoz, aztán jöhet ez az adatmódosítós rész
Hálás köszönet, és ha valami fájásom lenne, úgyis írok
A Szerkesztés gombot viszont a táblázat soraihoz kellene elhelyezni (vagy az elején, vagy a végén), mert így az egyszerűbb, és a logikusabb. Például ott, ahol bepipálod az adott sort törlésre.
Ragadozo írta:
Kód:
$sorkeres_id = request_var('w', 0);
.........
$sql = 'SELECT * FROM ' . TABLAZAT_TABLE .
' WHERE tablasor_id = ' . $sorkeres_id;
........
........
KillBill: A w-re gondolsz, mint id?
Tegnap este végül sikerült megoldani a csavart: mivel az edit mode-nak új panelt kellett volna felvegyek, ezért végül meghívtam a korábbi addnew modult egy edit paraméterrel megtoldva és így a funkcióknak is plusz egy paramétert átadok, amivel visszatöltik az adatbázisból a megfelelő beállításokat.
Ma azért egy hasonló résszel folytatom, mint kategóriák felvétele és törlése, meg szerkesztése, de talán abban nem lesz annyi gubanc.
Tegnap este végül sikerült megoldani a csavart: mivel az edit mode-nak új panelt kellett volna felvegyek, ezért végül meghívtam a korábbi addnew modult egy edit paraméterrel megtoldva és így a funkcióknak is plusz egy paramétert átadok, amivel visszatöltik az adatbázisból a megfelelő beállításokat.
Ma azért egy hasonló résszel folytatom, mint kategóriák felvétele és törlése, meg szerkesztése, de talán abban nem lesz annyi gubanc.
KillBill írta:
.................
Ebben mi a hiba?
Ragadozo írta:
Nem tudom, mire gondolsz. Elnéztem valamit?KillBill írta:
.................
Ebben mi a hiba?
Ragadozo írta:
Kód:
$sorkeres_id = request_var('w', 0);
.........
$sql = 'SELECT * FROM ' . TABLAZAT_TABLE .
' WHERE tablasor_id = ' . $sorkeres_id;
........
........
Így helyes a kód:
Kód:
$sorkeres_id = request_var('w', 0);
.........
$sql = 'SELECT * FROM ' . TABLAZAT_TABLE .
' WHERE tablasor_id = ' . (int) $sorkeres_id;
vagy, ha többször is használod az értéket akkor érdemes már az elején
Kód:
$sorkeres_id = (int) request_var('w', 0);
Az int megakadályozza a szöveg bevítelét.
Ha meg szöveg alapján kérsz le valamit akkor meg használd a $db->sql_escape() funkciót.
Remélem segítettem, hogy biztonságosabb kódot tégy közzé.
ui: A példámban szándékosan nem használtam aposztrófot
A feltörésről a példát töröltem, nehogy más visszaélhessen vele.
Köszönöm! Ezt nem vettem észre ....
A poén az, hogy ahol én ezt alkalmaztam az oldalamon, ott az sql-be tettem (int)-t, csak itt lefelejtettem.
A poén az, hogy ahol én ezt alkalmaztam az oldalamon, ott az sql-be tettem (int)-t, csak itt lefelejtettem.
Hálás köszönet az infóért, ez alapján én is átnézem a kódom, mert nem szeretnék feltörést, még ha admin felületen is van
Sajnos más nem fogja megírni helyettem a saját modjaimat extensionre, szóval leporoltam a fejlesztési leírásokat és újra ismerkedem velük. Az első újabb extension esetén megint belefutottam pár korlátba:
- a viewtopic_print esetében csak egy hook van a head szekcióra, de ennyi. A tartalomban semmi hook, pedig kéne.
- Lehet saját hookot létrehozni? Azért is érdekes, mert pl. két extension is találkozna.
- a meglévő viewtopic_print felülcsapható extension oldalról? Pl. ugyanazon névvel teszek be fájlt.
- lehetséges, hogy egy URL-hez adok még paramétert és akkor az extension sablonjával jön be?
Két kiegészítőről van szó ugyanis:
- CC Licenc jelet szeretnék beszúrni a topikokhoz (ez nem baj), de fel akarom tüntetni a nyomtatási sablonban is.
- Készítettem egy saját elrendezésű nyomtatási sablont, amit korábban ugyanazzal a linkkel hívtam meg, mint a sima nyomtatási képet, csak hozzáadtam egy kapcsolót az URL-hez. Gondolom, hogy ez nem lesz probléma, meghívom valami új címmel, viszont ebbe a sablonba is betenném az előbbi extension kódját. Tehát saját hook kellene hogy az adminban beállított licensz ott is megjelenjen.
Úgyhogy még csak most álltam neki, de ilyen gondolatokkal foglaltam el magam. Aztán lehet, hogy a Topic Passwordöt is megcsinálom, mert hiába akarták már páran, de másképp "helyettesítették", ami nem ugyanaz, sőt... Ezek nélkül nem tudok átállni 3.2-re, egy csomó dolog hiányzik.
- a viewtopic_print esetében csak egy hook van a head szekcióra, de ennyi. A tartalomban semmi hook, pedig kéne.
- Lehet saját hookot létrehozni? Azért is érdekes, mert pl. két extension is találkozna.
- a meglévő viewtopic_print felülcsapható extension oldalról? Pl. ugyanazon névvel teszek be fájlt.
- lehetséges, hogy egy URL-hez adok még paramétert és akkor az extension sablonjával jön be?
Két kiegészítőről van szó ugyanis:
- CC Licenc jelet szeretnék beszúrni a topikokhoz (ez nem baj), de fel akarom tüntetni a nyomtatási sablonban is.
- Készítettem egy saját elrendezésű nyomtatási sablont, amit korábban ugyanazzal a linkkel hívtam meg, mint a sima nyomtatási képet, csak hozzáadtam egy kapcsolót az URL-hez. Gondolom, hogy ez nem lesz probléma, meghívom valami új címmel, viszont ebbe a sablonba is betenném az előbbi extension kódját. Tehát saját hook kellene hogy az adminban beállított licensz ott is megjelenjen.
Úgyhogy még csak most álltam neki, de ilyen gondolatokkal foglaltam el magam. Aztán lehet, hogy a Topic Passwordöt is megcsinálom, mert hiába akarták már páran, de másképp "helyettesítették", ami nem ugyanaz, sőt... Ezek nélkül nem tudok átállni 3.2-re, egy csomó dolog hiányzik.
Mykee írta:
- Lehet saját hookot létrehozni? Azért is érdekes, mert pl. két extension is találkozna.
- a meglévő viewtopic_print felülcsapható extension oldalról? Pl. ugyanazon névvel teszek be fájlt.
- lehetséges, hogy egy URL-hez adok még paramétert és akkor az extension sablonjával jön be?
_________________
<M>
Nem készíthetsz új témákat ebben a fórumban.
Nem válaszolhatsz egy témára ebben a fórumban.
Nem módosíthatod a hozzászólásaidat a fórumban.
Nem törölheted a hozzászólásaidat a fórumban.
Nem szavazhatsz ebben fórumban.
Nem válaszolhatsz egy témára ebben a fórumban.
Nem módosíthatod a hozzászólásaidat a fórumban.
Nem törölheted a hozzászólásaidat a fórumban.
Nem szavazhatsz ebben fórumban.