Autor Zpráva
pajadvorak
Profil
Mám níže uvedený dotaz do databáze do dvou tabulek. Bohužel se mi nedaří odfiltrovat položky dle tohoto filtru ((tabulka_zbozi_vlastnosti.tabulka_vlastnost = 'EF000187' AND tabulka_zbozi_vlastnosti.hodnota = 'AC') OR (tabulka_zbozi_vlastnosti.tabulka_vlastnost = 'EF009556' AND tabulka_zbozi_vlastnosti.hodnota = '6'))

Namísto, aby se odfiltrovali, tak se zobrazí všechny. Chápu, že to dělá "OR". Ale když dám "AND", tak databáze vrátí nulový výsledek.

Potřebuji, aby filtr fungoval tak, že zobrazí položky, které splní tabulka_zbozi_vlastnosti.tabulka_vlastnost = 'EF000187' = tabulka_zbozi_vlastnosti.hodnota = 'AC' a zároveň (tabulka_zbozi_vlastnosti.tabulka_vlastnost = 'EF009556' = tabulka_zbozi_vlastnosti.hodnota = '6'

Pro vysvětlenou: tabulka_zbozi_vlastnosti obsahuje seznam položek a k nim přiřazené vlastnosti + hodnoty. Takže jedna položka tam je například uvedena 10x, protože má 10 vlastností.

Děkuji moc za pomoc.

SELECT etim_zbozi.id, tabulka_zbozi.kod,tabulka_zbozi.kod_vyrobce, tabulka_zbozi.kod_dodavatele, tabulka_zbozi.nazev, tabulka_zbozi.cena, tabulka_zbozi.cena_doporucena, tabulka_zbozi.popis, tabulka_zbozi.dostupnost FROM tabulka_zbozi JOIN tabulka_zbozi_vlastnosti on tabulka_zbozi.kod = tabulka_zbozi_vlastnosti.kod_zbozi WHERE ((tabulka_zbozi.kod = 'EH1054350') OR (tabulka_zbozi.kod = 'EH1714832') OR (tabulka_zbozi.kod = 'EH1715136') OR (tabulka_zbozi.kod = 'EH1749823') OR (tabulka_zbozi.kod = 'EH1749824') OR (tabulka_zbozi.kod = 'EH1799946') OR (tabulka_zbozi.kod = 'EH2017500') OR (tabulka_zbozi.kod = 'EH2028068') OR (tabulka_zbozi.kod = 'EH2028069') OR (tabulka_zbozi.kod = 'EH2029337') OR (tabulka_zbozi.kod = 'EH2029338') OR (tabulka_zbozi.kod = 'EH2029339') OR (tabulka_zbozi.kod = 'EH2029340') OR (tabulka_zbozi.kod = 'EH2030875') OR (tabulka_zbozi.kod = 'EH2032241') OR (tabulka_zbozi.kod = 'EH2500907') OR (tabulka_zbozi.kod = 'EH2503340') OR (tabulka_zbozi.kod = 'EH2508120') OR (tabulka_zbozi.kod = 'EH3007240') OR (tabulka_zbozi.kod = 'EH3020463') OR (tabulka_zbozi.kod = 'EH3020468') OR (tabulka_zbozi.kod = 'EH3020469') OR (tabulka_zbozi.kod = 'EH3020824') OR (tabulka_zbozi.kod = 'EH3023733') OR (tabulka_zbozi.kod = 'EH3025948') OR (tabulka_zbozi.kod = 'EH3026426') OR (tabulka_zbozi.kod = 'EH3026713') OR (tabulka_zbozi.kod = 'EH3027004') OR (tabulka_zbozi.kod = 'EH3027006') OR (tabulka_zbozi.kod = 'EH3027007') OR (tabulka_zbozi.kod = 'EH3027353') OR (tabulka_zbozi.kod = 'EH3034496') OR (tabulka_zbozi.kod = 'EH4000446') OR (tabulka_zbozi.kod = 'EH4000454') OR (tabulka_zbozi.kod = 'EH4008501') OR (tabulka_zbozi.kod = 'EH4019315') OR (tabulka_zbozi.kod = 'EH4019420') OR (tabulka_zbozi.kod = 'EH4019973') OR (tabulka_zbozi.kod = 'EH5000325') OR (tabulka_zbozi.kod = 'EH5007844') OR (tabulka_zbozi.kod = 'EH5008621') OR (tabulka_zbozi.kod = 'EH5008622') OR (tabulka_zbozi.kod = 'EH5008623') OR (tabulka_zbozi.kod = 'EH5008624') OR (tabulka_zbozi.kod = 'EH5009114') OR (tabulka_zbozi.kod = 'EH5009658') OR (tabulka_zbozi.kod = 'EH5011649') OR (tabulka_zbozi.kod = 'EH5014552') OR (tabulka_zbozi.kod = 'EH5016919') OR (tabulka_zbozi.kod = 'EH6009301') OR (tabulka_zbozi.kod = 'EH6012540') OR (tabulka_zbozi.kod = 'EH7109424') OR (tabulka_zbozi.kod = 'EH7109425') OR (tabulka_zbozi.kod = 'EH7109426') OR (tabulka_zbozi.kod = 'EH7110270') OR (tabulka_zbozi.kod = 'EH7110441') OR (tabulka_zbozi.kod = 'EH7110445') OR (tabulka_zbozi.kod = 'EH7110446') OR (tabulka_zbozi.kod = 'EH7110523') OR (tabulka_zbozi.kod = 'EH7110631') OR (tabulka_zbozi.kod = 'EH7110632') OR (tabulka_zbozi.kod = 'EH7110633') OR (tabulka_zbozi.kod = 'EH7110634') OR (tabulka_zbozi.kod = 'EH7110635') OR (tabulka_zbozi.kod = 'EH7110636') OR (tabulka_zbozi.kod = 'EH7110637') OR (tabulka_zbozi.kod = 'EH7110736') OR (tabulka_zbozi.kod = 'EH7110760') OR (tabulka_zbozi.kod = 'EH7110940') OR (tabulka_zbozi.kod = 'EH7110941') OR (tabulka_zbozi.kod = 'EH7110946') OR (tabulka_zbozi.kod = 'EH7110947') OR (tabulka_zbozi.kod = 'EH7110948') OR (tabulka_zbozi.kod = 'EH7110951') OR (tabulka_zbozi.kod = 'EH7110952') OR (tabulka_zbozi.kod = 'EH7110953') OR (tabulka_zbozi.kod = 'EH7110954') OR (tabulka_zbozi.kod = 'EH7110957') OR (tabulka_zbozi.kod = 'EH7110958') OR (tabulka_zbozi.kod = 'EH7110959') OR (tabulka_zbozi.kod = 'EH7110960') OR (tabulka_zbozi.kod = 'EH7111026') OR (tabulka_zbozi.kod = 'EH7111263') OR (tabulka_zbozi.kod = 'EH7111577') OR (tabulka_zbozi.kod = 'EH7111813') OR (tabulka_zbozi.kod = 'EH7113745') OR (tabulka_zbozi.kod = 'EH7113746') OR (tabulka_zbozi.kod = 'EH7113747') OR (tabulka_zbozi.kod = 'EH7208390') OR (tabulka_zbozi.kod = 'EH7209058') OR (tabulka_zbozi.kod = 'EH7209059') OR (tabulka_zbozi.kod = 'EH7209467') OR (tabulka_zbozi.kod = 'EH7209807') OR (tabulka_zbozi.kod = 'EH7212003') OR (tabulka_zbozi.kod = 'EH7212004') OR (tabulka_zbozi.kod = 'EH7214729') OR (tabulka_zbozi.kod = 'EH7218154') OR (tabulka_zbozi.kod = 'EH7218447') OR (tabulka_zbozi.kod = 'EH7218941') OR (tabulka_zbozi.kod = 'EH7303484') OR (tabulka_zbozi.kod = 'EH7304119') OR (tabulka_zbozi.kod = 'EH7304120') OR (tabulka_zbozi.kod = 'EH7304121') OR (tabulka_zbozi.kod = 'EH7304598') OR (tabulka_zbozi.kod = 'EH7304607') OR (tabulka_zbozi.kod = 'EH7306383') OR (tabulka_zbozi.kod = 'EH7306384') OR (tabulka_zbozi.kod = 'EH7306385') OR (tabulka_zbozi.kod = 'EH7306386') OR (tabulka_zbozi.kod = 'EH7306388') OR (tabulka_zbozi.kod = 'EH7308473') OR (tabulka_zbozi.kod = 'EH7309036') OR (tabulka_zbozi.kod = 'EH7409521') OR (tabulka_zbozi.kod = 'EH7409522') OR (tabulka_zbozi.kod = 'EH7409523') OR (tabulka_zbozi.kod = 'EH7409524') OR (tabulka_zbozi.kod = 'EH7409722') OR (tabulka_zbozi.kod = 'EH7409727') OR (tabulka_zbozi.kod = 'EH7409729') OR (tabulka_zbozi.kod = 'EH7409733') OR (tabulka_zbozi.kod = 'EH7410065') OR (tabulka_zbozi.kod = 'EH7410424') OR (tabulka_zbozi.kod = 'EH7501342') OR (tabulka_zbozi.kod = 'EH7501471') OR (tabulka_zbozi.kod = 'EH7502399') OR (tabulka_zbozi.kod = 'EH7504570') OR (tabulka_zbozi.kod = 'EH7504571') OR (tabulka_zbozi.kod = 'EH7504671') OR (tabulka_zbozi.kod = 'EH7602491') OR (tabulka_zbozi.kod = 'EH7700162') OR (tabulka_zbozi.kod = 'EH7721531') OR (tabulka_zbozi.kod = 'EH7762829') OR (tabulka_zbozi.kod = 'EH8101916') OR (tabulka_zbozi.kod = 'EH9065619') OR (tabulka_zbozi.kod = 'EH9065667')) AND tabulka_zbozi.cena >= '1' AND tabulka_zbozi.cena <= '2885' AND ((tabulka_zbozi_vlastnosti.tabulka_vlastnost = 'EF000187' AND tabulka_zbozi_vlastnosti.hodnota = 'AC') AND (tabulka_zbozi_vlastnosti.tabulka_vlastnost = 'EF009556' AND tabulka_zbozi_vlastnosti.hodnota = '6'))
Kajman
Profil
Zkuste variantu se 2 parametry z Některé časteji řešené dotazy pro MySQL - FAQ » Nalezení položek mající všechny hledané vlastnosti
pajadvorak
Profil
Kajman:
upravil jsem konec dotazu:

 GROUP BY etim_zbozi.kod having count(distinct etim_zbozi_vlastnosti.etim_vlastnost, etim_zbozi_vlastnosti.hodnota) = 6

a bohužel to nefunguje, výsledek je 0

vidíte tam chybu?
Kajman
Profil
Ano, to jste neupravil dobře. Po úpravě dle FAQ by to mělo být spíše něco jako

SELECT z.kod,
       z.kod_vyrobce,
       z.kod_dodavatele,
       z.nazev,
       z.cena,
       z.cena_doporucena,
       z.popis,
       z.dostupnost
FROM   tabulka_zbozi z
       JOIN (SELECT zv.kod_zbozi
             FROM   tabulka_zbozi_vlastnosti zv
             WHERE  (zv.tabulka_vlastnost, zv.hodnota) IN ( ('EF000187', 'AC'),
                                                            ('EF009556', '6' ) )
             GROUP  BY zv.kod_zbozi
             HAVING Count(DISTINCT zv.tabulka_vlastnost, zv.hodnota) = 2) t
         ON z.kod = t.kod_zbozi
WHERE  z.kod IN ( 'EH1054350', 'EH1714832', 'EH1715136', 'EH1749823',
                  'EH1749824', 'EH1799946', 'EH2017500', 'EH2028068',
                  'EH2028069', 'EH2029337', 'EH2029338', 'EH2029339',
                  'EH2029340', 'EH2030875', 'EH2032241', 'EH2500907',
                  'EH2503340', 'EH2508120', 'EH3007240', 'EH3020463',
                  'EH3020468', 'EH3020469', 'EH3020824', 'EH3023733',
                  'EH3025948', 'EH3026426', 'EH3026713', 'EH3027004',
                  'EH3027006', 'EH3027007', 'EH3027353', 'EH3034496',
                  'EH4000446', 'EH4000454', 'EH4008501', 'EH4019315',
                  'EH4019420', 'EH4019973', 'EH5000325', 'EH5007844',
                  'EH5008621', 'EH5008622', 'EH5008623', 'EH5008624',
                  'EH5009114', 'EH5009658', 'EH5011649', 'EH5014552',
                  'EH5016919', 'EH6009301', 'EH6012540', 'EH7109424',
                  'EH7109425', 'EH7109426', 'EH7110270', 'EH7110441',
                  'EH7110445', 'EH7110446', 'EH7110523', 'EH7110631',
                  'EH7110632', 'EH7110633', 'EH7110634', 'EH7110635',
                  'EH7110636', 'EH7110637', 'EH7110736', 'EH7110760',
                  'EH7110940', 'EH7110941', 'EH7110946', 'EH7110947',
                  'EH7110948', 'EH7110951', 'EH7110952', 'EH7110953',
                  'EH7110954', 'EH7110957', 'EH7110958', 'EH7110959',
                  'EH7110960', 'EH7111026', 'EH7111263', 'EH7111577',
                  'EH7111813', 'EH7113745', 'EH7113746', 'EH7113747',
                  'EH7208390', 'EH7209058', 'EH7209059', 'EH7209467',
                  'EH7209807', 'EH7212003', 'EH7212004', 'EH7214729',
                  'EH7218154', 'EH7218447', 'EH7218941', 'EH7303484',
                  'EH7304119', 'EH7304120', 'EH7304121', 'EH7304598',
                  'EH7304607', 'EH7306383', 'EH7306384', 'EH7306385',
                  'EH7306386', 'EH7306388', 'EH7308473', 'EH7309036',
                  'EH7409521', 'EH7409522', 'EH7409523', 'EH7409524',
                  'EH7409722', 'EH7409727', 'EH7409729', 'EH7409733',
                  'EH7410065', 'EH7410424', 'EH7501342', 'EH7501471',
                  'EH7502399', 'EH7504570', 'EH7504571', 'EH7504671',
                  'EH7602491', 'EH7700162', 'EH7721531', 'EH7762829',
                  'EH8101916', 'EH9065619', 'EH9065667' )
       AND z.cena >= 1
       AND z.cena <= 2885  
pajadvorak
Profil
Tak jsem to zřejmě rozchodil... Děkuji

Potřebuji ještě rozchodit jeden dotaz

SELECT *, COUNT(etim_vlastnost) AS pocet_vyskytu FROM etim_zbozi_vlastnosti WHERE kod_zbozi IN ('EH1167961','EH1189896','EH1215371','EH1222865','EH1222866','EH1222867','EH1222869','EH1222871','EH1225081') GROUP BY nazev HAVING pocet_vyskytu > 1 ORDER BY nazev ASC

SELECT *,COUNT(nazev) AS pocet_vyskytu FROM etim_zbozi_vlastnosti WHERE kod_zbozi IN ('EH1167961','EH1189896','EH1215371','EH1222865','EH1222866','EH1222867','EH1222869','EH1222871','EH1225081') AND nazev = 'Barva' GROUP BY hodnota ORDER BY hodnota ASC

V 2. dotazu se nazev Barva bere z 1. dotazu. Potřeboval bych vytvořit jeden dotaz a z něho sestavit vše.

To znamená, že mám seznam kódů kod_zbozi IN ('EH1167961','.....). Tím vyfiltruje všechny vlastnosti. A následně s nimi potřebuji pracovat tak, že potřebuji v PHP vypsat všechny názvy (což je jen nadpis) a pod nadpis všechny názvy a hodnoty. Ale pouze jednou. V tabulce jsou samozřejmě několikrát - ke každému kodu zvlášť.

To znamená, že v tabulce to vypadá takto:

EH1167961 / barva / bílá
EH1167962 / barva / bílá
EH1167963 / barva / černá

A já potřebuji, aby výsledek byl takovýto:

BARVA
bílá (2)
černá (1)
Kajman
Profil
SELECT hodnota barva,
       Count(*) AS pocet_vyskytu
FROM   etim_zbozi_vlastnosti
WHERE  kod_zbozi IN ( 'EH1167961', 'EH1189896', 'EH1215371', 'EH1222865',
                      'EH1222866', 'EH1222867', 'EH1222869', 'EH1222871',
                      'EH1225081' )
       AND nazev = 'Barva'
GROUP  BY hodnota
ORDER  BY pocet_vyskytu DESC  

A pro vývoj si zapněte přísnější mód
dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sqlmode_only_full_group_by
ať to nepovolí takové nesmyslné dotazy, co tu dáváte.
pajadvorak
Profil
Kajman:

Ještě jsem se nevyjádřil dostatečně jasně.

Zde přikládám ukázku z tabulky:
kod_zbozi    etim_vlastnost    nazev    hodnota    jednotka     
EH1017740     EF007341     Připojitelný průřez jemně laněného vodiče bez duti...   ANO
EH1017740     EF007339     Připojitelný průřez jemně laněného vodiče s dutink...     NE
EH1017740     EF007337     Připojitelný průřez plného vodiče  ANO         
EH1017740     EF007343     Připojitelný průřez laněného vodiče     NE    
EH1017740     EF008250     Jmenovitý proud In   10 A         
EH1017740     EF000228     Jmenovité napětí   230 V         
EH1017740     EF002526     Provedení elektrického připojení 1   XXX         
EH1017740     EF002527     Provedení elektrického připojení 2      XXX    
EH1017740     EF008219     Pozice připojení   3         
EH1017740     EF002659     Počet úrovní   5         
EH1017740     EF002660     Počet svorkových míst na jedné úrovni    5             
EH1017740     EF002661     Interně přemostěná patra   NE         
EH1017740     EF000003     Způsob montáže   3         
EH1017740     EF007341     Připojitelný průřez jemně laněného vodiče bez duti...   ANO

EH1027248     EF007339     Připojitelný průřez jemně laněného vodiče s dutink...     NE
EH1027248     EF007337     Připojitelný průřez plného vodiče  ANO         
EH1027248     EF007343     Připojitelný průřez laněného vodiče     NE    
EH1027248     EF008250     Jmenovitý proud In   10 A         
EH1027248     EF000228     Jmenovité napětí   230 V         
EH1027248     EF002526     Provedení elektrického připojení 1   XXX         
EH1027248     EF002527     Provedení elektrického připojení 2      XXX    
EH1027248     EF008219     Pozice připojení   3         
EH1027248     EF002659     Počet úrovní   5         
EH1027248     EF002660     Počet svorkových míst na jedné úrovni    5             
EH1027248     EF002661     Interně přemostěná patra   NE         
EH1027248     EF000003     Způsob montáže   3

Potřebuji tedy sestavit vždy jeden název vlastnosti a k němu vypsat všechny (hodnoty + jednotky) + počet, které jsou obsahem pole "kod_zbozi IN..."


Potřebuji, aby výsledkem byl níže uvedený příklad:

Barva
- Bílá (586)
- Modrá (1)
- Rudá (1)
+ Zobrazit více
Délka
- 15 m (37)
- 18 m (1)
- 70 m (5)
+ Zobrazit více
Funkce odpojení
ANO (5)
NE (4)
Interně přemostěná patra
- 100 (44)
- 240 (1)
- 70 (5)
+ Zobrazit více
Kajman
Profil
Zkuste něco jako
SELECT etim_vlastnost,
       nazev,
       hodnota,
       jednotka,
       Count(*) AS pocet_vyskytu
FROM   etim_zbozi_vlastnosti
WHERE  kod_zbozi IN ( 'EH1167961', 'EH1189896', 'EH1215371', 'EH1222865',
                      'EH1222866', 'EH1222867', 'EH1222869', 'EH1222871',
                      'EH1225081' )
GROUP  BY etim_vlastnost,
          nazev,
          hodnota,
          jednotka
ORDER  BY nazev,
          etim_vlastnost,
          jednotka,
          hodnota  

Pak použijete v php např. něco jako Nejčastější potíže s PHP (FAQ) » Nadpis skupiny nejen při výpisu z databáze

Ale podle ukázky dat návrh databáze nedodržuje normální formy. Také ukládáte čísla jako stringy a budou se tak řadit jako stringy a ne čísla ('9' bude větší než '10').
pajadvorak
Profil
Kajman:
Super. Dal jsem to do provozu... :-)

A mám ještě problém, snad již poslední v tomto filtru. Mám zadané odeslání formuláře níže uvedeným způsobem.

$("#form_filtr_pc").click(function(){
    document.getElementById("form_filtr_pc").submit();
});


Reaguje mi to jak na zatržení checkboxu, což je žádoucí. Ale reaguje mi to i na níže uvedený kód, který mi zobrazí schované checkboxy (počet > 4) a to je nežádoucí.

<a class="link link-collapse small font-size-13 text-gray-27 d-inline-flex mt-2" data-toggle="collapse" href="#collapse<?php echo "schovat".$vlastnosti_i3; ?>" role="button" aria-expanded="false" aria-controls="collapse<?php echo "schovat".$vlastnosti_i3; ?>">
    <span class="link__icon text-gray-27 bg-white">
        <span class="link__icon-inner">+</span>
    </span>
    <span class="link-collapse__default">Zobrazit více</span>
    <span class="link-collapse__active">Zobrazit méně</span>
</a>

Jak to udělat, aby se pouze zobrazily schované checkboxy, ale neodeslal se formulář?
Kajman
Profil
Sice to nesouvísí vůbec s databázemi, ale zkuste něco jako
$("#form_filtr_pc").on('click', 'input[type="checkbox"]', document.getElementById("form_filtr_pc").submit);

Edit: A pokud u těch checkboxů bude platit, že stačí jen jedna zatržená hodnota ve skupině vlastností, tak v having porovnávejte Count(DISTINCT zv.tabulka_vlastnost) s počtem skupin, kde je zatržená alespoň jedna věc.
pajadvorak
Profil
Kajman:
To mi v konzoli píše chybu (#form_filtr_pc):

Uncaught TypeError: Illegal invocation
at HTMLFormElement.dispatch (jquery.min.js:2)
at HTMLFormElement.y.handle (jquery.min.js:2)
dispatch @ jquery.min.js:2
y.handle @ jquery.min.js:2

EDIT: u těch checkbxoů to platí, ale teď asi nevím, jak má ten dotaz konrkétně vypadat

SELECT etim_vlastnost, nazev, hodnota, jednotka, Count(*) AS pocet_vyskytu FROM etim_zbozi_vlastnosti WHERE kod_zbozi IN () GROUP BY etim_vlastnost, nazev, hodnota, jednotka ORDER BY nazev, etim_vlastnost, jednotka, hodnota
Keeehi
Profil
pajadvorak:
To mi v konzoli píše chybu (#form_filtr_pc):
Bude to mít zřejmě problém s tím callbackem. Dej tam anonymní funkci jako ve tvém příkladu a měl bys být v pohodě.
pajadvorak
Profil
pajadvorak:
$("#form_filtr_pc").click(function(){
    document.getElementById("form_filtr_pc").submit();
});

Jak to prosím myslíš?

$("#form_filtr_pc").click(function(){
    document.getElementById("form_filtr_pc").submit();
});

Toto sice funguje, ale neřeší to můj problém...
Keeehi
Profil
$("#form_filtr_pc").on('click', 'input[type="checkbox"]', function(){
    document.getElementById("form_filtr_pc").submit();
});
pajadvorak
Profil
Keeehi:
Super, toto funguje parádně, děkuji
pajadvorak
Profil
Keeehi:
$("#form_filtr_pc").on('click', 'input[type="checkbox"]', function(){
    document.getElementById("form_filtr_pc").submit();
});

Ještě mám jeden problém. Nevím jak mám vložit onMouseUp namísto click. Potřebuji, aby se formulář odeslal po uvlonění tlačítka myší nad prvkem.

Níže uvedený kód nefunguje. Problém je, že se mění cena, ale formulář se při "change" odesílal de facto hned... :-(
$("#form_filtr_pc").on('MouseUp', 'input[type="checkbox"]', function(){
    document.getElementById("form_filtr_pc").submit();
});
Keeehi
Profil
pajadvorak:
Zkus to malýma ;)
a trochu googlit by taky nezaškodilo
pajadvorak
Profil
Keeehi:
Tak bohužel nefunguje. Nevím, zda je to tím <inputem>. A nevím jak to vyřešit. Víš jak na to?

<input id="filtr_1_cena" class="js-range-slider" name="cena" type="text"
                                                    data-extra-classes="u-range-slider u-range-slider-indicator u-range-slider-grid"
                                                    data-type="double"
                                                    data-grid="false"
                                                    data-hide-from-to="true"
                                                    data-prefix="Kč"
                                                    data-min="<?php echo $cena_min; ?>"
                                                    data-max="<?php echo $cena_max; ?>"
                                                    data-from="<?php echo $cena_from; ?>"
                                                    data-to="<?php echo $cena_to; ?>"
                                                    data-result-min="#rangeSliderExample3MinResult"
                                                    data-result-max="#rangeSliderExample3MaxResult">


javascript
$("#form_filtr_pc").on('mouseup', 'input[id="filtr_1_cena"]', function(){
      document.getElementById("form_filtr_pc").submit();
});
Keeehi
Profil
pajadvorak:
Nevím, zda je to tím <inputem>.
Řekl bych že ano. Na ten input reálně neklikáš. Máš tam javscriptem nahrazené něco jiného. To je to na co klikáš.
Proto selector input[id="filtr_1_cena"] musí být něco jiného. Co? No to záleží čím to ten javascript nahradil.

Nicméně, tobě jde o to odeslat formulář když změníš hodnotu nějakého inputu. Tak nekontroluj kde se na co klikne (protože třeba zatrhnout checkbox dokážu jen s klávesnicí aniž bych potřeboval myš, takže ten click bych ti stejně nespustil) a kontroluj to co chceš - změnu hodnoty inputu. Ano, i na to existuje event. Dokonce by to mělo fungovat i na ten javascriptový range, protože tuším, že na pozadí bude měnit hodnotu toho inputu.

Takže vše co celé co potřebuješ bude
$("#form_filtr_pc input").change(function(){
    document.getElementById("form_filtr_pc").submit();
});
A všechno ostatní odesílání můžeš asi odstranit, jelikož tohle zajistí všechno. A bude to fungovat I když člověk použije klávesnicí.
Jen bude dobré se podívat na tu javascriptovou range náhradu, jestli hodnotu zdrojového inputu mění kontinuálně nebo až po pouštění. Pokud by to bylo kontinuálně, což asi nechceš, tak se koukni na možnosti nastavení při inicializace. Zrovna tohle by mohlo být konfigurovatelné.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0