Obter valores de caixa de seleção de formulários e passá-las através de paginação?

votos
0

Eu preciso para obter valores de algumas caixas de seleção selecionadas e passar esses valores por meio de paginação em php / mysql. Se em outra página de usuário seleciona outras caixas de seleção, eu preciso adicionar os seus valores a variedade selecionada anteriormente.

Eu preciso disso para uma página de comparação de produtos. Em suma eu preciso:

  • obter os valores de caixa de seleção
  • armazená-los
  • incluir os valores de caixa de seleção de outras páginas em pagination
  • e quando o usuário seleciona comparar enviar essa matriz para comparar página.

Alguém sabe como fazer isso? exemplos relacionados seria apreciada?

Publicado 19/05/2009 em 17:24
fonte usuário
Em outras línguas...                            


4 respostas

votos
0

Você pode fazer isso usando javascript para armazenar a seleção caixa de seleção em um cookie. Aqui está um código de exemplo para você ir na direção certa.

var aa_checkbox;

function init_checkbox(){
  //setup blank cb cookie
  if(!Cookie.read('cb')){
    Cookie.write('cb', JSON.encode({}));
  }

  //setup "associative array" to match what is currently in the cookie
  aa_checkbox = JSON.decode(Cookie.read('cb'));


  //set up each checkbox with class="remember_cb"
  $$('input.remember_cb').each(function(el){

    //mark checked if it is in the cookie
    if(aa_checkbox[el.name]){
      el.checked = 'checked'
    }

    //setup onclick event to put checkbox status in the 
    el.addEvent('click', function(){
      if(el.checked){
        aa_checkbox[el.name] = 1;
      }else{
        delete(aa_checkbox[el.name]);
      }   
    })
  })

  //save aa_checkbox back into cookie upon leaving a page
  window.onbeforeunload = function(){Cookie.write('cb', JSON.encode(aa_checkbox));};

  setup_form();

  return true;
}

function setup_form(){
  //set up form so that it adds the inputs upon submit.
  $$('form.remember_cb_form').each(function(form){
    form.addEvent('submit', function(ev){
      //clean up previously inserted inputs
      var aa_hidden_insert = $$('input.hidden_insert');
      $each(aa_hidden_insert, function(el){ 
        el.parentNode.removeChild(el);
      })

      var el_form = this;

      //insert hidden elements representing the values stored in aa_checkbox
      $each(aa_checkbox, function(i_value, s_name){
        if(i_value){ 
          var el_input = document.createElement('input');
          el_input.type = 'hidden';
          el_input.value = i_value;
          el_input.name = s_name;
          el_input.setAttribute('class', 'hidden_insert');
          el_form.appendChild(el_input);
        }
      });
    });
  });
}

window.addEvent('domready', init_checkbox);

Há uma demonstração de trabalho aqui e uma explicação mais completa aqui

Respondeu 17/09/2009 em 04:36
fonte usuário

votos
0

Uma solução seria para carregar todas as páginas de uma só vez em suas próprias divs dentro de um formulário. Quando você clica em um novo link de página, ocultar todos divs exceto o que você precisa mostrar. Dessa forma, todas as caixas são submetidos na mesma forma, tornando-o mais fácil de manusear do lado do servidor. Isso, claro, depende de quão pesado cada página individual é e quantas páginas existem.

Outra solução seria a de manter uma variável de sessão, seguindo o que foi clicado. Cada vez que alguém clica para ir para outra página. POST para o servidor uma lista de caixas de seleção.

Respondeu 19/05/2009 em 17:31
fonte usuário

votos
0

Existem diferentes maneiras para manter o estado entre páginas, incluindo cookies, variáveis ​​de sessão, entradas escondidas, passando-os na querystring, que persistem ao banco de dados, etc. Neste caso, eu provavelmente usaria uma variável de sessão.

Para mais informações sobre sessão PHP ver Sessões PHP .

Respondeu 19/05/2009 em 17:28
fonte usuário

votos
-1

Seus links de paginação realmente pode executar uma forma POST, em seguida, ler a caixa de seleção [] em ur script php, e atualizar um elemento de formulário oculto ou adicionar o valor a uma sessão, qualquer coisa stateful. assim a sua âncora poderia ser algo como


<a href="#" onclick="document.myform.submit()"> próxima </a>

Respondeu 19/05/2009 em 17:31
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more