Autor | Zpráva | ||
---|---|---|---|
SkyVessel Profil |
#1 · Zasláno: 21. 5. 2014, 10:40:54
Zdravím,
opět mám jednu třešničku... Mám nějaké data u uživatelů v databázi. Při výstupu si spočítám počet záznamů u každého uživatele a tento počet vypíšu dejme tomu do tabulky "počty". Problém: na stránce mám v tabulce "data" nějaké údaje pro různé uživatele, které se po kliknutí označí (řešeno pomocí skrytých checkboxů a změně třídy javascriptem). Potřebuji, aby se mi vždy po kliknutí na nějakou buňku v tabulce "data" (zaškrtnutí checkboxu) v tabulce "počty" přičetlo +1 ke stávající hodnotě u daného uživatele. Propojení může být asi podle id, ale prostě nevím, jak na to... Jestli vůbec lze vytáhnout takto hodnotu pomocí js z tabulky nebo spanu a dále s ní pracovat, nebo je to lepší (jediné řešení) po každém kliknutí nebo odkliknutí natáhnout daný záznam z databáze a provést update?! Snad jsem se vyjádřil nějak pochopitelně :) |
||
Str4wberry Profil |
#2 · Zasláno: 21. 5. 2014, 11:13:12
Takhle?
Živá ukázka |
||
SkyVessel Profil |
#3 · Zasláno: 21. 5. 2014, 11:20:55
No... vypadá to dost dobře funkčně :). Když jsem se na to jen tak zběžně mrknul, tak bych neměl mít problém udělat to přímo na kliknutí na tech checkbox a zároveň i odečtení hodnoty při odznačení.
Díky moc. Jak přijdu z práce, tak na to mrknu a zkusím to implementovat do toho mojeho šíleného kódu. Dám vědět, jak jsem blbej/dobrej xD |
||
SkyVessel Profil |
#4 · Zasláno: 22. 5. 2014, 01:17:05
No tak asi jsem krypl... Ten javascript mi prostě nejde...
Mám tabulku asi takto (mohl jsem to tu hodit hned sry) <table> <tr><td onclick='oznac(this)' class='cas'>Novotný Dan<input type='checkbox' name='vyber[]' value='15-b-7'></td></tr> <tr><td onclick='oznac(this)' class='cas vybrany'>Novák Jan<input type='checkbox' name='vyber[]' checked='checked' value='3-b-7'></td></tr> <tr><td onclick='oznac(this)' class='cas vybrany'>Veselý Petr<input type='checkbox' name='vyber[]' checked='checked' value='1-b-7'></td></tr> </table> a potom vedle tu tabulku s tím počtáním <table> <tr><td>Novák Jan</td> <td><input type="text" value="5" id="c3"></td></tr> <tr><td>Novotný Dan</td> <td><input type="text" value="5" id="c15"></td></tr> <tr><td>Veselý Petr</td> <td><input type="text" value="5" id="c1"></td></tr> </table> function oznac(td) { // označování buněk var input = td.getElementsByTagName('input')[0]; if (input.checked) { td.className = 'cas'; input.checked = false; } else { td.className = 'vybrany cas'; input.checked = true; } } Podstata bude v tom podle první hodnoty ve value právě změněného checkboxu přičíst nebo odečst 1 v inputu v druhé tabulce podle id. Já jen prostě stále nechápu, jak se ty třídy pomocí toho js vytahují a odkazuje se na ně. Tohle je na mě moc... |
||
Časová prodleva: 6 dní
|
|||
SkyVessel Profil |
#5 · Zasláno: 28. 5. 2014, 00:03:56
Takže jsem se konečně dostal opět k programování. Trochu jsem seděl nad tím js a zkoumal základy. Díky tomu se mi povedlo sestrojit něco, co velmi blízko odpovídá mojim potřebám. Jen to úplně ještě nedělá to, co bych chtěl.
<script> function pridatVybranym(user) { var vyber = document.getElementById(user); var prepocet = document.getElementById(user+"ch"); if (vyber.checked) prepocet.value = (prepocet.value * 1) + 1; else prepocet.value = (prepocet.value * 1) - 1; } </script> <table> <tr><td onclick='pridatVybranym("user1")'>user 1 <input type='checkbox' id='user1'></td></tr> <tr><td onclick='pridatVybranym("user1")'>user 1 <input type='checkbox' id='user1'></td></tr> <tr><td onclick='pridatVybranym("user1")'>user 1 <input type='checkbox' id='user1'></td></tr> <tr><td onclick='pridatVybranym("user2")'>user 2 <input type='checkbox' id='user2'></td></tr> <tr><td onclick='pridatVybranym("user2")'>user 2 <input type='checkbox' id='user2'></td></tr> <tr><td onclick='pridatVybranym("user3")'>user 3 <input type='checkbox' id='user3'></td></tr> <tr><td onclick='pridatVybranym("user3")'>user 3 <input type='checkbox' id='user3'></td></tr> <tr><td onclick='pridatVybranym("user3")'>user 3 <input type='checkbox' id='user3'></td></tr> </table> <table> <tr><td>user 1</td><td><input type='text' id='user1ch' value='3'></td></tr> <tr><td>user 2</td><td><input type='text' id='user2ch' value='1'></td></tr> <tr><td>user 3</td><td><input type='text' id='user3ch' value='9'></td></tr> </table> Jak docílit toho, aby mi to k danému uživateli přičetlo nebo odečetlo jen za daný checkbox, který zaškrtnu/odškrtnu? |
||
_es Profil |
#6 · Zasláno: 28. 5. 2014, 00:38:09
SkyVessel:
„Je mi jasné, že Id má být jedinečné“ No a keď ti to jasné, prečo ho teda jedinečné v rámci celého dokumentu nemáš? Metóda document.getElementById nájde prvý element s daným id , podľa čoho ti to aj „funguje“.
|
||
SkyVessel Profil |
#7 · Zasláno: 28. 5. 2014, 10:51:46
No ... asi jsem to nezmínil ... na té stránce je různý počet checkboxů pro daného uživatele. A já právě nevím, jak udělat to jedinečné id, abych ho pak dokázal pomocí té funkce přičíst k danému uživatelovi... Napadlo mě, že by to mohlo jít s this, ale to jsem zatím nepochopil, jak se s tím dělá :)
|
||
juriad Profil |
#8 · Zasláno: 28. 5. 2014, 11:03:00
Co třeba takto:
http://kod.djpw.cz/zndb Není třeba vůbec přidávat id; prostě najdeš input, který je uvnitř aktuální buňky tabulky. |
||
SkyVessel Profil |
#9 · Zasláno: 28. 5. 2014, 12:05:16
Atribut user... wow - to vypadá dobře :). Tak tohle si pořádně nastuduji. Nenapadlo mě, že tam jde strčit cokoliv.
Díky |
||
juriad Profil |
#10 · Zasláno: 28. 5. 2014, 13:07:41
Pokud se to nebude líbit validátoru (v praxi to ničemu vadit nebude), změň ten atribut na
data-user . Podle specifikace HTML5 si můžeš vytvořit své atributy prefixované data- .
|
||
SkyVessel Profil |
#11 · Zasláno: 28. 5. 2014, 17:53:14
Ah... mě napadlo, že se to validátoru nebude pozdávat, ale už dlouho předlouho jsem nevalidoval, takže jsem to ani neřešil :). No když už jsme u toho tak jedna offtopicová: html5 zvládnou i starší prohlížeče? Nebo nepřežvýkají ty "nové" vychytávky a jednoduše je přeskočí?
|
||
lionel messi Profil |
#12 · Zasláno: 28. 5. 2014, 17:56:25
SkyVessel:
„html5 zvládnou i starší prohlížeče? Nebo nepřežvýkají ty "nové" vychytávky a jednoduše je přeskočí?“ S podporou HTML5 je to asi takto: každý bežný prehliadač podporuje časť HTML5 a žiadny dostupný prehliadač nepodporuje všetko z HTML5. Preto je lepšie sa vyvarovať príliš exotických vecí či „vychytávok“, kt. podporuje len 1 — 2 prehliadače. |
||
SkyVessel Profil |
#13 · Zasláno: 28. 5. 2014, 18:05:34
lionel messi:
„Preto je lepšie sa vyvarovať príliš exotických vecí či ‚vychytávok‘“ Jap. Díky. Integrace nových věcí je asi nejvíce pomalý jev :)... |
||
CZghost Profil |
#14 · Zasláno: 29. 5. 2014, 15:13:51
[#8] juriad:
Tvůj fork mi umožňuje snižovat či zvyšovat hodnotu pomocí dvojkliku na checkboxech, Internet Explorer 9, Windows Vista. To asi není zamýšlený efekt :D |
||
Časová prodleva: 10 let
|
0