- Sarokba szorította a Huawei az Apple-t Kínában
- Kínos ügy lett az OpenAI Scarlett Johansson-botránya
- Windows 11
- Folyamatosan hazudott a bitcoin állítólagos feltalálója
- ASUS routerek
- Bittorrent topik
- A tüntetések ellenére is bővítheti német gyárát a Tesla
- Microsoft Excel topic
- YouTube
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
Új hozzászólás Aktív témák
-
Karma
félisten
Az egész ott kezdődik, hogy adj egy classt a selectnek, hogy könnyen tudjál hivatkozni rájuk JQueryvel. A change függvénnyel írsz egy eseménykezelőt, ami a select átbillenésekor hívódik meg.
Innen megkeresed a szülő tr-t, például parent hívásokkal, és ráraksz egy classt az érték függvényében (mert ugye nem JS kóddal állítasz be konkrét színeket ).
Nem is olyan érdekes
[ Szerkesztve ]
“All nothings are not equal.”
-
Jim-Y
veterán
Hat ez nem egy nehez feladat. Meg igy mobilrol is le tudm irni. Azt mondtad hogy a select a sor vegen van, tehat be van agyazva a tr tagbe. a selectednek a szulje igy a tr lesz,van erre jquerys fv:parent
Tehat a feladatod hogy allitasz egy figyelot a select change eventjere es attol fuggoen valtoztatod a sor hatterszinet jquery css() fuggvennyel. Ez a jquerys megoldas. De a hatterszinhez en nem a css fvt hasznalnam hanem classokat adnek hozza vagy vennek el. udv[ Szerkesztve ]
-
Jim-Y
veterán
-
Sk8erPeter
nagyúr
Azért a paraméter nélküli removeClass()-szel csak óvatosan, sőt, inkább ne használd, csak nagyon indokolt esetben, mert nem várt hatásokat is eredményezhet, pl. olyan osztályt távolítasz el adott elemről, amit nagyon nem kellett volna, és ezzel esetleg más kód működését vagy az elem kinézetét (lásd CSS-tulajdonságok) cseszed el.
(#2582) Jim-Y :
azért remélem a sok if-else helyetti switch-case-ről már hallottál...Sk8erPeter
-
Jim-Y
veterán
Szerzel egy loader gif-et, az ajax-os adatbázibetöltés előttre berakod ezt a képet a DOM-ba, majd az ajaxos kérés callback-jébe raksz egy olyan kódot ami elrejti, vagy eltűnteti a fenti gif-et.
Egyszerű -nem működő- példa:
<img src="loader.gif" id="loader"/>
<table>
// ide fog betöltődni a sok sor az adatbázisból
</table>
...etc..JS:
$.ajax({
...
...
success: funtion(data){
// itt töltöd be a sorokat, majd
// itt tűnteted el a loadert.
});
// vagy itt, bár ha még az ajax-ban, akkor attól függően, hogy success vagy error tudsz még machinálni a kiírásokkalEz tényleg egy egyszerű példa volt, amit le kell szűrnöd belőle, hogy amikor vársz az adatokra, akkor előtte megjeleníted a loader gifet, amikor végzett az adatok betöltésével akkor pedig hide().
üdv
[ Szerkesztve ]
-
Karma
félisten
Egy momentum kimaradt: az AJAX-os megoldásnál nem az oldal renderelésekor állsz neki adatbázist tekerni szinkron módon.
Ehelyett van egy külön PHP "oldalad", amire majd a Javascript fog ráhívni az előbb említett módon, és az adatokat (vagy rosszabb esetben a hiányzó HTML fragmenteket, táblázatokat) generálja ki önmagában.
[ Szerkesztve ]
“All nothings are not equal.”
-
Sk8erPeter
nagyúr
Teljesen felesleges ezt jQuery-vel intézni, amikor ezt sima CSS-kódban megírva is jól működésre lehet bírni. Lásd tr:hover {}.
(#2606) Polesz : látom közben rájöttél. Amúgy általánosságban is kijelenthető, hogy ha valamit tök jól meg lehet oldani CSS-sel, akkor nem szabad erőltetni ugyanezt JavaScriptben.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
"ha megcsinálok egy select-et és azt szeretném, hogy minden kiválasztásnál egy php kód fusson le annak hogyan kezdjek neki."
Sk8erPeter
-
Speeedfire
nagyúr
-
martonx
veterán
Amit szeretnél az nem túl triviális, mégha annak is tűnik. Javaslom, hogy inkább tegyél ki valami kis loader.gif-et, aztán amikor megjött az adat, akkor tüntesd el.
Jó megoldás tud még lenni, hogy az elején megsaccolod, hogy meddig tart a folyamat, ha mondjuk tudod pl. file feltöltésnél file méret alapján, vagy fogsz egy felső korlátot és azt írod ki másodpercben.
Pl. tudod, hogy valami időigényesebb folyamat az esetek 99%-ában 8-15 másodperc alatt fut le terheltségtől függően. Ekkor érdemes lehet kitenni egy 15-ről visszaszámlálást, maximum már 8-nál meg lesz az eredmény.Én kérek elnézést!
-
Cathfaern
nagyúr
Ez tökéletesen példája annak, hogy eredetileg a HTML-t text szövegek formázására találták ki, a php-t arra, hogy a text szöveg elejére ne csak azt lehessen írni, hogy "Dear Guest", hanem a nevedet is, a JS-t meg arra, hogy a neved ne csak ott legyen, hanem villogjon is Aztán mindezt addig toldozták meg foldozták, amíg létre nem jöttek olyan dolgok, mint a HTML5, meg az ajax. De az alapok attól még ugyanazok (sajnos), és így mai felhasználási szemszögből nézve triviális dolgok nem, vagy csak bonyolultan oldhatóak meg.
Hogy ON is legyek, a problémádra egyik megoldás, hogy a fájl feltöltést asyncron ajaxxal küldöd el (ugye alapból ilyen), a PHP feldolgozóban pár soronként az adatbázisba változtatsz egy mező értékét (célszerű session alapján valamiféle ID-hoz menteni ezt, hogy konkurrens műveletnél is tudd melyik gép az, és biztos ne akadjanak össze). Kliens oldalon pedig kell egy setintervalos (vagy settimeoutos) js function, ami egy újabb ajax lekéréssel kiolvasgatja ennek a mezőnek az értékét, és ez alapján növelgeti a progress bart. Előnye, hogy a szerveren ehhez nem kell semmi beállítást változtatni (ugye erre vagy van lehetősége az embernek, vagy nincs), hátránya, hogy az SQL írási műveletek miatt valamivel lassabb lesz a fájlfeldolgozás (nyilván minél gyakrabban frissíted a mezőt, annál lassabb). Kivéve persze ha kihasználod a jelenleg még gyakorlatilag béta állapotban lévő PHP-s szálkezelést
[ Szerkesztve ]
-
Polesz
addikt
Mivel jelenleg itthonról fejlesztem a belső gépen futó alkalmazást ezért rdesktoppal beléptem egy belső gépre és elindítottam ott is a lekérdezést. 3 mp alatt sikerült értékelhető eredményt produkálni, tehát a külső használattal van itt a probléma. A dolog így megoldódik magától mivel ez kimondottam intraneten használt alkalmazás.
Elméletileg nincs különbség elmélet és gyakorlat között. Gyakorlatilag van.
-
martonx
veterán
Nehogy már PHP-vel rakasd össze a táblázatot!
Küld ki az adatokat JSON-ban, és majd kliens oldalon összerakod a táblázatot. Ezzel nem csak a szerverterhelésen nyersz egy csomót, de gyorsabban meg is lesz a végeredmény (hacsak el nem rontod a js részt).Én kérek elnézést!
-
martonx
veterán
"Ez egy hobbi programozás. Ha kész utána átnézem a JSON-t is, de ezt most működésre kell bírni gyorsan." - itt némi ellentmondást érzek. Hobbi programozás, de gyorsan működésre kell bírni?
Egyébként forfairlane-nek igaza van. Pagelned kellene, hogy ne kelljen szerencsétlen böngészőnek több tízezer input-ot, meg select-et a hozzájuk tartozó akár több százezernyi option-nel lerenderelnie.
Én kérek elnézést!
-
fordfairlane
veterán
Sajnos nagy adatmennyiségről van szó, de belső használatnál viszont gyorsan fut az egész.
A kérdés az, hogy szükség van-e ennyi formelemre vagy sem. Ugyanis formelemre ott van szükség, ha módosítani akarsz valamit. Ha nem egyszerre módosítasz ezer tételt, akkor ez így ebben a formában hibás megközelítés. Nem az egészet kell editálhatóvá tenni, csak egy-egy tételt, azt meg lehet külön oldalon.
x gon' give it to ya
-
Sk8erPeter
nagyúr
list($a,$b,$c,$d,$e,$f,$g,$h,$i,$j,$k,$l,$m,$n,$o,$p,$q,$r) = $row;
echo '<tr class="row_a'.$c.'"><td>'.$b.'</td><td>'.$d.'</td><td>'.$e.'</td><td>'.$f.'</td><td>'.$g.'</td>
<td>'.$h.'</td><td>'.$i.'</td><td>'.$j.'</td><td>'.$k.'</td><td>'.$l.'</td><td>'.$m.'</td><td>'.$n.'</td>
<td>'.$o.'</td><td>'.$p.'</td><td>'.$q.'</td><td><textarea class="row1">'.$r.'</textarea></td>Uhh, ez azért erős. Erről a változónév-használatról javaslom, sürgősen szokj le. Egyébként sem nyersz semmit azzal, hogy a $row változóból a megfelelő kulcson lévő értékeket átrakod egy másik változóba, aminek $a, $b, $c, stb. a neve, inkább értelmesen kellene elnevezni/lekérni az oszlopokat (van alias).
Mindenesetre a kód karbantartása szempontjából a legrosszabb döntés ilyen változóneveket használni. Persze ilyen mennyiségnél nyilván egyből lehet tudni, ezzel mit is akartál csinálni, de nehogy aztán rászokj, meg ugye előfordulhat, hogy ez a kód még bővül, és kezdeni is kell valamit a kiíratáson kívül a változókkal, akkor meg nagyon fájni fog később, hogy ilyen változóneveid vannak.Amúgy 1200 sor formelemekkel kiegészítve, az tényleg rengeteg egy táblázat összerakásánál, valószínűleg ráadásul felesleges is akkora táblázatot megjeleníteni, úgysem lát át akkorát senki. Bár lehet, hogy kliensoldalon akarod utána szűrni, nem tudom, de mindenesetre ahogy már írták, összerakni egy ekkora táblázatot, mindenféle plusz elemével együtt, majd ezt bepasszírozni a DOM-ba, feldolgozni nem gyengén erőforrás-igényes a böngészőnek. És tényleg nem szerveroldalon kellene összeraknod. (JSON-ről, meg json_encode-ról itt írtam alul, hátha segít: [link].)
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
A JSON-t nem kell ám túlmisztifikálni, csak egy nagyon könnyen kezelhető formája az adatoknak, komoly támogatással (a legnépszerűbb programozási nyelvek vagy natívan támogatják, vagy létezik hozzá kiegészítő könyvtár).
PHP-ben például egy egész komplex tömböt egyszerűen áthajthatsz a json_encode() függvényen, visszaadod szerveroldalról annak kimenetét (nem raksz össze semmiféle táblázatot, amivel szerveroldalon kéne tökölni, ha AJAX-os kommunikációról van szó), kliensoldalon pedig jQuery-vel nagyon egyszerűen fel tudod dolgozni ezt a formátumot."minden sort editálni kell sajnos"
Mióta létezik olyan magyar szó, hogy "editálni"? Segítek: a szó, amit kerestek, az a "szerkeszteni".
Ez pont annyira béna és erőltetett műszó, mint az "applikáció" (nincs ilyen, a megfelelő szó az alkalmazás), a "performancia" (nincs ilyen, a megfelelő szó a teljesítmény), és még sorolhatnám.
Bizonyos szakmai szavakat nehéz lefordítani, mert nincs igazán találó magyar megfelelőjük, vagy szemléletesebb, amikor az angol eredetit használjuk, esetleg segít a gyorsabb megértésben (pl. a "pager" szót többször látom, mint a "lapozó" szót, de lehet, hogy ez most nem a legjobb példa, csak pont ezt említették előttem), de a felsorolt szavaknak pont van.Na, de hogy érdemben is reagáljak rá, nem hiszem, hogy egyszerre szeretne valaki 1200 sort szerkeszteni. Épp ezért kellene lapozó.
[ Szerkesztve ]
Sk8erPeter
-
martonx
veterán
"egy EXCEL tábla kiváltása a cél" - azért az egyéb lehetőségeket végiggondoltad? Pontosabban miért kell kiváltani az excelt? Biztos ez a megfelelő megoldás a problémádra, hogy webalkalmazást készítesz helyette?
"minden sort editálni kell sajnos" - ez OK, de butaság minden sort editálhatóvá generáltatni szerencsétlen böngészővel. Elég csak azt a sort editálhatóvá alakítani, amelyiket kiválasztja a felhasználó.
Én kérek elnézést!
-
-
martonx
veterán
"Az Excel táblákat viszont egyszerűen nem lehet úgy összefésülni, hogy kiszűrjük az ismétlődő elemeket vagy a régebbi bejegyzéseket." - ez ugyan más topik feladata, de már hogy a fenébe ne lehetne? A feladat ismerete nélkül akár egyetlen kattintással ki tudod szűrni benne az ismétlődő elemeket. Pont erre való az excel, nem pedig arra, hogy Marika néni a család havi költségvetését vezesse benne. Bár persze arra is lehet használni.
Én kérek elnézést!
-
Male
nagyúr
Csak hogy még egy problémát felvessek az ezer sor egyben szerkesztéssel: Gyanítom akkor a mentésnél mind az ezer sort mented is (persze nem biztos, nem olvastam el mindent a megoldásodról). Namost ez egyrészt szintén rohadtul erőforrás pazarló, de ami nagyobb probléma: Gizike megnyitja az ezer sorát, fél napja írkál át minden mezőt... közben Gabika is végez a pasziánszal, és kattint... bejön neki is az ezer sora szerkeszthetőre (van egy pár átfedés a két ezer sor között), és mondjuk egyetlen mezőt módosít.. Aztán Gizike megnyomja a rögzítés gombot, mert kész a kávé, szól Gabikának, aki gyors rányom a rögzítésre szintén.... és Gizike fél napos munkája a kukában.
Persze kivédhető ez, és lehet, hogy gondoltál is rá, de ha nem, akkor készülj fel
(Ez a probléma ha csak egy sort szerkesztesz egyszerre, akkor minimalizálódik, de még oda is rakhatsz védelmet persze.) -
Karma
félisten
Ezt az elemet:.find("option selected")
Cseréld ki erre: .find("option:selected")Az első szintaxis egy <selected> taget keres az optionök leszármazottai között a szóköz miatt.
A második meg selected optiontJSFiddle példa erre a részre.
A kijelölés-megszüntetést nem vettem bele.[ Szerkesztve ]
“All nothings are not equal.”
-
Sk8erPeter
nagyúr
Nem muszáj selected attribútumot rakosgatni, nyugodtan használhatod a .val()-t is, gyorsdemó:
Nézegesd közben a fejlesztőpanel konzolját (F12, v. Ctrl+Shift+I).
Sk8erPeter
-
-
Karma
félisten
-
Karma
félisten
Így más, azt hittem adatbázis van a háttérben
Most néztem, a TCPDF oldala is írja a php.ini módosításokat.“All nothings are not equal.”
-
martonx
veterán
-
fordfairlane
veterán
TCPDF-et nem tudod meghívni a parancssorból? Mert akkor valami aszinkron megoldás lenne jó. Parancssori végrehajtás új threadbe, minden PDF generálásánál. Tudom, hogy PHP-ban ez nem triviális feladat, de még mindig jobb, mintha a PHP egy szálon fut a végtelenségig.
[ Szerkesztve ]
x gon' give it to ya
Új hozzászólás Aktív témák
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Alpha Laptopszerviz Kft.
Város: Pécs