Pereiti prie turinio

Apklausų kūrimas


Rekomenduojami pranešimai

Sveiki,

 

kuriu apklausų modulį savąjai sistemai ir susidūriau su problema, kurią nežinau kaip išspręsti.

 

Taigi nuo pradžių:

duomenų bazėje turiu tris lenteles, kurios priklauso apklausoms: polls, polls_answers, polls_votes.

 

polls lentelėje yra poll_id, poll_question ir kt.

polls_answers lentelėje yra answer_id, answer_poll, answer_text ir kt.

polls_votes lentelėje yra vote_id, vote_answer, vote_ip ir kt.

 

Kadangi apklausoje gali būti ir du atsakymai, ir dvidešimt, todėl pasirinkau tokią struktūrą. Taip pat nebus leidžiama tam pačiam ip balsuoti tam tikrą laiką, tad ir votes lentelę pridėjau.

 

Kuriant naują apklausą, formoje turiu inputą name="answers[]", kurį per foreach prasuku ir visas reikšmes insertinu į polls_answers lentelę.

 

Problema yra tame, kad nežinau, kaip padaryti apklausos redagavimą.

Pvz. redaguoju apklausą ir ištrinu vieną atsakymą, kitą pakeičiu ir pridedu dar vieną naują, tuomet noriu išsaugoti jau pataisytą apklausą, tad kaip tai padaryti neištrinant visų su ta apklausa susijusių atsakymų ir neįrašant juos iš naujo (nes tokiu atveju būtų prarasti balsai).

 

Berašydamas šią temą, pagalvojau, kad tai galėčiau atlikti su jQuery ir ajax (ištrinant - on click panaudoti, o keičiant ar pridedant naują - on change), bet galbūt kas nors pasiūlys geresnį variantą.

 

Ačiū.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Taip kaip pridedi naujus atsakymus, taip juos ištrini ar redaguoji. Viskas pagrįsta pagal unikalų atsakymo ID, kurį saugai duombazėj. O jau kaip įgyvendinsi, ar su ajax ar paprastai perkraunant puslapį, tai visiškai nėra skirtumo. Sugeneruoji formą, kurioj sustatai inputus su atsakymų ID, o vėliau nuspaudus atnaujinimo knopkę serverio pusėj sulygini kas pasikeitė ir atitinkamai pakoreguoji.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tai va su tuo palyginimu ir nežinau kaip padaryt. Su Ajax - viskas ok, ištrinu, redaguoju, bet paprastai kaip padaryt su PHP nesugalvoju, nes inputas yra array (answers[]), o value yra tik atsakymo tekstas...

 

Viską dabar padariau su Ajax (ant inputų susidėjau data-id), bet būtų gerai sužinoti kaip ir be jo būtų galima padaryti...

Redagavo Donatis07
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Aš daryčiau šiek tiek kitaip, į pool_question dėčiau serialized array informacija su klausimai, tuomet norint redaguoti, tu tiesiog ištrini, pridedi tam tikrus elementus į array.

 

Pvz:

 

 

$array = array("q1" => "Klausimas vienas", "q2" => "du", "q3" =>"trys");

 

 

Panaikinti įrašą:

unset($array['q2']);

 

ir t.t apdoroji info, bent jau aš taip daryčiau, vietoj to kad kiekvieną klausima dėt į atskira db eilutę.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

O jeigu redaguojant isvest id to klausimo ir submitinus tikrinant cikle ar masyvo raktas yra tokios strukturos, o ne skaicius. Ir pagal tai idet nauja arba atnaujint, o istrint tai paselektint klausimus, ir zet ar $_POST toks raktas su tokiu id egizstuoja priesingu atveju istrinti.

 

pvz.:

  <input name="data[]" /> // -- cia su jquery indejai
  <input name="data[nr_id]" /> // cia is seniau

Nuoroda į pranešimą
Dalintis kituose puslapiuose

na šiuo metu, kaip ir sakiau, viską padariau su Ajax, bet norėčiau išgirsti Tavo patarimą, kaip viską atlikti teisingai...

Kaip ir viską juk tau pasakė – kur redaguoji apklausos atsakymus, išsivedi formą su visais jais ir gavęs formą darai UPDATE.

<input type="text" name="answer[4]" value="Taip">
<input type="text" name="answer[5]" value="Ne">

Kur 4/5 – atsakymų ID. Jei tik PHP'e taip veikia daugybiniai POST parametrai :) Nematau, kame problema. Keista, kad su AJAX gaunasi, o be AJAX – jau ne.

Naujiems atsakymams pridėti tuo tarpu gali naudoti kokį nors kitą raktą, tiesiog paprastai, be ID.

<input type="text" name="answer_new[]" value="Taip">
<input type="text" name="answer_new[]" value="Ne">

 

Aišku, reik nepamiršt teisių tikrinimo, kad tų ID nepakeistų į sau nepriklausančius :)

Redagavo Silke
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...