Autor Zpráva
peteruu
Profil *
Zdravím, snažím sa vytvoriť posuvný slider ako je napr. tady czc.cz, konkrétne "vybrat dle ceny" ako som postrehol na tej stránke sa parametre z slidera predávajú do url adresy... Chcem zostaviť niečo podobné len sa mi nedarí ich dostať do url adresy.
Prečo ich chcem dostať do url adresy?... chcem si ich v PHP skripte načítať a potom podľa nich filtrovať záznamy. Kludne to nemusi byť v url adrese mohlo by to byt aj v sessions ( s čím sú ako som sa dočítal len problémy pokial ide o jquery) alebo do cookies, ale s tým som sa tiež nikam nedostal..
slider mám iplementovaný podľa dokumentácie jquery.
Díky za každé nakopnutie..

Peter
Radek9
Profil
peteruu:
Při změně toho posuvníku zřejmě budeš PHP posílat AJAXem data, aby ti vrátil správné výsledky, ne? Tak mu prostě přes POST/GET pošli minimální a maximální cenu. Do adresy to můžeš dát např. pomocí window.location.hash nebo window.history.pushState.
peteruu
Profil *
diky, tiez som rozmyslal o danej možnosti lenže nemám nejaké extrémne dobré skúsenosti s jquery, a preto som to nevedel zrealizovať hlavne čo sa týkalo tej adresy.. nevedel som čo tam napísať.. a predpokladám teda že window.location.hash robí niečo také že zoberie aktuálnu adresu.. správne.. ? resp. nevedel by si to podrobnejšie akosi rozpísať..
Radek9
Profil
peteruu:
Ten hash je část adresy za #. Buďto ho z té vlastnosti můžeš získat, nebo tam můžeš uložit nový.
alert(window.location.hash);
window.location.hash = "novy-hash";
peteruu
Profil *
zatial mam spraveny základ
$(function() {
    $sliderValue="";
        $( "#slider-range" ).slider({
            range: true,
            min: 1870,
            max: 2020,
            values: [ 1870, 2020 ],
            slide: function( event, ui ) {
            if ( ui.values[ 0 ]==1870) 
                $( "#amount" ).val( 0 + " - " + ui.values[ 1 ] )
            else
                $( "#amount" ).val( ui.values[ 0 ] + " - " + ui.values[ 1 ] );
            }

        });
        $( "#amount" ).val( 0 +    " - " + $( "#slider-range" ).slider( "values", 1 ) ); 
        
    });
a asi tam bude teda treba pridat ten hash.. cize ked sa zmeni udalost v slider myslim ze by sa to mohlo cez udalost "stop" a tam ze by som doplnil nieco podobne

        $(window).location.hash = $(this).attr('rok1');
            $.ajax({
                type: "POST",
                url: current_url,
                dataType: "html",
                data:'rok1='+ui.values[ 0 ]+"&rok2="+i.values[ 1 ], 
                })
pricom chcem aby tie atributy rok1 a rok2 boli premenna v url adrese ktore by som v php kode rovno aj nacitaval a podla toho filtroval idem nato spravne.. ? Ten hash som cerpal z tadialto a ako som pisal neviem s tym velmi robit tusim hned prvy riadok je zle..


Zatial som sa dostal k tomu ze mam vsetky premenne v URL kod vypada takto
$(function() {
        $( "#slider-range" ).slider({
            range: true,
            min: 1870,
            max: 2020,
            values: [ 1870, 2020 ],
            slide: function( event, ui ) {
            if ( ui.values[ 0 ]==1870) 
                $( "#amount" ).val( 0 + " - " + ui.values[ 1 ] )
            else
                $( "#amount" ).val( ui.values[ 0 ] + " - " + ui.values[ 1 ] );
            },
            stop: function(event, ui) {
             window.location.hash = 'rok1='+ui.values[ 0 ]+"&rok2="+ui.values[ 1 ];
            }
        });
        $( "#amount" ).val( 0 +    " - " + $( "#slider-range" ).slider( "values", 1 ) ); 
    
    });
ale čo dalej.. ako ich pouzijem k tomu aby sa dali podla nich filtrovat zaznamy.. $_GET['rok1'] mi to nebere je potrebne nejak refreshnut stranku alebo co.. co s tym.. ? nejaky nápad
peteruu
Profil *
Zdravím, zatiaľ som dospel k nasledovnému riešeniu (ktoré robí síce reload stránky ale funkcionalita je taká akú som požadoval)
stačilo zmeniť udalosť "stop" na nasledujúcu
stop: function(event, ui) {
             location.reload();
             window.location.search = 'rok1='+ui.values[ 0 ]+"&rok2="+ui.values[ 1 ];
            }

Radek9 skúšal som to cez ten hash ale nakoniec som zistil že ten sa v podstate ani neposiela na server a teda php ho nevie spracovať.. takže location.search to umí. Ale to si iste vedel. V prípade ak viete o nejakom riešení aj bez reloadu stránky.. bol by som velice vďačný.
Zatiaľ díky za rady.

Peter
Radek9
Profil
peteruu:
PHP ho sice nepřečte, ale celá ta aplikace je psaná v JS, takže podle mě není problém po načtení stránky hash načít JavaScriptem a poslat ho PHP.

Pokud chceš upravovat query string, psal jsem ti v [#2], že je možné použít window.history.pushState (v novějších prohlížečích). Tato funkce ho změní bez reloadu stránky.
peteruu
Profil *
no ked pouzijem window.history.pushState adresa sa sice zmeni.. ale stale som v tom javascripte, čiže aj tak musím data poslať cez POST/GET a s tým som mal akosi problém nevedel som to zapísať. Mám niečo takéto
  $.ajax({
type: "POST",
url: "/pozicovna_dvd/projekt1.final/zobrazit_serialy.php",
data: "rok1="+rok1+"&rok2="+rok2,  
success: function(html){
    //kod

}
});
no niekde bude chyba lebo mi to nefunguje resp. neviem čo tam doplniť
Radek9
Profil
peteruu:
Jak přesně nefunguje? V proměnné html bys měl mít obsah toho souboru (tedy zřejmě správné produkty). Stačí tuto proměnnou zapsat do innerHTML nějakého elementu.
peteruu
Profil *
dodávam živú ukážku nech je všetko jasné http://www.peteruu.chytry.cz/serialy na tejto stranke je slider.. ktory sa zobrazi po kliknuti na zobrazit filter.. vsetko je to len testovacie.. tak omluvte spracovanie... Teraz to funguje tak ze parametre sa davaju do url adresy noo a ten POST prikaz akosi neviem sformulovat... vedeli by ste mi teda nejaký postup ako to udelat vzhladom na danú štruktúru stránky.
peteruu
Profil *
Tak už som skonštruoval aj ten POST
.ajax({
            type: "POST",
            url: "/pozicovna_dvd/projekt1.final/zobrazit_serialy.php",
            data: "id2=2",  
            success: function(html){
            $("div#obsah").empty();
            $("div#obsah").hide().append(html).fadeIn('slow');
            }
            });

fungovať to funguje lenže kedze tam davam odstranit div#obsah... a potom ho chcem naplnit novymi datami... lenze dáta ktoré prijmem sú komplet celá stránka pretože všetko je to do seba tak vnorené že si neveim vytiahnuť len čisto dáta... nie je nejaká možnosť v tom append že by vložil len určitý obsah elementu z nových dát napr. ten #obsah, tým by sa to všetko vyriešilo si myslím.
Radek9
Profil
peteruu:
Musíš si vytvořit nějaký speciální soubor, který bude podle POST dat vracet pouze ty boxy. A ty potom načteš do toho divu.
peteruu
Profil *
a nie je je nejaká možnost v tom append nejak vyfiltrovat len tu čast html ktorú potrebujem.. ?
Radek9
Profil
peteruu:
Proč načítat zbytečně víc kódu a ořezávat to? Brání ti něco udělat samostatný soubor?
peteruu
Profil *
noo to ma nenapadlo s tým objemom dát.. skúsim to uvidím čo to vypluje... ja som to mal aktualne spravene ako funkciu v jednom hlavnom subore kde je vsetko nahadzane.. a neviem presne ako to bude s premennymi.. ale mam pocit ze to aj tak bude najlepsie riesenie takto to vybavit.. večer to nakódim.. potom sa ozvem ako to dopadlo... zatiaľ díky za rady...
peteruu
Profil *
noo akurat som to dokoncil.. premenne sa odovzdavaju aj obsah sa aktualizuje podla predstav.. takze uz to ide... diky za rady seš borec.
Radek9
Profil
Nemáš zač. ;-)
peteruu
Profil *
servus prosím ťa pozrel by si sa ešte na jednu vec, resp. ktokoľvek iný, http://www.peteruu.chytry.cz/serialy už to ide všetko ako má, len je tam jeden problém s tým že ked sa v sekcii serialý prepnem na druhú stranu, vobec sa ten filter neukazuje.. teda ten slider.. (pricom dotazy sa vykonavaju dobre) ide proste o to ze uzivatel si nemoze filtrovat zaznamy ked sa nachadza na hocijakej stranke tvaru serialy/strana-[cislo strany] neviem ci moze mat nato vplyv aj htaccess ...pripadne myslim ze by mohlo byt nieco zle v javascripte zapisane.. ale neviem co.. na nastavovanie parametrov resp. v javascripte vyuzivam jeden cookie plugin...
peteruu
Profil *
problém som už vyriešil, neprestáva ma udivovať výhoda firebug, mal som špatne nadefinovanú cestu k súboru s funkciou na spracovanie cookies pre javascript, takže pri načítaní druhej stránky v podstate cookie funkcia nebola načítaná a teda sa nemohla ani vykonávať.. :) ak náhodou niekto bude riešiť to isté.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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

0