PHP, JQuery Ukladanie vstupov z poloziek vyhladavania

Programovacie jazyky, rady, poradňa...
Everhard
Light Expert
Light Expert
Príspevky: 79
Registrovaný: 25 dec 2010, 14:41

PHP, JQuery Ukladanie vstupov z poloziek vyhladavania

Príspevok od používateľa Everhard »

Dobry,
mal by som 3 otazky. Jednu tu, a dve nakonci prispevku: 1. Aky je vhodny sposob ukladat vstupne data z vyhladavacieho formulara?
Ukladanie ma sluzit pre opatovne navstivenie vyhladavacieho formulara, aby ich pouzivatel nemusel znovu zadavat. A ma sluzit pre to, aby sa pri zmene ktorehokolvek jedneho vstupu, hned pomocou jquery obnovovali vysledky hladania v nejakom DIV tagu.

Napadlo ma ukladat vsetko do SESSION alebo do COOKIE, bud kazdy vstup ako zvlast polozka. Alebo ma napadlo, co som videl pri jednom webe, ukladat komplet retazec (napr. item1=toato&item2=estenieco&item3=asdf)


Ked som pozeral vselijake zdrojove kody JQuery, ktore odosielaju formular, prisiel mi uzitocny tento navod:
http://net.tutsplus.com/tutorials/javas ... ng-jquery/

Problem je ale, ked ukazuju, ako sa robi volanie obnovenia stranky, ze vsetky prvky z formularu treba odoslat do "data":

Kód: Vybrať všetko

var dataString = 'name='+ name + '&email=' + email + '&phone=' + phone;
type: "POST",
url: "bin/process.php",
data: dataString,
Na to som pozeral, ze JQuery ma sikovnu funkciu Serialize() - http://api.jquery.com/serialize/

Ale problem je, ked mam checkboxy s multi vyberom, ktore ukladam do pola:

Kód: Vybrať všetko

<input type="checkbox" name="abc[]" value="xx1"/>
<input type="checkbox" name="abc[]" value="xx2"/>
<input type="checkbox" name="abc[]" value="xx3"/>
Preto sa chcem opytat, preco oni v tom Serialize() nedavaju multiselect z tagu SELECT do pola, ale len obycajne:

Kód: Vybrať všetko

    <select name="multiple" multiple="multiple">
      <option selected="selected">Multiple</option>
      <option>Multiple2</option>

      <option selected="selected">Multiple3</option>
    </select>
, lebo potom im vznikne nieco taketo:
single=Single&multiple=Multiple&multiple=Multiple3&check=check2&radio=radio1

Ked s tym zavolam subor, v $_GET bude iba jeden multiple:

Kód: Vybrať všetko

Array
(
    [single] => Single
    [multiple] => Multiple3
    [check] => check2
    [radio] => radio1
)
Ale po upraveni kodu na:

Kód: Vybrať všetko

    <select name="multiple[]" multiple="multiple">
      <option selected="selected">Multiple</option>
      <option>Multiple2</option>

      <option selected="selected">Multiple3</option>
    </select>
Vrati Serialize() tento retazec, co je uz dobry:
single=Single&multiple%5B%5D=Multiple&multiple%5B%5D=Multiple3&check=check2&radio=radio1

Takze tu mam otazky 2. a 3. Tie znaky %5B%5D nebudu robit problem v roznych browseroch?
Zdroj stranky JQuery si vazim, a preto preco oni nepouzivaju ukladanie do pola [] z multi selectu?
Idem sa do toho pustit, len este neviem ako funguje to JQuery s obnovovanim obsahu stranky, len nejake dema som skusal u seba na kompe zatial.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: PHP, JQuery Ukladanie vstupov z poloziek vyhladavania

Príspevok od používateľa audiotrack »

1 si si zodpovedal, serializovať všetky hodnoty je bežná vec. Takto sa výsledky ukladajú aj v praxy. Znaky %5B a %5D problémy robiť nebudú, a jquery je spravené tak ako je, lebo to dáva logiku. Bežne sa dáva name takýchto elementov ako pole, takže sa ráta v jquery s tým že ho tak budeš mať pomenované. Potom ti to fungovať bude. To že si dal multiselectu blbé meno je tvoja chyba, v php by si tiež získal len poslednú hodnotu či to budeš robiť cez serialize v jquery alebo nie. Takže si prepíš name v html a pridaj tam tie hranaté zátvorky
Everhard
Light Expert
Light Expert
Príspevky: 79
Registrovaný: 25 dec 2010, 14:41

Re: PHP, JQuery Ukladanie vstupov z poloziek vyhladavania

Príspevok od používateľa Everhard »

Vdaka ti za odpovede z tvojho pohladu.
Ten priklad s multiselectom kde bol atribut name="multiple" bol z tej stranky JQuery, preto som sa pytal. Ze oni tam asi zabudli dat hranate zatvorky.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: PHP, JQuery Ukladanie vstupov z poloziek vyhladavania

Príspevok od používateľa audiotrack »

keď si pozreš dokumentáciu na .serialize() na stránkach jQuery, tak tam máš písané presne o tomto probléme. Čiže zrejme to dali iba ako príklad aby si videl čo sa deje a prečo to tak nemá byť
The .serialize() method can act on a jQuery object that has selected individual form elements, such as <input>, <textarea>, and <select>.
Napísať odpoveď