Pereiti prie turinio

Dėl sesijų PHP


Rekomenduojami pranešimai

Susidūriau su užduotėle:

 

Tarkime yra 3 nuorodos kurios išskleidžia tam tikrą sąrašą. Paspaudus ant nuorodos (pliusiukas) jis pasidaro minusasir išsiskleidžia sąrašas bei sukuriamas $rowprekes['iskleistia'] = 1; toliau aš noriu išskleisti kitą pliusiuką ir spaudžiu ant jo, bet čia atsiranda problema, užsidaro tas pirmasis pliusiukas...

 

Man reikia kažkokiu būdu išsaugoti informacija, kad tas pirmasis yra išskleistas.

 

Galiu sukurti masyve dar vieną elementą kad tas ID yra išskleistas, bet kai išskleidžiu kita elementas yra perkuriamas ir aišku tas pirmasis dingsta.

 

Bandau daryti su sesijomis

 

$sesijos_duomenys = array(
               'iskleista_preke' => $id
           );
           $this->session->set_userdata($sesijos_duomenys);

 

Čia susikuria sesija kurioje yra iskleistos prekes ID ir aš tikrinčiau pagal tos sesijos duomenys kam dėti pliusą, o kam ne, bet vėl gi kai atidarau kitą prekę sesija persirašo, gal yra kokių pasiūlymų?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pabandysiu su Flash data, galvojau dar gal kaip nors per cookies galima suorganizuoti, o dalyką daryti per JS kurį ir per PHP nelabai suprantu tai čia dar blogiau būtu manau.

Blogiau jau buti tikrai negali, patikek. O su js tai cia pora eiluciu. Sumeti 3 buttonus ir 3 divus. Ir tooglini klases ant ju. Toi padarisiu.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
<script>
jQuery(document).ready(function(){
jQuery('button').click(function(){
	var current_index = jQuery(this).index();
	jQuery('div').hide();
	jQuery('div:eq('+current_index+')').show();
});
});
</script>
<style>
.hide{
display: none;
}
</style>

<button type="button">Tab 1</button>
<button type="button">Tab 2</button>
<button type="button">Tab 3</button>

<div>Text for tab1</div>
<div class="hide">Text for tab2</div>
<div class="hide">Text for tab3</div>

 

Paprasti kaimetiski tabsai.

 

Aplamai, dabar be UI web-developingo nera. As pats esu back-end programuotojas, bet 70% darbo atlieku su front-end...

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tai čia paprastas show hide būtu man tas netinka nes startinėje pozicijoje jokių traukimų nevyksta, tik tada kada išskleidi.

Išskleidžiam sąrašą ir tada jis turi likti atidarytas ir kai išskleidžiam kitą sąrašą vėl vykdoma SQl užklausą ir įkeliamas kitas sąrašas kitai prekei.

 

Bandau dabar su flashdata bet toks pat rezultatas kaip ir su paprastom sesijom:

 

$this->session->set_flashdata('iskleisti', $id);

$data['sesijos'] = $this->session->flashdata('iskleisti');

 

Tas data[sesijos] man isves ID kuri pliusiuka paspaudžiau, bet kai aš spaudžiu kitą persikuria sesija.

 

O man reikėtu kažkur kažkaip išsaugoti kad pvz: id 111 = iskleistas, id 222 = iskleistas

Tada daryčiau if sąlygą ir tikrinčiau pagal šiuos duomenys kurie yra išskleisti o kurie ne.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tai čia paprastas show hide būtu man tas netinka nes startinėje pozicijoje jokių traukimų nevyksta, tik tada kada išskleidi.

Išskleidžiam sąrašą ir tada jis turi likti atidarytas ir kai išskleidžiam kitą sąrašą vėl vykdoma SQl užklausą ir įkeliamas kitas sąrašas kitai prekei.

 

Bandau dabar su flashdata bet toks pat rezultatas kaip ir su paprastom sesijom:

 

$this->session->set_flashdata('iskleisti', $id);

$data['sesijos'] = $this->session->flashdata('iskleisti');

 

Tas data[sesijos] man isves ID kuri pliusiuka paspaudžiau, bet kai aš spaudžiu kitą persikuria sesija.

 

O man reikėtu kažkur kažkaip išsaugoti kad pvz: id 111 = iskleistas, id 222 = iskleistas

Tada daryčiau if sąlygą ir tikrinčiau pagal šiuos duomenys kurie yra išskleisti o kurie ne.

 

http://www.thealmightyguru.com/Humor/Docs/ShootYourselfInTheFoot.html

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tu bent jau mano temose gali išvis nerašyti daugiau, nes nei vienoje konkrečiai nepagelbėjai, tą padarė kažkas kitas, o iš tavęs su laukiama tik trolinimo ir aiškinimu koks tu kietas esi, žinok niekam neįdomu koks tu esi nerealus.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tu bent jau mano temose gali išvis nerašyti daugiau, nes nei vienoje konkrečiai nepagelbėjai, tą padarė kažkas kitas, o iš tavęs su laukiama tik trolinimo ir aiškinimu koks tu kietas esi, žinok niekam neįdomu koks tu esi nerealus.

tai jeigu tu gryba pjauni. Koks tolkas kazka daryti, jeigu tai yra blogai. Tu jug nevazioji ant autobuso stogo tik del to kad viduje nera sedejimo vietu?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tu bent jau mano temose gali išvis nerašyti daugiau, nes nei vienoje konkrečiai nepagelbėjai, tą padarė kažkas kitas, o iš tavęs su laukiama tik trolinimo ir aiškinimu koks tu kietas esi, žinok niekam neįdomu koks tu esi nerealus.

labai teisingai viską pasako. o šiaip, tau net nereik čia jokių sesijų įrašinėt, naudok paprastą js, o jei reikia įrašinėt kažką kažkur į mysql, naudoj ajax.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

tai jeigu tu gryba pjauni. Koks tolkas kazka daryti, jeigu tai yra blogai. Tu jug nevazioji ant autobuso stogo tik del to kad viduje nera sedejimo vietu?

Atsičiūchink tu žmogau, koks tolkas tau čia dabar išvis atrašinėti tu gi dievas esi, "tau moka už tai kad esi teisus", o tau čia kas moka? Klausimas retorinis gali neatsakinėti, spausk mygtuką "unsubscribe" ir good luck jei kursiu kokią temą ir joje atrašysi tai bus ignoruojama, dėl manęs tai gali tu rinktis tuos postus tik ką tu su jais daryti nežinau.

 

labai teisingai viską pasako. o šiaip, tau net nereik čia jokių sesijų įrašinėt, naudok paprastą js, o jei reikia įrašinėt kažką kažkur į mysql, naudoj ajax.

Tame ir yra reikalas kad į MySQL (mano atveju tai Firebird) įrašinėti nieko negaliu tik vykdyti tam tikras pateiktas procedūras, bet čia ne apie tai, esmė tame jos tie sąrašai yra labai dideli ir man reikia kad paspaudus pliusa išsiskleistu tai prekei priskirtas elementas ir jis liktu atidarytas tol kol nepaspausiu jį uždaryti atidarius kitą būtu jau abu atidaryti. Kas kart paspaudus pliusą yra vykdoma SQL užklausa ir tik tada, nežinau gal ir reikia per ajax bandyti išskleisti tada ir liks išskleistas nes puslapis nesirefreshins, bet kyla kita problema, po puslapio refresh turi likti irgi išskleisti...

Redagavo kiladila
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Cia tesiog panasi situacija http://i.stack.imgur.com/ssRUr.gif

Ilgiau užtrunki ieškodamas visokių ale kietų sąmojų ir nuorodų nei bandydamas padėti, apgailėtina. ne lygis tau čia, aš irgi žinau situacija tokią panašią kai skaito straipsnį kuris yra jiems neįdomus ir paskui pasipiktine rašo komentarą kam jūs rašot tokias nesąmones? O kam tu skaitai tada jei tau neįdomu? Yra tam kam tai gali pasirodyti įdomu.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Cia tesiog panasi situacija http://i.stack.imgur.com/ssRUr.gif

matai, užsirovė ant tavęs :D nieko, supras kokia reikalinga pagalba :D

 

 

tau reikia naudoti tik ajax ir jquery, paprasčiausiai paspaudus išskleisti, su ajax užpildysi išskleistą vietą reikalinga informacija, o išskleistos lentelės klasę pakeisi į kitą (išskleistos). Tuomet susikuri onclicką (bet daug paprasčiau su paprasta fja pagal id) ir pasirašai tarkim ShowHideTable(table_nr, pagal_ką_imti_iš_mysql). O nežinau ar esu teisus, bet manau, kad tikrai eina perkrovus puslapį išlaikyt seną js struktūrą, pamenu skaičiau kažką panašaus http://apieviska.info :D ten su dom lygtais, nepamenu tiksliai

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Atsičiūchink tu žmogau, koks tolkas tau čia dabar išvis atrašinėti tu gi dievas esi, "tau moka už tai kad esi teisus", o tau čia kas moka? Klausimas retorinis gali neatsakinėti, spausk mygtuką "unsubscribe" ir good luck jei kursiu kokią temą ir joje atrašysi tai bus ignoruojama, dėl manęs tai gali tu rinktis tuos postus tik ką tu su jais daryti nežinau.

Na kad patrolinti as megstu - cia tai faktas, bet yra ir kitas dalikas.As irgi kartais freelancinu ir daznai pasitaiko proektu, kurios reikia redaguoti ir esme tame, kad labai daug zmoniu ir sitame forume ir kitur teikia skirtingas paslaugas su pvz "7 metu patirtimi" kai paciam vos 19 yra, ar su "5 metu" ir nezino kam naudoti "var_dump". Tai vat esme tame kad tavo dabar atliekamas darbas gali po metu patekti man, o gal kam kitam ir jam tikrai bus liudna.

 

Tad jeigu tu nori tapti geru progrmuotoju (web, ar ne web) tau anksciau ar veliau vistiek reikes ismokti ir js, ir jQuery, ir Mootools, ir LESS, ir CoffeeScript ir daug daug ko, bet ar nebus pervelu?

 

O kas del manes, ok, be problemu, dugiau nekomentuosiu tavo kietu sprendimu.

 

Ilgiau užtrunki ieškodamas visokių ale kietų sąmojų ir nuorodų nei bandydamas padėti, apgailėtina. ne lygis tau čia, aš irgi žinau situacija tokią panašią kai skaito straipsnį kuris yra jiems neįdomus ir paskui pasipiktine rašo komentarą kam jūs rašot tokias nesąmones? O kam tu skaitai tada jei tau neįdomu? Yra tam kam tai gali pasirodyti įdomu.

 

As ju neieskau, as jas ir taip visas zinau. O jei tu nori kad as uz tave parasyciau visa proekta, tai sumokek man, kitokiu atveju http://bit.ly/12lqTyN

Redagavo apieviska
Nuoroda į pranešimą
Dalintis kituose puslapiuose

$(function() {

   if (localStorage) {
       if (!localStorage.getItem('visited')) { // jeigu nebuvo paspausta (visited)
           //nieko nedarom
       }
   } else {
       $('#dropmeniu').show(); // parodom, nes buvo išseivinta kaip atidaryta.
   }

 

kaip išseivinti?

 

$('#drop-show').click(function() {
       $('#dropmeniu').show('fast');
       localStorage.setItem('visited', true); // priskiriam tam divui, kad jis jau visited
       return false;
   });

 

va ir atsakymas, nereiks jokių sesijų įrašinėt, ir naudot reiktų toggle manau, o ne show ir hide.

Redagavo gio
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na kad patrolinti as megstu - cia tai faktas, bet yra ir kitas dalikas.As irgi kartais freelancinu ir daznai pasitaiko proektu, kurios reikia redaguoti ir esme tame, kad labai daug zmoniu ir sitame forume ir kitur teikia skirtingas paslaugas su pvz "7 metu patirtimi" kai paciam vos 19 yra, ar su "5 metu" ir nezino kam naudoti "var_dump". Tai vat esme tame kad tavo dabar atliekamas darbas gali po metu patekti man, o gal kam kitam ir jam tikrai bus liudna.

 

Tad jeigu tu nori tapti geru progrmuotoju (web, ar ne web) tau anksciau ar veliau vistiek reikes ismokti ir js, ir jQuery, ir Mootools, ir LESS, ir CoffeeScript ir daug daug ko, bet ar nebus pervelu?

 

O kas del manes, ok, be problemu, dugiau nekomentuosiu tavo kietu sprendimu.

Užtektu ir paskutinės eilutės, sugaišau 5 sekundes beprasmį tekstą skaidydamas. Ačiū viso gero, susidegink.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

kiladila, kaip jau daug kas pasakė, naudok JS. Su javascript'u gali saugoti cookius, juose ir saugok tavo dabartinio medzio būseną. Pavyzdžiui, turi tokią struktūrą:

 

<ul id="tree">
  <li><a href="#" class="dropdown">Kategorija 1</a>
      <ul>
         <li><a href="#">Pirmos kategorijos elementas 1</a></li>
         <li><a href="#">Pirmos kategorijos elementas 2</a></li>
         <li><a href="#">Pirmos kategorijos elementas 3</a></li>
      </ul>
  </li>
  <li><a href="#" class="dropdown">Kategorija 2</a>
      <ul>
         <li><a href="#">Antros kategorijos elementas 1</a></li>
         <li><a href="#">Antros kategorijos elementas 2</a></li>
         <li><a href="#">Antros kategorijos elementas 3</a></li>
      </ul>
  </li>
  .........
</ul>

Išvaizdą jau gali aprašyt kaip nori - kaip submenu, kaip medį (kaip suprantu tavo atveju medžio ir reikia) ar pan.

Tada aprašai CSS, kad antras lygis by default būtų nematomas:

ul li ul {display: none;}

Tada su JavaScript'u (šiuo atveju naudosiu jQuery), padarai atidarymą/uždarymą ir būsenos saugojimą cookiuose:

_treeStatus = {};
function saveStatus() {
   $.cookie('tree-status', JSON.stringify(_treeStatus));
}

$("a.dropdown").on('click', function() {
  var _e = $(this).parent().children("ul");
  var _index = $(this).parent().index();
  _e.toggle();
  _treeStatus[_index] = _e.css('display') == 'none' ? 0 : 1;
  saveStatus();
});

 

Čia aišku vietoj _index būtų geriau, jeigu prie vidinių UL turėtum kažkokius unikalus id, pagal kuriuos saugotum jų būsenas, nes jeigu pasikeis eiliškumas, tai ir susipjaus šioj vietoj. Tada toliau reikia padaryti, kad kai užsikrauna puslapis, automatiškai atsidarytų tie, kurie buvo atidaryti:

function applyStatus(_status) {
   $("ul#tree > li").each(function(i, e) {
       var _index = $(e).index();
       if (_status[_index] && _status[_index] == true) {
          $(e).children("ul").show();
       }
   });
}

 

Tai tavo JS kodas atrodytų maždaug:

_treeStatus = {};
function saveStatus() {
   $.cookie('tree-status', JSON.stringify(_treeStatus));
}
function applyStatus(_status) {
   $("ul#tree > li").each(function(i, e) {
       var _index = $(e).index();
       if (_status[_index] && _status[_index] == true) {
          $(e).children("ul").show();
       }
   });
}
$(document).ready(function() {
$("a.dropdown").on('click', function() {
   var _e = $(this).parent().children("ul");
   var _index = $(this).parent().index();
   _e.toggle();
   _treeStatus[_index] = _e.css('display') == 'none' ? 0 : 1;
   saveStatus();
});

_treeStatus = $.parseJSON($.cookie('tree-status'));
applyStatus(_treeStatus);
});

 

Čia iš galvos rašau, sintaksinių klaidų netikrinau, gal kur ką praleidau. Bet pačia idėją turėtum pagaut :) $.cookie pluginas - https://github.com/carhartl/jquery-cookie .

 

EDIT: pats buvau pastebėjęs klaidų biškį, pataisiau kai kur.

Redagavo vitalikaz
Nuoroda į pranešimą
Dalintis kituose puslapiuose

stai ajaxo pvz http://nonamez.name/wdh/js/my.js tiest komentaro Unserialize

 

Čia iš galvos rašau, sintaksinių klaidų netikrinau, gal kur ką praleidau. Bet pačia idėją turėtum pagaut :) $.cookie pluginas - https://github.com/carhartl/jquery-cookie .

As kazkada senai esu ji su slaideriu naudojas, nesunkiai bus ant tabsu prikabinti http://apieviska.info/html-spoileris-priklausomai-nuo-cookies-jquery/

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Darot problemas lygioj vietoj :unsure:

 

<ul>
   <li><a href="index.php?cid=1"></a></li>
   <li><a href="index.php?cid=2"></a></li>
   <li><a href="index.php?cid=3"></a></li>
</ul>

<?php
   if (isset($_GET['cid'])) {
       $iClicked = (int) $_GET['cid'];

       if (isset($_SESSION['categories'][$iClicked])) {        
           unset($_SESSION['categories'][$iClicked]); // collapsed
       } else {
           $_SESSION['categories'][$iClicked] = $iClicked; // expanded
       }
   }
?>

'categories' masyve visada turėsi visų išskleistų kategorijų id.

 

Darant su JS tau tereiktų tik išskleidžiamas kategorijas su ajax užsikrauti. ^_^

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ą...