Időzóna: (GMT +1 óra) RSS - hozzászólások

Mykee fejlesztési naplója

Szerző
Üzenet
Mykee
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2005.08.29. Hétfő 1:00
Hozzászólások: 814
Hozzászólás Elküldve: 2015.08.15. 13:22    Hozzászólás témája:
Hozzászólás az előzmény idézésével
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? :roll: :shock: Hogy tűnhet el a POST során? :shock:

Felhasználó profiljának megtekintése Privát üzenet küldése
Mykee
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2005.08.29. Hétfő 1:00
Hozzászólások: 814
Hozzászólás Elküldve: 2015.08.15. 22:59    Hozzászólás témája:
Hozzászólás az előzmény idézésével
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 :D

Felhasználó profiljának megtekintése Privát üzenet küldése
_zso2
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2006.07.25. Kedd 1:00
Hozzászólások: 2029
Hozzászólás Elküldve: 2015.08.17. 08:47    Hozzászólás témája:
Hozzászólás az előzmény idézésével
Üdítő hír ebben az uborkaszezonban :D
_________________
Tapasztalást pénzért venni vagy hagyományképpen kapni nem lehet - fizetni kell azért mindég és mindegyiknek.

Felhasználó profiljának megtekintése Privát üzenet küldése Felhasználó weblapjának megtekintése
Mykee
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2005.08.29. Hétfő 1:00
Hozzászólások: 814
Hozzászólás Elküldve: 2015.08.20. 16:16    Hozzászólás témája:
Hozzászólás az előzmény idézésével
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? :roll:

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)? :roll:

Felhasználó profiljának megtekintése Privát üzenet küldése
Ragadozo
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2008.05.08. Csütörtök 18:26
Hozzászólások: 638
Hozzászólás Elküldve: 2015.08.21. 13:05    Hozzászólás témája:
Hozzászólás az előzmény idézésével
É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:

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.

Felhasználó profiljának megtekintése Privát üzenet küldése Email küldése Felhasználó weblapjának megtekintése
Mykee
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2005.08.29. Hétfő 1:00
Hozzászólások: 814
Hozzászólás Elküldve: 2015.08.21. 13:23    Hozzászólás témája:
Hozzászólás az előzmény idézésével
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 :)

Felhasználó profiljának megtekintése Privát üzenet küldése
Ragadozo
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2008.05.08. Csütörtök 18:26
Hozzászólások: 638
Hozzászólás Elküldve: 2015.08.21. 13:35    Hozzászólás témája:
Hozzászólás az előzmény idézésével
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.

Felhasználó profiljának megtekintése Privát üzenet küldése Email küldése Felhasználó weblapjának megtekintése
KillBill
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2007.03.26. Hétfő 5:42
Hozzászólások: 2258
Hozzászólás Elküldve: 2015.08.22. 01:26    Hozzászólás témája:
Hozzászólás az előzmény idézésével

Ragadozo írta:

Kód:

$sorkeres_id      = request_var('w', 0);
.........
$sql = 'SELECT * FROM ' . TABLAZAT_TABLE .
      ' WHERE tablasor_id = ' . $sorkeres_id;
........
........
Ebben mi a hiba?

Felhasználó profiljának megtekintése Privát üzenet küldése Felhasználó weblapjának megtekintése MSN Messenger
Mykee
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2005.08.29. Hétfő 1:00
Hozzászólások: 814
Hozzászólás Elküldve: 2015.08.22. 08:56    Hozzászólás témája:
Hozzászólás az előzmény idézésével
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.

Felhasználó profiljának megtekintése Privát üzenet küldése
Ragadozo
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2008.05.08. Csütörtök 18:26
Hozzászólások: 638
Hozzászólás Elküldve: 2015.08.22. 09:09    Hozzászólás témája:
Hozzászólás az előzmény idézésével

KillBill írta:

.................
Ebben mi a hiba?
Nem tudom, mire gondolsz. Elnéztem valamit? :)

Felhasználó profiljának megtekintése Privát üzenet küldése Email küldése Felhasználó weblapjának megtekintése
KillBill
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2007.03.26. Hétfő 5:42
Hozzászólások: 2258
Hozzászólás Elküldve: 2015.08.22. 23:29    Hozzászólás témája:
Hozzászólás az előzmény idézésével

Ragadozo írta:

KillBill írta:

.................
Ebben mi a hiba?
Nem tudom, mire gondolsz. Elnéztem valamit? :)
Bizony ám, na akkor egy kis info

Ragadozo írta:

Kód:

$sorkeres_id      = request_var('w', 0);
.........
$sql = 'SELECT * FROM ' . TABLAZAT_TABLE .
      ' WHERE tablasor_id = ' . $sorkeres_id;
........
........
az (int) parancsot lehagytad, tehát ha ilyen lekérést használsz akkor pillanatok alatt feltörhető a weboldalad.


Í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.

Felhasználó profiljának megtekintése Privát üzenet küldése Felhasználó weblapjának megtekintése MSN Messenger
Ragadozo
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2008.05.08. Csütörtök 18:26
Hozzászólások: 638
Hozzászólás Elküldve: 2015.08.23. 07:24    Hozzászólás témája:
Hozzászólás az előzmény idézésével
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. :)

Felhasználó profiljának megtekintése Privát üzenet küldése Email küldése Felhasználó weblapjának megtekintése
Mykee
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2005.08.29. Hétfő 1:00
Hozzászólások: 814
Hozzászólás Elküldve: 2015.08.23. 13:42    Hozzászólás témája:
Hozzászólás az előzmény idézésével
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 :)

Felhasználó profiljának megtekintése Privát üzenet küldése
Mykee
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2005.08.29. Hétfő 1:00
Hozzászólások: 814
Hozzászólás Elküldve: 2017.03.24. 20:43    Hozzászólás témája:
Hozzászólás az előzmény idézésével
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. :(

Felhasználó profiljának megtekintése Privát üzenet küldése
pstvfan
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2006.07.30. Vasárnap 1:00
Hozzászólások: 1542
Hozzászólás Elküldve: 2017.03.26. 11:39    Hozzászólás témája:
Hozzászólás az előzmény idézésével

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?
Ezeket mind meg lehet oldani extension-nel, az elsőnél a legegyszerűbb, ha a bug tracker-ben (phpbb.com-on) nyitsz egy ticketet, aztán küldesz github-on egy pull request-et az eventtel. A többi lehet egy picit bonyolultabb, mint ahogy leírod, de lehetségesnek biztosan lehetségesek.
_________________
<M>

Felhasználó profiljának megtekintése Privát üzenet küldése
Hozzászólások megtekintése:  

Időzóna: (GMT +1 óra) RSS - hozzászólások
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.

Hirdetés
Hirdetés